Foren / National / Russian / Вопросы и пожелания к движку

Для юзеров Seditio и новичков

Perceive
#27389 7. Dezember 2010, 19:49
Приветствую! Есть мысли, которыми хочется поделиться.

Я долгое время присматривался к движку MODx + в этом году делал один из сайтов, используя куски кода Cotonti. И попробовал применить один из интересных принципов, о внедрении которого можно подумать.

Идея следующая: каждая страница на сайте по своей сути - код, описанный согласно спецификации HTML. У каждой страницы есть набор атрибутов: заголовок, метатеги, тело (текст). Некоторые страницы - это каталоги с дочерними страницами, некоторые - просто описания товаров и т.д. Но браузеру это не важно, для него это просто код. И эту идею можно перенести во фрэймворк. По этому пути начала идти Seditio, упростив всякие блоги до уровня обычных страниц. Но можно пойти дальше. Можно упростить списки (list.php) и в перспективе ввести новый обработчик плагинов.

Как это работает: в примитиве контент представлен в БД одной лишь таблицей страниц, например так:
Идентификатор, Заголовок, Дескрипшн, Ключевики, Текст ссылки на страницу, Заголовок h1, Текст, Это раздел?, Идентификатор родителя, Дата публикации, Шаблон, ...

Двумя полями: Это раздел? и Идентификатор родителя мы убираем необходимость в list.php и получаем простое логическое дерево сайта. Причем, можно даже не вводить признак "Это раздел?". Он используется в технических целях при построении ссылок.

Полем "шаблон" мы легко определяем совершенно любой вид страницы: будь до это список дочерних страниц или текст статьи.

Администрировать это дело ещё проще: плагин jquery с возможностью перетаскивания и контекстного меню и структурой сайта можно управлять на одной странице.

Несколько сложнее с плагинами и другими компонентами.
1) Хуки для плагинов никто не отменял. Они продолжают также работать. Но уже только в page.php
2) В MODx кроме плагинов существует отдельная сущность Сниппета (компонента). Они вызываются "из тела страницы". В содержимом страницы указывается, например [[Wayfinder]] и в этом месте происходит вызов компонента, который строит навигацию. В чём главное преимущества от задания в шаблоне просто {SOMETAG} - в том, что сниппету можно передать параметры [[Wayfinder ?parent=25]]. Если это можно как-то использовать в котонти...

Ещё один момент. Я уже писал за его внедрение. Напишу ещё раз: единая точка входа index.php. Я уже не знаю хостингов, которые запрещают htaccess. Этот момент позволил мне в своем сайте реализовать программное построение ЧПУ. Принцип прост: url/page/adress превращается в массив и дальше мы можем удобно работать с любым уровнем, например так:
switch($sys['urlarray'][1])
{
}

Вот как то так :)