TYPO3 Neos - первые впечатления от работы

10.03.2014 | Новости компании | автор: Дмитрий Васильев

6 марта 2014 года нашей студией запущен первый в России сайт rentspecstroy.ru на новой системе управления контентом TYPO3 Neos neos.typo3.org

TYPO3 Neos это система управления контентом (CMS) следующего поколения, с открытым исходным кодом, распространяемая по лицензии GNU/GPL. TYPO3 Neos создана на базе PHP фреймворка TYPO3 Flow flow.typo3.org. Отныне, сообщество TYPO3 будет предоставлять два разных продукта CMS: TYPO3 CMS и TYPO3 Neos.

Популярная во всем мире и получившая заслуженное признание TYPO3 CMS, будет продолжать развиваться, обновляться и улучшаться. TYPO3 CMS и TYPO3 Neos являются качественно разными продуктами, и предназначены для сайтов разного типа. Для некоторых проектов, TYPO3 CMS может быть лучшим выбором в то вреsмя как для других, Neos способен показать свою силу.

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

Я не буду описывать процесс установки, хочу лишь обратить внимание на три важные вещи. Не программисты могут эту часть пропустить.                 



1. Очень желательно, чтобы ваша БД был установлена в кодировке utf8_unicode_ci, Это нужно в случае, если вы будете устанавливать или создавать свои расширения, и обновлять БД посредством doctrine.

Дело в том, что в doctrine установлена кодировка utf8_unicode_ci. И если уже имеющиеся таблицы в вашей БД будут иметь кодировку utf8_general_ci, то обновление командой ./flow doctrine:update будет вызывать ошибку для таблиц с внешними ключами "mysql errno 1005".
Создаваемые таблицы, и имеющиеся таблицы, должны быть в одинаковой кодировке.

Если нет возможности установить для БД utf8_unicode_ci, то идем в Packages/Libraries/doctrine/dbal/lib/Doctrine/DBAL/Platforms/MySqlPlatform.php
И в строке 385 меняем utf8_unicode_ci на utf8_general_ci

if ( ! isset($options['collate'])) {
            $options['collate'] = 'utf8_general_ci';
        } 

2. Также проверьте, поддерживает ли ваш сервер установку PHP Variables _SERVER. Я столкнулся с тем, что мой сервер не имел такой поддержки, в следствие чего я не мог установить контекст для flow ни через .htaccess, ни через настройки virtual host в apache. Если такой поддержки нет, то вероятно установка TYPO3 Neos через инсталлятор закончится ошибкой,
из-за того, что будет добавляться лишний сегмент в ссылке mydomain.tld/index.php/setup.
Смотрите через phpinfo PHP Variables _SERVER["REDIRECT_FLOW_CONTEXT"]

3. Укажите в конфигурационном файле driverOptions: utf8

 TYPO3:
  Flow:
    core:
      phpBinaryPathAndFilename: /usr/bin/php
    persistence:
      backendOptions:
        driver: pdo_mysql
        dbname: your_db_name
        user: your_db_user
        password: db_pass
        host: 127.0.0.1
        driverOptions:
          1002: 'SET NAMES utf8'

Итак, сначала напишу, что мне не понравилось в Neos.

Для того, чтобы было понятно, я буду использовать терминологию TYPO3 CMS, не слишком углубляясь в детали.

1. Предположим вы создаете сайт командой ./flow site:kickstart VendorName.SiteName VendorName.SiteName. После этого будут созданы необходимые папки, файлы и минимальный код. Также будут созданы 2 страницы: главная и дочерняя. И в них будет иметься всего лишь одна область для контента: {content.main -> f:format.raw()}

Если же вы создадите еще одну область для контента и пропишете ее в шаблоне (к примеру {content.sidebar -> f:format.raw()} ), то при рендеринге уже созданных страниц, будет вылезать ошибка.

Что делать, если вам нужно на главной странице, больше одной области контента? Нужно заранее создать необходимое количество областей контента в NodeTypes.yaml, затем удалить дочернюю страницу, которая была создана через kickstart, и создать новую. И сделать главную страницу ссылкой на новую дочернюю, которая уже будет поддерживать нужное количество областей контента.

2. В TYPO3 Neos нет возможности изменить тип страницы или тип элемента контента из "админки". Для элементов контента это может быть не так и важно, а вот для того, чтобы сделать главную страницу ссылкой, нужно войти в phpmyadmin и в таблице typo3_typo3cr_domain_model_nodedata найти главную страницу, и заменить nodetype с TYPO3.Neos.NodeTypes:Page на TYPO3.Neos:Shortcut. В целом это не очень удобно как для разработчика, так в дальнейшем и для редактора сайта.

3. Предположим, вы создали страницу на которой есть элементы контента "Текст с изображением". Если вы удалите эти изображения через административный интерфейс, то элементы контента на которых были удаленные картинки будут также удалены. И в дальнейшем поведение поведение этой страницы будет очень странным. Я создавал на таких страницах новые элементы контента, они создавались без ошибок, но в дальнейшем также бесследно исчезали. Выход один - удалить и создать заново страницу.

4. При создании новых страниц, система пытается автоматически задать псевдоним ссылки, исходя из названия создаваемой страницы. Если вы создаете страницы на русском языке, то здесь возникает проблема, и появляются всяческие ошибки. Я сначала создавал страницы по английски, и затем их переименовывал.

5. По поводу текстового редактора. TYPO3 Neos использует редактор Aloha www.aloha-editor.org Меня порадовало то, что он умеет вырезать "мусор" (font-size, font-color) когда вставляешь текст из текстовых процессоров, типа ms word или openoffice. Это тоже делалось в TYPO3 CMS соответствующей настройкой. Но в TYPO3 CMS еще можно настроить стили для текстов и блоков. Как сделать это в Aloha, я не нашел. Вообще поведение этого редактора не всегда понятно, зачастую, сделать в нем какие-то элементарные правки, оказывается нелегким делом. Возможно это дело привычки.

Из того, что понравилось

1. Редактировать контент на сайте действительно удобно. Вы буквально будете редактировать то что вы видите. Самый настоящий "What You See Is What You Get" не на уровне текстового редактора, но на уровне всего сайта. Панели управления, слева - это дерево страниц и дерево элементов контента, справа - это свойства этих же элементов, при необходимости скрываются и не мешают наслаждаться работой с контентом.

2. Для медиа элементов можно создать необходимое количество тегов, и при загрузке категоризовать их. При создании галерей, изображений, и т.д., картинки очень удобно брать из загруженных медиа элементов.

3. Существует возможность включения авто-публикации. Т.е. вы что-то меняете или создаете на сайте, и это сразу становится опубликованным.

4. Для разработчика стало проще создавать собственные плагины. При внесении дополнительных свойств в вашу модель, не нужно "ковыряться" в TCA, как это делалось в TYPO3 CMS. Достаточно выполнить команду ./flow doctrine:update и БД будет обновлена.

5. Простота в создании собственных элементов контента. Простые элементы контента, такие как слайдер, небольшая галерея, можно создать даже без использования php. Они конфигурируются посредством языка Yaml

6. Система имеет жесткую структуру каталогов. Это значит, что вы должны дейстовать по правилам, и тот, кто возможно будет заниматься этим сайтом после вас, не "заблудится" в файлах и папках.

На данный момент, TYPO3 Neos, мне видится, хорошим выбором для не очень сложных сайтов, с очень удобным интерфейсом редактирования.

Однако не стоить забывать о том, что "фундаментом" для TYPO3 Neos, является очень мощный фреймворк - TYPO3 Flow. Который также постоянно развивается и впитывает в себя всё самое лучшее из современной методологии разработки веб-приложений. Поэтому, кончено же, сфера применения TYPO3 Neos не ограничится простыми сайтами.

Дмитрий Васильев dmitry(at)typo3.ru.net

comments powered by HyperComments