создать универсальный модуль seo для bitrix
Инструменты seo оптимизатора
Редко попадаются владельцы бизнеса, которым нужен функционал и не нужна поисковая оптимизация. Если вы здесь, то, наверное, являетесь одним из них.
Попробуем сформулировать ваши хотелки и вопросы..
1. Управление мета информацией
- Хочу управлять мета тегами страницы h1, title, keywords, description, robots.
- Хорошо
- Только каждый из этих тегов хранит не статический текст, а переменный, который зависит от параметров текущей страницы
- Будет
- А что можно положить в переменную? Я слышал в битрикс есть инфоблоки и закладка SEO и нужно привязывать к ним, а потом доставать оттуда.
- В Битрикс да, у других разработчиков тоже. У нас нет — можете назвать переменную любым образом, а потом сказать разработчику — передай информацию из X компонента, исполняемого на странице в переменную Y. А я её использую для заголовка.
Путь X = “moi_component”, а Y = “VASYA”. Значение переменной пусть зависит от от имени пользователя, например, на сайт у нас пришёл Вася.
Указываете поле h1 = “#moi_component:VASYA# в нашем магазине”
на странице получаете <h1>Вася в нашем магазине</h1>
- А ещё мне нужен seo текст для роботов.
- Есть
- Ещё бывают канонические пути, слышали? Чтобы дублей поменьше было?
- Да. Можете указать более короткий путь для параметра CANONICAL. Он появится на странице. Например для страницы #ELEMENT_CODE#/#SECTION_CODE#/#SMART_FILTER_PATH#/nav/page-#PAGE_N#/
укажите #ELEMENT_CODE#/#SECTION_CODE#/.
2. От общего к частному
- Хочу, чтобы все страницы в папке /catalog/ имели одинковые настройки seo
- Ок
- Ой, на самом деле мне нужны разные настройки для разделов и товаров
- Хорошо, идентифицируем их как /catalog/#SECTION_CODE#/ и /catalog/#SECTION_CODE#/#ELEMENT_CODE# и назовём — типы страниц.
- А вот для товара Стул VX-105 нужно чтобы был уникальный заголовок, который формируется отличным способом от страниц того же типа. Остальные свойства путь будут как у типовой.
- Ок, создайте кастомную страницу, укажите родителя и оставьте пустыми поля, которые хотите наследовать. Установите заголовок получите уникальную страницу.
3. Переменные и дубли
- Роботы обычно творят всякую дичь и запихивают разные $_GET переменные в запрос, а потом ещё это индексируют
- Установите настройку ALLOW_GET_PARAMS = N, и страницы перестанут отдавать 200 при попытке передать переменную
- А если мне нужны определённые переменные для сбора статистики?
- Объедините набор разрешённых переменных в группу, запишите в таблицу и разрешите этому типу страниц принимать только эти переменные
4. ЧПУ
- Роботы плохо индексируют длинные пути и непонятные переменные
- Нет проблем, создавайте типы страниц только на правилах ЧПУ
- Как это создавайте? Обычно мне не предоставляют выбора программисты, говорят — можно так или так, выбирайте. Но иногда мне не хватает выбора.
- Придумайте свои пути, разбейте на части и объясните назначение каждой части разработчику. В общем случае любой путь состоит из статических и динамических частей.
Возьмём частный пример
/brand/#ELEMENT_CODE#/#SECTION_CODE#/#SMART_FILTER_PATH#/nav/page-#PAGE_N#/
Обёрнутые в знак «#» части назовём динамическими переменными, а остальное статическими. В текущем случае у нас будет 3 переменных.
- Я что-то такое видел в настройках инфоблока битрикс, #SECTION_CODE#, #CODE#. Они зашиты в CMS имеют одно назначение, их кол-во довольно ограничено, да ещё и привязка к инфоблокам. Довольно неудобно.
- Согласен. Поэтому переменные в Битрикс при формировании URL имеют мало общего с теми, что используются в нашем модуле. Здесь вы придумываете наименование переменной, объясняете разработчику какие ограничение и какое назначение у этих переменных, он вам создаёт переменную под ваши нужды, а вы используете для генерации типовой страницы.
- Ой, всё надо программировать? Я же готовое решение покупаю.
- В модуле есть предустановленные переменные, которые чаще всего используются на проектах. Хотите — используйте их, хотите новые — обращайтесь к разработчику. Всех частных случаев не предусмотреть, а вот готовые понятный типовой механизм для решения таких случаев есть
- А ещё вот роботы не любят кириллицу в URL, им нравится транслит.
- Есть и такое. Причём с обратной конвертацией. Т.е. значения rus <=> translit имеют взаимнооднозначное соответствие. Например яндекс робот работает только с конвертацией в одну сторону rus => translit.
- У меня есть каталог товаров, у товара есть много свойств. Я бы хотел добавить для роботов различные срезы, с предустановленными значениями в фильтре и продвигать такие страницы.
- В поставке модуля присутсвует компонент catalog.filter, который генерирует фильтр для любой сущности (подробнее в документации dquad.lib). В предустановке имеется уже настроенная переменная #SMART_FILTER_PATH#, можете попробовать начать работать с неё. Вам останется только сопоставить короткое имя и системные путь к сущности.
Например для PRODUCT.PROPERTY.ATT_BRAND.NAME (название бренда свойства товара) укажем brand. Скажем — использовать функционал translit. И обратимся по адресу
/catalog/stoli/steklyannie_stoli/brand-igi-or-hotu-or-stanli/color-krasniy-or-siniy/
Получим срез товара
- стеклянные столы
- принадлежащие брендам иги, хоту, стенли
- с цветами красный и синий
- А что потом из этого попадёт в sitemap?
- В предустановке есть доп. фоновый процесс, который пополняет таблицу dq_seo_sitemap одиночными значениями для каждого свойства-участника среза. Можете использовать его, можете добавить свою логику, обратившись к разработчику.
5. Sitemap
- Нужен полный sitemap. Я пробовал разные. Никакой из них не даёт то представление карты сайта, которую хотел бы я. Как у вас обстоят дела?
- Смотрите. Механизм seo модуля построен на иерархии раздел, типовая страница, частная страница. При этом ВЫ решаете из каких частей будет построен URL. Если у вас нет дополнительного времени и денег — вы используете предустановленные пути, которые подходят большинству. Если они у вас есть — вы придумываете сами пути, объясняете разработчику и получаете тот вид, который вам нравится. Так что возможности для масштабирования есть, вопрос рентабельности. Это решать вам.
- А ещё вопрос, вот у меня 1 000 000 товаров и 100 000 срезов под каталог. Решения которые я пробовал зависают, т. к. им не хватает памяти для генерации карты.
- Все трудоёмкие процессы используют механизм фоновых процессов, где работа происходит итерационно. Так что кол-во страниц в карте сайте не влияет на работоспособность.
- Генерация происходит автоматически?
- Хотите автоматически, хотите — запускайте вручную. Подробнее в документации
6. Last modified
- Роботы вечно сканируют мой сайт и вытаскивают ресурсы, как бы их утихомирить?
- В поставку dquad.lib входит функционал ответов Last Modified (304).
- А ещё sitemap имеет тег last_mod, откуда он берётся?
- Оттуда же. При изменении страницы время записывается в ту же таблицу, используется как для работы с роботами/пользователями. Также и для генерации sitemap.xml
7. Noindex, Nofollow
- Так получается, что на страницах много лишнего интерфейса, который нужен пользователям, но при этом сканируется поисковиками и ухудшает вес страниц.
- Для всех страниц есть настройка, которая позволяет выделить блоки html на страниц и дополнительно обернуть их в noindex, a rel=nofollow
- Т.е. я могу сказать роботу — сканируй нижнее меню на главной, но не сканируй на всех остальных страницах.
- Да. Или можете исключить из индексации блок фильтра, корзины, чата.
Скачать документацию на модуль seo PDF