Продолжая мысль, начатую в анонсе к статье, добавим, что в значительной части случаев системы управления контентом и всевозможные оболочки с открытым исходным кодом, с одной стороны, выглядят достаточно привлекательно (бесплатность, расширяемость и гибкость), но, с другой стороны, не всегда могут предложить своим пользователям нормальную документацию, удобство использования и действительно продуманную структуру. Да, качественных решений в области CMS с открытым кодом предостаточно, но порой крайне интересный и в теории полезный эффективный инструмент остается таковым лишь на бумаге.
SilverStripe — это продукт, который с самых первых минут знакомства подкупает своим отношением к конечному пользователю. Чтобы понять, о чем именно идет речь, достаточно взглянуть на официальный веб-сайт проекта: авторы системы стараются сразу объяснить интересующимся, какие задачи их детище может решать, а какие — нет. Аналогичное наблюдение можно сделать, ознакомившись с документацией к продукту: во-первых, все подается в максимально прозрачной форме, а во-вторых, материалы неплохо (не идеально, но неплохо) структурированы.
Единственное замечание в плане доступной информации о SilverStripe — это ее не слишком большое количество (особенно на более продвинутом уровне, чем банальное редактирование страниц), но это, скорее всего, вопрос времени и желания разработчиков.
Общие сведения
Выбор системы управления контентом для того или иного веб-проекта — вопрос очень важный, ведь именно от этого выбора в дальнейшем будет зависеть большинство технических и технологических аспектов работы ресурса. К тому же поменять решение, на базе которого строится проект, если оно оказалось неверным, через несколько месяцев будет сложно, а времени и сил на это уйдет такое количество, что в некоторых ситуациях проще будет сделать все с нуля. Иными словами, ошибка при выборе CMS может стоить крайне дорого для конечного результата.
SilverStripe имеет хороший и понятный интерфейс
Разумеется, начинать изучение системы управления контентом следует с ее главных характеристик. В случае с SilverStripe они выглядят следующим образом:
- интуитивная и user friendly часть продукта, предназначенная для администрирования веб-сайта;
- структура решения, полностью соответствующая архитектуре Model-View-Controller;
- одинаково высокий уровень стабильности для ресурсов с одной страницей и с миллионом страниц;
- адекватная скорость работы на стороне администратора, обеспечиваемая использованием AJAX;
- соответствие большинству современных веб-стандартов;
- изначально заложенная модульность позволяет создавать необходимые расширения, если требуется, максимально быстро;
- рендеринг страниц в SilverStripe строится вокруг шаблонов, причем в плане их создания у дизайнера практически нет никаких ограничений (вещь, встречающаяся сегодня довольно редко, но все же имеющая место);
- кроссплатформенность;
- простота установки и администрирования.
Однако еще важнее для нас возможности, которые предлагает для нас тот или иной продукт. Основополагающим моментом здесь по праву считается работа с содержанием веб-сайта. В SilverStripe все крутится вокруг страниц, которые представляют собой в рамках описываемой системы единицу контента. Мы можем их создавать, редактировать, удалять, а также управлять их структурой, причем имеется функциональность для создания папок, и все это выполнено в довольно удобном и интуитивно понятном даже новичку интерфейсе.
К слову, как раз своими интерфейсом и подходом к взаимодействию с конечным пользователем продукта разработчики SilverStripe особенно гордятся и именно в этом контексте сравнивают свой продукт с рядом других бесплатных CMS (Mambo, Joomla, Typo3). Однако на данный момент можно насчитать значительное количество систем управления контентом с аналогичными характеристиками: к примеру, MODxCMS, где также используются AJAX и подход desktop-like.
Часть модулей для SilverStripe — коммерческие
Что касается структуры SilverStripe, то она выглядит так:
- Core CMS — система администрирования, WYSIWYG-редактор для работы с контентом, versioning- и workflow-функциональность, инструменты работы с иерархией страниц веб-сайта;
- Forum Module — механизмы работы с форумами в системе схожи с механизмами работы с обычными страницами, форумы могут быть как публичными, так и приватными, предусмотрена минимально необходимая функциональность для администрирования пользователей, поддержка аватаров;
- Blogging Module — c SilverStripe мы можем создавать неограниченное число блогов в рамках одного веб-сайта, предусмотрена поддержка RSS и подписок по электронной почте;
- Event Management Module — возможность создавать в рамках веб-сайта календари с событиями, отправлять пользователям напоминания и приглашения на то или иное событие, плюс процесс сбора регистраций полностью автоматизирован;
- E-commerce Module — создание каталогов продукции любых объемов, функциональность для добавления «корзины покупателя», поддержка различных видов оплаты, автоматический подсчет доставки.
Заканчивая эту часть статьи, остается добавить пару слов об еще одном любопытном факте: с одной стороны, SilverStripe является продуктом с открытым кодом, но, с другой стороны, последние два модуля из списка распространяются на коммерческой основе. В принципе понять разработчиков описываемой системы управления контентом можно, ведь и Event Management Module, и
Практика
В рамках же практической части нашего обзора мы решили сосредоточиться на вопросах, связанных с работой с шаблонами в SilverStripe. Причина проста: процесс управления контентом в этом продукте оптимизирован и не должен вызвать особых проблем практически ни у кого, а вот настройка внешнего вида в SilverStripe, во-первых, требует чуть больших знаний, а во-вторых, с технологической точки зрения выглядит достаточно любопытно.
Если говорить в общих чертах, то любой шаблон в SilverStripe состоит из обычного HTML-кода плюс набор специальных указателей, согласно которым движок выбирает, какой контент где необходимо показывать. Все шаблоны имеют имя TemplateName.ss и лежат в папке sitename/templates. Если открыть базовый шаблон SilverStripe под названием Page.ss, то там мы увидим три специальных указателя: <% base_tag %>, $Content и $SilverStripeNavigator.
Они значат следующее:
- <% base_tag %> — этот указатель просто меняется на base element веб-сайта;
- $Content — вместо этого указателя движок подставляет контент той страницы, которая открыта пользователем в настоящий момент;
- $SilverStripeNavigator — последний указатель из Page.ss сообщает движку системы, куда необходимо разместить небольшую панель администрирования, которая обеспечивает быстрый переход с сайта непосредственно в систему и обратно, этакий аналог окошка QuickEdit из MODxCMS, но только без использования AJAX.
Разумеется, с помощью этих трех указателей мы никогда не сможем создать по-настоящему динамичный и современный веб-сайт. К примеру, нам наверняка понадобятся указатели $Title (вставляет заголовок страницы) и $MetaTags (вставляет мета-теги веб-сайта). Но еще важнее — добавить меню, причем у одного отдельно взятого ресурса навигация может быть как простой (несколько ссылок), так и более комплексной, и в SilverStripe с этим вопросом довольно легко разобраться. Код для базового меню выглядит примерно следующим образом:
<ul id="Menu1">
<% control Menu(1) %>
<li><a href="#">$MenuTitle</a></li>
<% end_control %>
</ul>
Кроме того, мы можем сообщить движку системы, что во время рендеринга он должен подставлять в меню еще и ссылки, и названия страницы для атрибута title плюс подсвечивать ссылку, если открыта страница, на которую она ведет.
<li class="$LinkingMode">
<a href="$Link" title="Страница "$Title"">$MenuTitle</a>
</li>
Создавать шаблоны в SilverStripe легко
Понятное дело, что меню на нашем веб-сайте может иметь несколько уровней в зависимости от структуры контента. Удобнее всего добавлять такое меню в шаблон при помощи логических указателей.
<% if Menu(2) %>
<ul id="Menu2">
<% control Menu(2) %>
<li class="$LinkingMode">
<a href="$Link" title="Страница "$Title"">$MenuTitle</a>
</li>
<% end_control %>
</ul>
<% end_if %>
Еще один важный момент, связанный с настройкой внешнего вида веб-сайта в SilverStripe, — это типы страниц, ведь в рамках одного ресурса в большинстве случаев требуется иметь не один, а несколько шаблонов для рендеринга контента. В описываемой системе управления контентом для этих целей и существуют типы страниц: каждой странице мы можем присвоить определенный тип, а каждому типу — свой уникальный шаблон. Файлы с описанием типов имеют имя TypeName.php и хранятся в папке sitename/code.
К примеру, создадим описание главной страницы в файле под названием MainPage.php. Минимально необходимый для корректной работы код будет выглядеть примерно так.
<?php
/**
* Описание главной страницы
*/
class MainPage extends Page {
static $db = array(
);
static $has_one = array(
);
}
class MainPage_Controller extends Page_Controller {
}
?>
Естественно, что помимо привязки шаблона в описание типа страницы мы можем добавить какую-то логику или что-то еще. А в заключение материала отметим, что SilverStripe — это, конечно, не самая лучшая система управления контентом с открытым кодом, доступная на сегодняшний день, но ее неплохих возможностей в комплексе с продуманной внутренней механикой должно хватить для широкого спектра различных веб-проектов.
Ссылки по теме
Статья получена: hostinfo.ru