FAIL (the browser should render some flash content, not this).

intwayblog.netДвижок для блогаWordPress → Какая должна быть CMS или почему WordPress?

Какая должна быть CMS или почему WordPress?

Делаем свою CMS

Сколько на эту тему переломано копий... Попробую и я внести свой вклад в это темное дело.

По-моему мнению какой-то одной супер-пупер-системы, которая годится на все случаи не существует. Наверное есть системы, которые пытаются объединить в себе всё, но это лишь только попытка, поскольку такая универсальность обычно выходит боком.

Например, некоторые CMS (система управления содержимым - сайтом) позволяют встраивать «в себя» форум. Форум это довольно сложная штука, поэтому неизбежно возникают проблемы от такой интеграции, начиная от оптимизации базы данных, авторизации пользователей, и заканчивая «подгонкой» шаблона. Поэтому иногда проще поставить форум совершенно отдельно и адаптировать шаблон сайта на него. Ну да ладно. Главное, что должна делать CMS - это быть расширяемой. То есть CMS должна иметь такие функции, которые позволяют «на лету» подключать другие. И желательно, что бы само подключение было «одним кликом», без «хаков» и правки в файлах самой CMS.

Второе требование - это шаблоны. Так как CMS это лишь набор функций (некая ОС), то внешний вид уже определяется в каждом конкретном случае и зависит от используемого шаблона. CMS должна уметь работать с любым количеством шаблонов, а структура этих шаблонов, по возможности, не должна быть жесткой и ограниченной. В общем CMS должна обеспечить максимальную гибкость при создании шаблона.

Третье требование - это функциональность в построении шаблона. В подавляющем большинстве случаев разработчики CMS предусматривают специальные команды (псевдотеги, функции), которые дизайнер должен разместить в своем шаблоне. Получается, что шаблон ограничен ровно на столько, на сколько разработчики заранее предусмотрели команд CMS. Чтобы добавить свою функцию, придется добавлять ее вначале в CMS, а уже после подключать к своему шаблону. Это неудобно, поэтому идеальный вариант, это когда CMS совершенно не ограничивает дизайнера в функциональности шаблона. Самое разумное решение - это предоставить в его распоряжение всю мощь PHP.
Замечу, что «движки» различаются двумя способами обработки шаблонов. В первом случае, CMS парсит (обрабатывает) текст шаблона и встретив псевдо-тег, обрабатывает его определенным образом. Во-втором способе «движок» просто подключает шаблон как PHP-скрипт. В этом случае дизайнер должен использовать синтаксис PHP.

Вот собственно эти три требования, на которых может базироваться «идеальная» CMS: функциональная расширяемость, любая структура шаблона, функциональность равная PHP (или тому языку, на котором написана сама CMS).
Функциональная расширяемость

Рассмотрим ее на примере движка WordPress. Предположим вы написали свою функцию на PHP. Для того, чтобы подключить ее к «движку» нужно всего лишь поместить файл (файлы) в специальный каталог (plugins) и в админин-панели активировать его. С этого момента ваша функция будет доступна из/для любого шаблона.

Необходимо сказать, что разработчики WP пошли еще дальше и предложили механизм с помощью которого дизайнер имеет возможность управлять не только своими функциями, но и любыми другими. Предположим, вы хотите заменить стандартную действие на свое (например, при публикации нового сообщения). В этом случае вы можете указать удаляемую. Делается это очень просто, например: remove_filter('the_content', 'wptexturize') - в этом случае будет «удалена» функция «wptexturize», которая обрабатывает вывод блока «the_content». Вместо нее подключаете свою, например: add_filter('the_content', 'my_wptexturize').

Как видите, все просто и элегантно.


Смотрите также:

  • Работа с комментариями Вашего WordPress блога через клиент

    Программа для Windows от Dean Lee, известного нам из двух предыдущих постов, wp-comments-notifier помещается в системную область панели инструментов и сообщает Вам о новых комментариях, а так же дает возможность удалять, редактировать и отвечать на них

     



Добавьте комментарий:
Ваше имя:
E-mail: