
Вступление
В данной статье я попытаюсь рассказать что такое TYPO3, какие у этого CMS достоинства и недостатки, чем TYPO3 отличается от других CMS и какая у него сфера применения. Эта статья скорее всего для тех кто ещё никогда не работал с TYPO3. Не сомневаюсь что на Хабре водятся люди с бóльшим чем у меня опытом и надеюсь что они меня поправят если я где-то ошибусь.
Что такое TYPO3
TYPO3 позиционирует себя как система управления сайтами для энтерпрайза. Разработку этой системы начал Kasper Skårhøj ещё в 1998 году. CMS распространяется бесплатно под лицензией GNU GPL, написана на PHP с использованием СУБД MySQL (теоретически поддерживает и другие). TYPO3 стала маркой после коммерческого успеха третьей верси. Номер версии уже давно перескочил на четвёрку, а вот тройка в названии с тех пор так и осталась. Актуальной на данный момент версией является TYPO3 4.6.0.
Чем TYPO3 лучше Drupal, Joomla или %CMS%?
На самом деле сравнивать эти системы между собой дело неблагодарное так как они занимают разные ниши рынка. К примеру Друпал намного лучше для сайтов где от посетителей ожидается участие в создании контента. В Джумле редактор сможет быстрей разобраться как правильно оформить текст. А зачем тогда нужен TYPO3? Как и у любого CMS, у TYPO3 есть свои преимущества и недостатки. К преимуществам можно отнести гибкую настройку прав пользователей, возможность использования одной инсталляции для нескольких независимых сайтов и доменов, возможность использовать расширения из TER (TYPO3 extension repository) и версионирование. Основными недостатками являются сложность редактирования, сложная система опций и настроек, медленный рендеринг больших страниц. Одна из главных особенностей TYPO3 — типоскрипт — является палкой о двух концах. С одной стороны большинство настроек можно изменить не залезая в PHP код CMS или её расширений что облегчает обновление системы. С другой стороны типоскрипту нужно научиться (синтаксису и основным «опциям»), кроме того при настройке расширений начинается жуть с курением мануалов (если они вообще есть) так как названия опций к расширениям ограничены только воображением разработчика. Противопоказано брать TYPO3 если:
- у заказчика маленький бюджет
- заказчику хочется портал с контентом от посетителей
- нужен встроенный интернет магазин
- заказчик не хочет учить редакторов
- на сайте меньше 20 или больше 5000 страниц
- заказчику нужен встроенный CRM/заказчик хочет чтобы его CRM работал с сайтом
Естественно с помощью большого напильника и прямых рук можно преодолеть эти противопоказания, однако стоит задуматься не легче ли взять что нибудь другое. Идеальная ниша для использования TYPO3 это сайты малых и средних компаний.
Расширения, расширения...
Расширениями в TYPO3 называют плагины. Кучу этих расширений можно найти в TER и установить их прямо через TYPO3. Если нужного расширения нет, то можно написать оное самому. Для этого рекомендуется почитать документацию к TYPO3 API, иначе результат будет довольно плачевен. Сами расширения бывают на любой вкус и цвет. Некоторые мы увидим непосредственно на нашей страничке (например формуляры или флэш фильмы), другие расширят возможности системы (например использование базы данных для сохранения картинок) и не будут видны посетителю, большинство же расширений сделает и то и другое — посетителю показывается содержимое а вам дают инструменты для настройки этого содержимого (новости, галереи изображений и т.д.).
TypoScript
TypoScript не является языком программирования, используется только для конфигурации и сугубо декларативен. Одна из самых важных возможностей TypoScript это возможность писать условия и определять константы. На больших страницах в зависимости от того в какой ветке сайта находится некоторая страница меняется например количество колонок. Логично использовать для этого условие, а в константу можно записать внутренний ID страницы от которой начинается ветка. Так же TypoScript используется для конфигурации расширений (например можно настроить количество показанных новостей на одной странице). В итоге TypoScript будет загружен в один большой array в который движок TYPO3 будет заглядывать во время рендеринга.
С чего начинается сайт на TYPO3?

Как ни странно, начинается всё с обычной HTML странички которую будут использовать как шаблон. Обычно в страницу вставляют так называемые маркеры (пример виден на картинке). После того как мы приготовили HTML-шаблон, следует завести тестовую страничку в бэкэнде. Затем можно приступить к TypoScript шаблону. В самом простом рабочем варианте TypoScript просто будет заполнять шаблон тем что написано в бэкэнде. Альтернативой маркерам является расширение TemplaVoila которое позволяет привязать места для вывода к использованным в HTML шаблоне тегам по id. TemplaVoila так же даёт редактору более гибкую настройку по колонкам, зато первый вариант лучше версионируется с помощью CVS, так как вся информация о шаблоне пишется в файлы а не в базу данных.
Его величество бэкэнд

Для того чтобы описать весь функционал бэкэнда потребуется несколько статей, здесь я лишь кратко упомяну основы. Бэкэнд можно разделить на три части: меню, pagetree и work-area (с лева на право).
Меню
Слева расположено меню, с его помощью мы выбираем различные функции TYPO3 (K.O.). Часто чтобы изменить ту или иную настройку требуется выбрать функцию из меню и дополнительно выбрать страницу в pagetree.

Pagetree
Структура сайта в TYPO3 всё время видна в виде дерева. На картинке четыре сайта объединены в одной инсталляции TYPO3. У них разные дизайны, различный контент и они доступны под разными доменами. Это может быть удобно если заказчику нужна отдельная страница для нового проекта, а переучиваться на новый CMS не хочется, да и сервер можно оставить как есть.
Work-area
Справа мы видим work-area. Именно здесь происходит ввод всех данных, текстов, картинок и прочего. В отличии от меню и pagetree которые практически не меняются, work-area меняется в соответствии с сочетанием выбранных пункта меню и странички.
Не в последнюю очередь
Под конец этой статьи хочется сказать что TYPO3 пишет страницы в кэш (без кэша TYPO3 это извращение), имеет легко настраиваемый поисковый движок (для больших сайтов есть расширение для solr), умеет экспортировать в PDF, поддерживает RSS, может авторизировать пользователей через LDAP, умеет рисовать картинки с помощью imagemagick/gd и много других интересных вещей. TYPO3 давно стал международным проектом с большим сообществом.
Буду рад если у меня получилось заинтересовать кого нибудь в TYPO3.
В процессе написания статьи я обращался к следущим источникам:
typo3.org
typo3.ru
TYPO3 на википедии