Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Общие вопросы (http://forum.typo3.ru/forumdisplay.php?f=12)
-   -   Наследование в шаблонах (http://forum.typo3.ru/showthread.php?t=10189)

Alex Podusov 22.06.2012 14:58

Наследование в шаблонах
 
Вложений: 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. (как в константах, так и в настройках)...

Андрей Аксенов 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), и указать в шаблоне вложенной страницы явно очистить этот шаблон...


Часовой пояс GMT +4, время: 16:00.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot