Friday, November 14, 2008

Генератор xml проектов для хрумера


Поделился http://senglab.info/blog/

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

Скрипту на вход подаются массивы ссылок с ключевиками в формате url||key, а на выходе получаем содержимое файла xml — проекта. Структура xml-файла задается шаблоном xrumer.tpl, который может быть откорректирован по необходимости.

Пример файла шаблона 334


Алгоритм генерации следующий:
Считывается шаблон проекта.
Вычисляются значения макросов для вставки в нужные места проекта.
Делается замена макросов их значениями.
Почти готовый проект выводится на форму или в файл.
Проект открывается хрумером, нажимается кнопка «автозаполнение полей» , «синонимизировать» (по желанию) и сохраняется.
Значения полей (макросов) генерируются следующим образом:Тема проекта ([subject]) формируется в виде вариаций анкоров- ключевиков, учавствующих в проекте.
$subject = get_ankor_var_str($indexs,$limit);
Домашняя страница ([home_page]) - в виде вариаций урлов
$home_page = get_url_var_str($indexs);
Подпись ([signature]) - в виде вариаций урлов с анкорами
$signature = get_url_ankor_vars(array_merge($indexs,$maps));
Объявление ([post_text]) формируется из текста, чередующего со ссылками, текстом является ключевик, т.е.:
key [url=$url]key[/url] key
Для вариации текста сообщения используется встроенный синонимайзер хрумера.

$post_text = get_xrumer_text($post_links,$limit);
Имя проекта ([project_name]) - можно генерить, можно задать вручную. У меня оно генерится в зависимости от типа и числа ссылок, учавствующих в проекте и подается на вход генератору проекта.
Остальные поля либо не заполняются либо заполняются самим хрумером кнопкой автозаполнения.

Исходники генератора 244


Скрипт в действии 475


Видео ролик 222, демонстрирующий интеграцию скрипта с доргеном.


Видео ролик 177, демонстрирующий работу отдельного скрипта.


























No comments: