PDA

Просмотр полной версии : Наследование в шаблонах


Alex Podusov
22.06.2012, 14:58
Наверное я опять где-то что-то недочитал... :)
Вот такая структура многосайтовой установки (на картинке). Общие константы и настройки, а также включения шаблонов расширений, присущие всем сайтам установки - вынес на страницу "Начальный шаблон".
Подстраницами этого Начального шаблона идут сайты, в шаблонах которых выставлен чекбокс "Корень сайта" и сняты отметки с "Очищать константы" и "Очищать настройки". По идее всё из основного "Начального" шаблона должно наследоваться шаблонами, расположенными уровнями ниже.
Однако.
Что-то наследуется, а что-то - нет.
Включения шаблонов расширений - наследуются. То есть 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 (http://www.dmitry-dulepov.com/2012/02/storing-typoscript-in-file-system.html) читал и полностью согласен, но логику данного поведения всё же хочется понять.

ЗЫ-ЗЫ: ещё раз проанализировав шаблоны, появилась мысль, что не наследуется всё, что начинается с plugin. (как в константах, так и в настройках)...

Андрей Аксенов
24.06.2012, 00:15
Не знаю зачем снимали галки очистки настроек и констант, но в описании многосайтовости значится, что иx нужно ставить... Может где-то в ядре прописано что-то. Вообще, для общиx настроек нужно создать отдельный шаблон и подключать его к каждому из сайтов (включения). Так гарантированно все будет работать. Ну а константы для отдельныx сайтов поставить не проблема...

Alex Podusov
24.06.2012, 13:38
Нужно в том случае, если не должны наследоваться никакие настройки и константы с шаблонов уровнями выше. А про "должны" насколько я помню сказано только про галку "корень сайта". Ведь один сайт может начаться где-нибудь внутри ветки страниц другого сайта, для это же и есть галки Корень сайта в шаблоне и Прервать дерево страниц в настройках страницы? А настройки и константы могут передаваться от шаблона к шаблонам подстраниц. Но, похоже, только кроме тех, что начинаются с plugin. Теперь вот хочу разобраться, почему ))

dmartynenko
24.06.2012, 16:33
Может вы уровнем ниже подключаете шаблон из экстеншена, а там
plugin.xx >
plugin.xx = USER
...

Получается все что выше сбрасывается и подключается некий дефолтный набор.

Андрей Аксенов
25.06.2012, 01:05
Понятно, что написано, "как должно работать", но по факту с многодоменными системами случаются чудеса. Это относится к ссылкам между доменами, настройке языков, хранилищ записей, ЧПУ...
По опыту, лучше сбрасывать все настройки от доменов выше. Если есть время, то можно и разобраться, почему это так, а если нет, то лучше нащупать то, что работает.
Сам делаю общие настройки для сайта, плюс настройки для расширений, где нужно, дописываю константы, подключаю нужные расширения к определенным сайтам через вложенные шаблоны, ну и специфические константы переопределяю (папки-хранилища, директории и т. п.). Это все...
Причем все настройки TS можно хранить или в файлах, или в таблицах, уж как кому удобно, ну и подключать в нужной точке...

Alex Podusov
25.06.2012, 13:53
Я кажется понял, почему. В шаблоне, что лежит у меня вне сайтов - были прописаны константы расширений и внесены настройки расширений, однако не были сделаны включения от этих расширений. Видимо именно поэтому всё это и терялось, не передаваясь в шаблоны уровнем ниже. Как я понимаю, терялось ещё на обработке самого этого верхнего шаблона.

Андрей Аксенов
25.06.2012, 14:46
Ну да, тогда все ясно... Вообще таким образом сделан Интродакшн пакет...

Alex Podusov
29.06.2012, 15:22
А вот в продолжение темы, ещё вопрос возник:
если мне не нужны константы и настройки из шаблона уровнем выше - то я просто отмечаю чекбоксы "очищать" и то и другое. А как можно удалить из списка статических шаблонов какой либо шаблон из включенных в шаблоне уровнем выше?
То есть, допустим у меня на странице были включены css styled content, static info tables, perfect lightbox
на вложенной странице у меня находятся новости, и я создаю дополнительный шаблон с подключением статических шаблонов новостей.
А ещё уровнем вложенности ниже находится страница с календарем новостей, но так как этот календарь конфликтует с перфектом (о чем правда нигде не сказано, однако выявлено опытным путем) - здесь надо убрать перфект из включений. Вот и как это можно сделать? ))

Андрей Аксенов
29.06.2012, 15:52
Посмотреть, что вообще определяет этот шаблон уровнем выше (это же обычные файлы для констант и настроек TS), и указать в шаблоне вложенной страницы явно очистить этот шаблон...