Добро пожаловать в дивный новый мир сайтов, полностью построенных в TYPO3 на базе Fluid.
Дорогой читатель,
Благодарим за интерес, проявленный к проекту TYPO3 на базе Fluid!
Мы надеемся, что вы найдете удобный для себя способ создания шаблонов в этом наборе расширений. Мы пытаемся предугадать все возможные потребности и предоставить способы их решения наиболее простым и кратковременным способом, чем это было прежде. Наши расширения сделают за вас всю скучную работу, позволяя полностью сосредоточиться на самих шаблонах, а не на способах их интеграции в TYPO3.
Нам не хотелось бы сравнивать все эти расширения с царем шаблонирования в TYPO3, TemplaVoila. Тем не менее, хотелось бы отметить некоторые отличия, подразумевая, что вам знакома работа с TemplaVoila. Вот наиболее важные отличия в работе с этим семейством расширений:
- Никакие шаблоны и формы не хранятся в базе данных.
- Разметка шаблона здесь не используется. При изменении шаблона, это сразу же учитывается - нет нужды в переразметке, сохранении кода заголовков и прочему.
- TypoScript используется исключительно для настроек, а не для создания меню и тому подобного, для всего этого имеются проекторы (ViewHelpers).
- Вся коллекция шаблонов обнаруживается по указанному пути в файловой системе, просто читаются все (указанные) файлы и рассматриваются как одна группа.
- Разметка внутреннего макета (backend layout grids), разметка вложенных элементов содержимого, поля дополнительных настроек и многое другое храниться непосредственно в отдельных файлах шаблона.
- Fluid используется везде: для обработки меток в создаваемых элементах содержимого, для формирования значка шаблона страницы и многого другого, включая использование собственноручно разработанных проекторов (ViewHelpers).
- Используется специальная стратегия имитации форм настроек - FlexForms, мы называем это формы Flux. Возможно создание форм внутри записей содержимого или страницы (и любых других типах записей), в которые можно запросто внести поля, используя один тег проектора (ViewHelper) для каждого из полей, что чрезвычайно просто в сравнении с традиционными FlexForms.
Fluid сам по себе универсальный язык шаблонирования, способный выводить множество форматов и использующий передовые вспомогательные теги, так называемые проекторы - ViewHelpers, для форматирования и различной обработки данных. Существуют возможности перебора массивов, создания условий, разбиения шаблонов на небольшие шаблонные части - Partial, использования специального форматирования и многое другое. Fluid даже поддерживает автозавершение в редакторах с поддержкой схем XSD и использованием областей именования (namespace) в шаблонах...
...и ключевая концепция всех расширений TYPO3 на базе Fluid крайне проста - один и тот же файл шаблона может быть и шаблоном одной страницы, либо определенного типа элемента содержимого, либо даже модуля внутреннего интерфейса. При настройке пути к папке с такими файлами шаблонов, расширение, отвечающее за обработку определенного типа шаблона (содержимого, страницы, внутреннего интерфейса и т. д.) анализирует файл, чтобы определить используемый значок, выводимые метки, вывод (если применимо) в макете (Grid) и дополнительные, выводимые в редакторе поля.
TYPO3 на базе Fluid рекомендует новый подход к созданию шаблонов для сайтов:
- Рекомендуется использовать расширения для хранения всех файлов: шаблонов, значков, изображений, стилей, сценариев и так далее. Подобный подход дает несколько удобных соглашений для большинства ссылок на ресурсы. Например, файлы LLL могут располагаться в стандартных местах, а функции для вызова переводов сильно сокращаются. Почти во всех случаях можно ссылаться на файлы, используя при необходимости пути EXT:myext...
- В шаблонах рекомендуется использовать проекторы (ViewHelpers) для формирования меню, вывода содержимого, включения стилей/сценариев и много другого - почти все, для чего использовался TypoScript, теперь можно использовать в шаблонах Fluid. Крайне рекомендуем к использованию в шаблонах одно полезное расширение под названием VHS (ключ
vhs
), оно содержит сотни проекторов (ViewHelpers) общего назначения. - Мы рекомендуем использовать известные из Extbase соглашения для размещения файлов настроек, языковых файлов, приватных (private)/общедоступных (public) ресурсов, таблиц стилей и всего того, что нужно для работы шаблона.
Основное отличие касается рекомендации использования расширения для хранения файлов. Мы называем такой тип расширений - "Расширение поставщик" ("Provider Extension"), так как они "поставляют шаблоны и настройки для этих шаблонов". В них по прежнему могут находиться обычные дополнения Extbase, статический TypoScript и другие подобные вещи, но при этом должны соблюдаться правила относительно использования зарезервированных названий контроллеров и, ввиду этого, местоположений шаблонов:
- Название контроллера
Page
и путь к шаблону зарезервирован для файлов шаблонов страниц, использующих EXT:fluidpages. - Название контроллера
Content
и путь к шаблону зарезервирован для файлов шаблонов элементов содержимого, использующих EXT:fluidcontent. - Название контроллера
Backend
и путь к шаблону зарезервирован для файлов шаблонов модулей внутреннего интерфейса, использующих EXT:fluidbackend.
Такой подход сильно отличается от использующегося в TemplaVoila, но лёгок для понимания (либо прост для обучения на примере; для освоения этого подхода таким способом лучше всего на примере общедоступных расширений проводников TYPO3 на базе Fluid). Как только вы привыкнете к такому отличному подходу, в фокусе которого находятся файлы, а не настройки через базу данных, то обнаружите, что работа проходит более последовательно; редактируйте все в своем любимом редакторе, вместо внутреннего интерфейса TYPO3 и пользуйтесь программами контроля версий для файлов шаблонов и ресурсов (не унывайте, последнему всегда можно научиться, как только почувствуете уверенность в использовании нового подхода).
Это сильно отличатся от редактирования файлов через внутренний интерфейс TYPO3. Но в то же время, это большой и значимый скачок в развитии.
Есть множество причин, по которым мы считаем такой новый подход лучшим, чем старый. Помимо прочего это:
- Для определения дополнительных полей в формах настроек проще использовать Fluid, чем традиционные FlexForm. Причина здесь не только в том, что они стали действительно динамическими (стали возможными условия, рекурсии и т. п.), но и более чем в 10 раз компактная форма записи, чем FlexForm XML, при этом разница становится более ощутимой с ростом сложности формы: поля Flux - это лишь один тег проектора (ViewHelper), а XML может состоят из более чем 30 узлов.
- Для дизайна сайта лучше подходят файлы, а не поля базы данных. Уменьшение числа ошибок (вспомните обновление кодировки до UTF8, ломающее разметку шаблона в TemplaVoila...) и возможность контроля версий, разрешение конфликтов при многопользовательской работе над одним и тем же файлом шаблона.
- Для хранения файлов лучше использовать расширение. Это улучшает переносимость, а контроль версий происходит попутно. Укажем лишь одно преимущество такого подхода: расширение можно загрузить со своего сайта, внести необходимые изменения, заново закачать с указанием перезаписи. Так значительно проще изменить дизайн, чем объединять базы данных с рабочего и тестового сайтов.
- Для формирования объекта меню лучше использовать проектор (ViewHelper) Fluid. Это не только упрощает создание различного рода меню в разных шаблонах (включая шаблоны из сторонних расширений!) без нужды включения массивного объекта TypoScript в шаблон.
- Для формирования динамического или сложного содержимого страницы или частей шаблона лучше использовать проекторы
(ViewHelpers), а не объекты TypoScript. Это делает шаблоны более прозрачными для понимания - не нужно постигать сложности
TypoScript для поиска условия и замены некоего содержимого в шаблоне. Отладка также упрощена: просто воспользуйтесь проектором
<f:debug>
в шаблоне, и сразу же будут видны все доступные переменные, и их влияние на формирование содержимого.
Но самое большое преимущество, как нам кажется, кроется в том, что возможно использовать Fluid для отдельного дизайна и любой части макета сайтов. И то, что не нужно задумываться над интеграцией - теперь все гораздо проще, чем в прошлом, можно сконцентрироваться над решением самой задачи создания превосходного дизайна, полезных и гибких элементах содержимого и других подобных вещах.
Помимо прочего, имеется множество полезных расширений, упрощающих работу с Fluid. Имеется коллекция проекторов (ViewHelper) наряду с функциональными расширениями, вроде EXT:view, позволяющих использовать переназначение путей к шаблону (вместо замены всего набора шаблона по указанному пути, переназначаются лишь файлы, существующие по переназначаемому пути, все остальное берется из оригинального местоположения).
Мы не можем рассказать обо всех улучшениях и удобствах в процессе создания шаблонов, лучше показать все это. Так что лучше самостоятельно попробовать или взглянуть, что такое TYPO3 на базе Fluid, перейдя на Live Bootstrap-based Introduction Package Demo - можно загрузить самостоятельно весь пакет, подготовить для него виртуальный хост на веб сервере и развернуть его там. Очень просто окунуться прямо в самую интересную часть - шаблоны. Все внесенные изменения сразу будут видны.
Надеюсь, Вам понравиться!