Онлайн заработок, создание и монетизация сайтов, веб-разработка, SEO и SMO продвижение, фриланс, партнерки, полезные сервисы вебмастерам, блоггинг.

Wordpress шаблоны

Наследование содержимого для подстраниц TYPO3 сайта (Content Slide)

Content SlideПри разработке сайтов возникает ситуация когда некоторые их элементы являются одинаковыми (не изменяемые) для всех страниц. Навскидку можно прикинуть, например, блок информации в футере или счетчик посещаемости. Либо часто в боковой панели сайта справа или слева от области контента располагаются подобные блоки с общими данными. Расскажу о том как просто и легко это все можно реализовать на TYPO3.

Изначально, для большинства своих первых сайтов я создавал 2 шаблона:

  • Шаблон главной страницы — где повторяемые блоки определяются и могут изменяться пользователями.
  • Шаблон подстраниц — для которого информация копируется из главного шаблона через Typoscript.

Конечно, в данном случае идет речь о шаблонах созданных с помощью TemplaVoila. Давайте рассмотрим алгоритм подробнее:

1. Создаем шаблон главной страницы, где нужные блоки имеют тип «Content Element» (Элементы содержимого страницы), пусть это будет некая область для счетчиков под названием field_counters.

2. Создаем шаблон подстраницы, где для того же поля field_counters выбираем тип «TypoScript Object Path» (Путь объекта TypoScript), куда добавляем путь что-то типа lib.counters.

3. Далее, собственно, для главной выбираем один шаблон для подстраниц другой.

шаблоны для страниц сайта

4. Создаем на главной странице блог счетчиков (html блок) либо текстовый элемент, куда добавляем нужную информацию. Запоминаем его ID.

5. В настройках Template Setup для сайта добавляем следующий код TypoScript:

lib.counters = RECORDS
lib.counters.source = 11
lib.counters.tables = tt_content

Здесь цифра 11 должна соответствовать ID созданного элемента на главной странице. Таким образом, для всех подстраниц сайта будет использоваться lib.counters, который копирует и отображает содержимое элемента с главной страницы. Пользователь может изменять его как угодно, добавляя нужные ему тексты или html код.

У данного метода есть один существенный недостаток — при удалении элемента контента с главной страницы начнутся проблемы. Как правило, пользователи, не читающие документацию, часто с этим сталкиваются. Конечно, вы всегда можете изменить ID элемента в настройках Template Setup, но для этого нужно понимать что и как менять. Для упрощение задачи задание ID можно «вынести» в константы. Кстати, можно задавать несколько ID через запятую чтобы копировать более одного блока, что достаточно удобно.

Модуль KB TV Content Slide

Чуть позже в свое работе я нашел более оригинальное и элегантное решение — использование экстеншена KB TV Content Slide.Суть его работы заключается в следующем — вы можете создавать поля, для которых контент копируется со страницы-родителя.

То есть, допустим, у вас есть поле field_sidebar, обработанное с помощью модуля. Тогда для него все тексты и элементы контента с главной страницы будут автоматические передавать на подстраницу. При этом есть одна очень хорошая особенность — если вы хотите заменить такой порядок вещей, тогда просто создаете нужный контент на подстранице. В общем, сначала производится проверка наличия контента на подстранице, и если его там не окажется, то система скопирует наполнение с родительской. Надеюсь описание более-менее понятно? — тогда перейдем к алгоритму работы.

1. Скачиваем и устанавливаем модуль KB TV Content Slide в TYPO3.

2. Создаем в TemplaVoila шаблон для главной страницы сайта.

3. Заходим в меню  «TemplaVoila», выбираем директорию, где находятся ваши шаблоны. Выбираем для редактирования «Структуру данных» (Data Structure, DS) главного шаблона.

4. Находим нужный нам блок, для которого хотим применить действие плагина, например пусть это будет некий field_left (левая колонка сайта).  В описании структуры вы увидите что-то вроде:

10 = RECORDS
10.source.current=1
10.tables = tt_content

5. Этот код нужно заменить на:

10 = RECORDS
10.source.postUserFunc = tx_kbtvcontslide_pi1->main
10.source.postUserFunc.field = field_left
10.source.postUserFunc.table = tt_content
10.tables = tt_content

Обратите внимание на третью строку — здесь нужно указать из какого блока автоматически будет копироваться контент. В нашем случае весь текст, заданный в field_left на главной странице сайта будет автоматически выводится на всех подстраницах.

6. Сохраняем Data Structure шаблона и проверяем его работу.

Этот метод, во-первых, легче, а во вторых не нужно бояться чтоб пользователь удалит созданный вами элемент с каким-то там ID. Кроме того, у вас будет не 2 шаблона, а 1 — только для главной страницы. Если хотите отобразить в этом месте другой текст — создаете на подстранице новый элемент контента и заполняете его, если хотите сделать колонку пустой — опять же создаете новый элемент, но оставляете его незаполненным.

16.08.10

Категории: TYPO3.

Теги: , ,

Добавить комментарий

Ваш e-mail не публикуется. Обязательные поля помечены *
Если вы комментируете впервые, то текст будет отправлен на модерацию.