Наследование в шаблонах
Вложений: 1
Наверное я опять где-то что-то недочитал... :)
Вот такая структура многосайтовой установки (на картинке). Общие константы и настройки, а также включения шаблонов расширений, присущие всем сайтам установки - вынес на страницу "Начальный шаблон". Подстраницами этого Начального шаблона идут сайты, в шаблонах которых выставлен чекбокс "Корень сайта" и сняты отметки с "Очищать константы" и "Очищать настройки". По идее всё из основного "Начального" шаблона должно наследоваться шаблонами, расположенными уровнями ниже. Однако. Что-то наследуется, а что-то - нет. Включения шаблонов расширений - наследуются. То есть static info tables и CSS styled - включены в Начальный шаблон и нет надобности включать их в подшаблоны. Такое впечатление, что константы наследуются, только определенные самостоятельно. Константы, переопределенные через редактор констант - не наследуются. Ну хотябы определенные для freecap параметры отображения картинки в Начальном шаблоне - не применялись на сайте, пока я их явно не повторил в TS константах соответствующего шаблона. Настройки наследуются, только если они относятся к page., config. или lib. Настройки, относящиеся к плагинам - не наследуются. У меня например не удалось заставить наследовать записи в поле setup TS шаблона, относящиеся к плагинам sr fe user register и sk pagecomments. Поэтому возникло желание разобраться, как же всё таки происходит наследование в дереве TS шаблонов? ЗЫ: Storing TypoScript in the file system читал и полностью согласен, но логику данного поведения всё же хочется понять. ЗЫ-ЗЫ: ещё раз проанализировав шаблоны, появилась мысль, что не наследуется всё, что начинается с plugin. (как в константах, так и в настройках)... |
Не знаю зачем снимали галки очистки настроек и констант, но в описании многосайтовости значится, что иx нужно ставить... Может где-то в ядре прописано что-то. Вообще, для общиx настроек нужно создать отдельный шаблон и подключать его к каждому из сайтов (включения). Так гарантированно все будет работать. Ну а константы для отдельныx сайтов поставить не проблема...
|
Нужно в том случае, если не должны наследоваться никакие настройки и константы с шаблонов уровнями выше. А про "должны" насколько я помню сказано только про галку "корень сайта". Ведь один сайт может начаться где-нибудь внутри ветки страниц другого сайта, для это же и есть галки Корень сайта в шаблоне и Прервать дерево страниц в настройках страницы? А настройки и константы могут передаваться от шаблона к шаблонам подстраниц. Но, похоже, только кроме тех, что начинаются с plugin. Теперь вот хочу разобраться, почему ))
|
Может вы уровнем ниже подключаете шаблон из экстеншена, а там
plugin.xx > plugin.xx = USER ... Получается все что выше сбрасывается и подключается некий дефолтный набор. |
Понятно, что написано, "как должно работать", но по факту с многодоменными системами случаются чудеса. Это относится к ссылкам между доменами, настройке языков, хранилищ записей, ЧПУ...
По опыту, лучше сбрасывать все настройки от доменов выше. Если есть время, то можно и разобраться, почему это так, а если нет, то лучше нащупать то, что работает. Сам делаю общие настройки для сайта, плюс настройки для расширений, где нужно, дописываю константы, подключаю нужные расширения к определенным сайтам через вложенные шаблоны, ну и специфические константы переопределяю (папки-хранилища, директории и т. п.). Это все... Причем все настройки TS можно хранить или в файлах, или в таблицах, уж как кому удобно, ну и подключать в нужной точке... |
Я кажется понял, почему. В шаблоне, что лежит у меня вне сайтов - были прописаны константы расширений и внесены настройки расширений, однако не были сделаны включения от этих расширений. Видимо именно поэтому всё это и терялось, не передаваясь в шаблоны уровнем ниже. Как я понимаю, терялось ещё на обработке самого этого верхнего шаблона.
|
Ну да, тогда все ясно... Вообще таким образом сделан Интродакшн пакет...
|
А вот в продолжение темы, ещё вопрос возник:
если мне не нужны константы и настройки из шаблона уровнем выше - то я просто отмечаю чекбоксы "очищать" и то и другое. А как можно удалить из списка статических шаблонов какой либо шаблон из включенных в шаблоне уровнем выше? То есть, допустим у меня на странице были включены css styled content, static info tables, perfect lightbox на вложенной странице у меня находятся новости, и я создаю дополнительный шаблон с подключением статических шаблонов новостей. А ещё уровнем вложенности ниже находится страница с календарем новостей, но так как этот календарь конфликтует с перфектом (о чем правда нигде не сказано, однако выявлено опытным путем) - здесь надо убрать перфект из включений. Вот и как это можно сделать? )) |
Посмотреть, что вообще определяет этот шаблон уровнем выше (это же обычные файлы для констант и настроек TS), и указать в шаблоне вложенной страницы явно очистить этот шаблон...
|
Часовой пояс GMT +4, время: 16:00. |
Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot