суббота, 29 января 2011 г.

CMS E5 - автоматическая проверка уникальности



Новая система управления http://rucms.org/ проходит стадию бета-тестирования. И недавно система обзавелась новой функцией проверки на уникальность (по Яндексу).
Компонент проверки на уникальность достаточно легко подключить к любому типу данных (будь то страницы сайта, новости или статьи). Для этого добавляем переменную "Уникальность" в нужной таблице данных и в её модуле создаём часть-обработчик "Проверка на уникальность" которой настраиваем автозапуск на 1 раз через каждые 5 минут.

Далее подключаем компонент проверки уникальности и устанавливаем его параметры - переменную для проверки (например "текст страницы") и макс. кол-во проверяемых предложений (рекомендуется 15). Далее просто ждём пару часов и вуа-ля! Рядом с каждой странице появился столбец, содержащий проценты уникальности (с подсветкой: если красный - уникальность низкая, серый - средняя, зелёный - нормальная).

Кстати эта функция обходит защиту от ботов яндекса известным методом, через перехват кукиса fu1d. Функция требует поддержки curl либо соккетов для пхп (что в принципе практически везде есть).

Теперь пару слов о самой системе.

Наверняка каждый начинающий веб-разработчик всегда мечтал иметь под рукой такую гибкую CMS, которую можно было бы подстроить под любую задачу. И только совсем не давно начали появляться так называемые CMF (Content Managment Framework), которые позволяют визуальными средствами создавать любые структуры данных и их вывод (хоть обычный сайт, хоть интернет магазин, хоть сложную систему управления производством). К классу таких систем относится Е5.

Если Вы возьмёте "голую" систему, то не найдёте в ней ничего, кроме инструментария разработки модулей (конечно, рекомендуется устанавливать систему с уже готовым пакетом модулей, либо загрузить их с сайтов обновлений). Затем, разработчик может за несколько минут создать модуль "Содержание" или "Структура сайта", который будет содержать несколько таблиц, таких как "Страницы", "Шаблоны", "Ключевые слова". Затем указываются параметры каждой из таблиц, например таблица "Страницы" обладает полями "Заголовок", "Текст", "Ключевые слова" (связь с таблицей ключевых слов) и URL. При этом эта таблица пускай будет у нас мульти уровневая (будет допускаться неограниченное число вложений страницы в страницу), а поле "Текст" снабжается элементом формы "Визуальный редактор CKEditor" (с встроенным редактором ELFinder, который кстати открывается в том же окне, в котором показывается CKEditor, что уже достижение, т.к. аналогичных решений в интернете мы не нашли), и поле "URL" задаём уникальным и автоматически генерируемым от "Заголовка" функцией latinica (всё это задаётся несколькими щелчками мыши).
 
Важной частью системы является использование экземпляров модуля. Т.е. вы можете создать модуль Новости, а затем создать 10 его экземпляров, каждый из которых будет содержать разные данные (при этом можно указать, чтобы например для всех них таблица подписчиков на email-рассылку была общая, а таблица изображений была общая для 9 экземпляров из 10).
Для экземпляров можно определять свои переменные (например "Шаблон")
 
После определения таблиц данных и экземпляров, разработчик создаёт т.н. модульную часть под названием "Вывод", которая пишется на специальном языке "Е5.Template"
(хотя допускается использование PHP или E5.Parser - это аналог Yahoo Tubes, только с возможностью дробления задачи на несколько этапов, для обхода 20 секундного времени выполнения скрипта на большинстве веб серверах хостеров). "Вывод" привязывается к полю URL таблицы "Страницы". Если откинуть поле "Шаблоны", то код будет выглядеть так <html><head><title>[cow.title]</title></head><body>[cow.body]</body></html> , где cow это элемент, автоматически определённый через URL (с учётом вложенности), а title и body это спец.названия полей "Заголовок" и "Текст" соответственно. Перед официальным выходом системы планируется написать простенький редактор шаблонов (скорее всего как дополнение к CKEditor-у, т.к. у разработчиков уже имеется опыт создания компонентов для этого редактора).
 
Для тех, кто ни разу не сталкивался с разработкой веб-приложений всё, что написано выше покажется дикой сложностью, но кто сталкивался оценит быстроту решения, ведь по сути мы описали процесс создания базового модуля любой CMS, который на Е5 пишется всего несколько минут. Таким же образом можно быстро создать модули Новостей, Отзывов, Интернет-магазина. Затем можно связать таблицы друг с другом (даже из разных модулей), таким образом за несколько секунд мы можем подключить "Комментарии" например к "Новостям" или к продуктам в интернет магазине. Таким же образом можно подключить фотогалерею (кстати сейчас мы тестируем загрузчик фотографий, который сжимает фото на компьютере клиента перед отправкой).
 
На память вспомнилась одна интересная плюшка системы. Например у нас есть поле для фотографии в таблице новостей. Понятно, что она всегда будет показываться как <img src и т.д. плюс я бы ещё хотел, чтобы она красиво увеличивалась (возьмём mootools.milkbox), для этого нам стоит всего лишь скачать компонент milkbox с сайта обновлений и установить его в поле "фотография" как отображение по умолчанию. И о чудо - теперь фотография будет выводиться как milkbox.
 
Компоненты системы делаться на четыре типа - функции, отображения, компоненты и формы. Вы можете самостоятельно дописывать их (на языке E5.Template, E5.Parser или же на PHP) и делиться ими с нами. На данный момент стоит отметить компоненты:


- деления любого содержания на страницы,
- формы добавления чего угодно, куда угодно (с небольшой капчей),
- преобразования размера изображения (5 различных методов),
- погода в указанном городе (просто проверяли работу Е5.Parser-а :),
- визуальный редактор,
- автоматическая генерация URL (в т.ч. преобразование в латиницу),
- проверка контента на уникальность,
- генерация RSS,
- генерация SiteMap.
 
Части модулей бывают обычными, виджетами (блоки) и обработчиками (для ручного запуска или запуска по таймеру).
 
Теперь о поддержке мультидоменности. Для этого система содержит раздел зоны, в который Вы указываете домен (и если нужно директорию) и базовый модуль, которому переходит управление, его часть (можно определять автоматически) и экземпляр. Затем каждой зоне можно указать алиясы (например поддомен www и т.д.). Зона может не иметь домена (например /admin) и тогда она будет открываться с любого домена, присоединённого к системе. После создания зоны к ней прикрепляются все экземпляры модулей, относящиеся к ней (Новости, Отзывы и т.д.) В нашем случае управление будет передаваться модулю "Содержание" и если мы добавим в таблицу "Страницы" переменную "Модуль" с ссылкой на модули, то добавляя страницу "Новости" сможем указать модуль "Новости - Экземпляр 1" (как пример). И после перехода на страницу новости пользователю будет открываться соответствующий модуль, который перехватывает для обработки оставшуюся часть URL, которую не обработал модуль "Содержание" (если никто не понял этого предложения - ничего страшного, позднее напишем подробнее).
 
Ещё хочется добавить, что система устойчива к средним нагрузкам (сейчас гоняем на ней базу 50мб [15 сайтов] на обычном хостере), поддерживает целый ряд кеширований (sql кеш, кеш функций, кеш шаблонов). Стоит заметить, что, например, компонент "Погода" кешируется только на 2 часа, чтобы информация всегда была актуальной, и кеш для каждого отдельно заданного города существует отдельно (для погоды в Новосибирске - один, для погоды в Москве - другой). Но в целом скоростью системы разработчики недовольны. Так например загрузка типовой Новости с комментариями и фотогалереей занимает от 0.2 до 0.4 секунды, хотя аналогичные решения на любых других движках (даже на предшественнице системы - Е4) занимают всего 0.03 секунды. Мы пытаемся оптимизировать систему ещё сильнее. Надеюсь у нас это получится.
Теперь поговорим о названии. Е5 это третья система класса Е (не путать с Е2, к которой мы не имеем никакого отношения). Первая система Е3 появилась на свет в далёком 2005ом году и существовала она исключительно под нужды самих разработчиков (нужно было быстро делать сайты с множеством уникальных модулей). В итоге разработчикам пришла мысль (ещё в те времена) создать такую систему, которая смогла бы легко конструировать модули (а не так как сейчас это делает друпал или юми ;) Идея была отвергнута и через четыре года разработчики сделали попытку создать такой конструктор. Появилась громадная система Е4, которая была настолько громоздка, что проект пришлось заморозить и через полгода начать всё с нуля. Поняв как делать не надо и имея за плечами опыт разработки систем шаблонизаторов, разработчики начиная с сентября 2010 года приступили за систему, которая получила кодовое название Hope.CMS (не "Нора", а "Надежда" ;) ), а ещё позже ей вернули название E5, как бы в продолжение рода никому не известных CMS-ок.


Планируется распространять систему бесплатно. При этом для установки системы достаточно зайти на сайт разработчиков, указать ftp и mysql реквизиты и система автоматически закачается, при этом сайт разработчиков автоматически станет сервером обновлений для системы (можно будет скачивать оттуда новые модули, компоненты и пакеты обновлений системных файлов). Кроме такого способа установки, планируется выложить исходные файлы системы (в этом случае установка сводится к копированию файлов по фтп, и запуска сайта из браузера, далее начнётся процесс установки).
Мы надеемся что эта система станет хорошим инструментом в руках разработчиков веб-проектов.
Спасибо за внимание!

3 комментария: