SEO генератор тегов или SEO инструменты: Управление метатегами PRO 2.0

Предыстория:

Когда-то давно мы в компании написали такой вот модуль SEO инструменты: Управление метатегами PRO. Модуль был написан в пору, когда не было SEO от Битрикс. В ходе использования модуля и с развитием платформы в нём не хватало ряда вещей:
  1. Собственной архитектуры (реализация на инфоблоках - это хорошо для быстрого старта. Но как оказалось переделать поле Строка в полеТекст возможно только через удаление столбца, а это значит писать отдельный код и переписывать методы, которые возвращают значение чтобы не убить данные пользователей). Да и вообще, я не сторонник инструментов универсализации когда они совсем не нужны, к тому же - обязательно наступит день когда придуманная "фишка" будет заключаться в умении сформировать правильный запрос (а это уже пол дела) и тут инфоблоки будут только мешать;
  2. Пользовательского интерфейса. Не хватало дружелюбия к пользователю. В наше время покупают "за обёртку" - поэтому нужно чтобы пользователю нравилось, чтобы он думал - это "из коробки", иначе его будет это отторгать. В старом модуле мы использовали подход дёшево и сердито (это не плохо и не хорошо - это взвешенное бизнес решение). Модуль больше предназначался для разработчиков нежели для пользователей сайта. Да и продавали мы "сервис", а не модуль - поэтому было не до "сюсюкания" с интерфейсом. К тому же, как показывает практика пользователь не хочет делать ничего. Его желание: Оплатил - Установил - Сразу всё пусть работает. Это идеальный вариант. В глубине творческой души программиста накатить инструменты для более простого управления со стороны пользователя было всегда;
  3. Были ограничения, которые порой портили всю картину. Казалось бы, простые вещи (то есть элементарный логические выводы) нельзя было реализовать. Пример: Правила срабатывали только тогда, когда ключи установлены на странице. А ведь хочется и без ключей и иногда, чтобы не все ключи были заданы (Подробнее об этом ниже);
  4. Хорошей работы с кэшем. Из-за недостатка знания в программировании (это не стыдно признать и не стыдно говорить другим - наша профессия это всегда изучение, изучение, изучение) работа с кэшем была построена несколько неверно на мой взгляд и эту неприятную особенность нужно было устранить, к тому же мета теги - это каждая страница, а то, что вызывается везде, должно быть минимумом затрат;
  5. Ещё гибче условия срабатывания. Ключи не были подвержены условиям установки (хотя по логике вещей должны). А в правилах не хватало ещё более гибких условий (нужно больше "маны"). Хочется всё и сразу;
  6. Срабатывание логики для постранички. Разные мета теги для постранички - это стандарт поисковиков (страничка должна быть уникальна);
  7. Интеграция с платформой (Приоритеты). Дико бесило, что в ряде случаев необходим был функционал системы по работе с мета данными, а в ряде случаев - модуля. Не были учтены особенности платформы, такие как - SetTitle и SetPageProperty('title'). А у каждого сайта были свои тараканы в голове особенности работы с заголовком h1 и тегом title. Нужно было учитывать битрикс. С выходом SEO для инфоблоков (хоть я в корне не согласен с идеей SEO от битрикс) это стало головной болью. Справедливости ради, скажу - люди (купившие модуль) НИ РАЗУ не использовали вкладку SEO для инфоблоков. В оправдание я слышал, что это слишком сложно;
  8. Впихивать переменные в качестве значений ключа прямо из формы (то есть в качестве значения указывать переменные (глобальные) или вызовы статического метода);
  9. Перенести всю работу с ключами для разработчика в отдельное место (чтобы не прыгать по всему проекту и не смотреть, где же был задан ключ);
  10. Получать сгенерированные значения тэгов в качестве строки, чтобы формировать на странице текст (например продающие тексты);
  11. Устанавливать ключи для раздела/страницы находясь непосредственно на разделе/странице;
  12. Возможность управлять ключами и правилами из публичной части сайта. Лазить в админку, чтобы изменить галочку тоже раздражало;
  13. Демо-режим. Нужно дать потенциальному покупателю возможность пощупать решение;
  14. Наличие прав доступа для работы с модулем;
  15. Событий для модуля. Лучшая кастомизация - дать возможность управлять кодом через события;
Как итог писать обновления для модуля затратнее, чем выпустить новый. Что и было сделано.

Концепция/идея
  1. Работа c SEO никогда не должна быть зависима от какой либо сущности на сайте. Это моё ИМХО. Пилить вкладки для каждой сущности (а судя по инфоблокам это будет каждый раз новая таблица) считаю ненормальным. SEO должно быть самодостаточным и ни от чего не зависеть;
  2. Есть 3 сущности: Ключи, Правила, Теги;
    Ключ - это сущность, которая представляет из себя #Код# = Значение (может устанавливаться в рамках страницы, в базе данных и из файла):
    #COMPANY_NAME# = Рога и копыта
    То есть - это некоторая переменная, которая принимает значение.
    Таким образом мы имеем набор ключей, которые могут быть установлены на страницах. Это могут быть ключи для:
    - детальных страниц;
    - страниц разделов
    - определённых страниц (конкретный раздел);
    - определённого сайта / шаблона сайта;
    - страниц, на которых выполняется определённое условие PHP;
    - страниц, на которых установлено конкретное значение переменной запроса ($_REQUEST) или определена переменная, например просто print;
    Шаблон тэга - это строка из набора символов, среди которых может быть использован ключ:
    Лучшие футболки в магазине #COMPANY_NAME#
    Правило - это сущность, которая включает в себя n тэгов (title,keywords,description,author, и любые другие), которые будут установлены на странице при выполнении условий для этой сущности.
    Таким образом мы имеем набор правил, которые могут быть установлены на страницах. Это могут быть правила для:
    - детальных страниц;
    - страниц разделов
    - определённых страниц (конкретный раздел);
    - определённого сайта / шаблона сайта;
    - страниц, на которых выполняется определённое условие PHP;
    - страниц, на которых установлено конкретное значение переменной запроса ($_REQUEST) или определена переменная, например просто print;
    - определённого набора установленных ключей на странице;
  3. Модуль всегда можно выключить в настройках модуля (мне всегда не нравилось - чтобы подтвердить, что что то не работает из-за конкретного модуля его нужно обязательно удалять);
  4. Модуль дополняет работу с SEO от Битрикс и ни в коем случае не конкурирует с ним. Почему? Потому что это не нужно. Если у вас простенький сайт и особо за SEO вы не переживаете - настройте SEO в инфоблоках. Но если у вас портал, на котором есть многосайтовость, региональность и прочие штуки, которые вы бы хотели добавить в мета информацию о сайте или огромный каталог товаров, в котором нужен специфичный подход к формированию тэгов - этот модуль поможет. Хотя при желании модуль спокойно заменяет и SEO из коробки. Я бы например от инфоблоков взял работу с картинками, а от модуля - с тэгами;
  5. Документация. Подробная документация с примерами (частыми решениями). За всю историю работы со старым модулем обычно у людей возникали одни и те же вопросы. Я решил вынести примеры работ с модулем в отдельную главу документации
Для работы с инфоблоками из старого модуля благополучно перекочевал компонент "Автоматическая установка ключей для элемента/раздела(ов) ИБ" с некоторыми изменениями. Это облегчает работу с инфоблоками на уровне пользователя.

Примеры (взято из описания старого модуля):
Пример формирования правила одного из тэгов для динамическиформируемой страницы каталога:
Купить #NAME# в эксклюзивном магазине #SALE_NAME# (таргетинг по маске: /catalog/*).
Пример формирования правила одного из тэгов для динамическиформируемой страницы каталога, а также с учетом региона:
Купить #NAME# в эксклюзивном магазине #SALE_NAME# #TOWN# (таргетинг по маске: /catalog/*).
Пример использования модуля для управления тегами статическойстраницы в зависимости от региона:
Доставка в #TOWN# (таргетинг: /delivery/index.php).
Особенности работы с модулем подробно описаны в документации;
  1. Настройка работы с комплексным компонентом
  2. Настройка работы с простыми компонентами
  3. Работа с постраничной навигацией
  4. Работа с заголовками (title)
  5. Работа с приоритетами
  6. Установка ключей из файла (для разработчиков)
Модуль SEO генератор тэгов и документация для него.


Планы на будущее:
  1. Поддержка PHP функций, а также пользовательских функций для работы со значениями Ключей при генерации тегов, например toLower();
  2. Вести учёт и некоторую статистику установленных на странице тэгах;
  3. Мастер демо-данных (идея пока очень сырая, но пользователь же ленив и надо чтобы он одним пальцем ковыряя в носу составил нормальный продающий текст)
  4. Подсказки для выбора ключей в формах, чтобы человек не думал как пишется код ключа - а выбрал его из списка.
  5. Записать пару скринкастов)))
На создание вдохновили люди: Алексей Коваленко (человек-пароход), Сухарев Антон (человек-перфекционист)

ЗЫ: Продающих речей я писать никогда не умел и не умею. Хочу лишь сказать, что желание сделать модуль больше для людей, чем для разработчиков реализовалось. Это никак не отменяет помощь в настройке и интеграции модуля с вашим сайтом.

ЗЫ2: Картинки (интерфейсной части) по ссылке к модулю.