Пишем карту сайта под Drupal 7

Нужна ли HTML карта сайта или нет — это науке не известно. Как минимум она нужна SEO — специалистам. :)

В простейшем случае, карта сайта — это портянка урлов всех публикаций, т.н. плоский список. Иерархическая карта (в виде дерева) обычно базирует свою структуру на каком-либо меню сайта. Для того и другого случая можно взять готовые модули.

А я расскажу как написать свой модуль карты сайта.

Бывают частные случаи, которые готовыми модулями не могут быть решены. Типична задача с каталогом товарных позиций. Если товаров много, то их не добавляют в меню. Но по логике товары требуется монтировать в определенный раздел сайта, так чтобы это выглядело как будто товар находится вот здесь:

[главная] — [каталог товаров] — [рубрика] — [товарная позиция]

Возможно, что вместо рубрики у вас целое дерево из рубрик и подрубрик.

Встречается и более простые примеры, например, лента новостей, блог. Здесь для публикаций также не создают пункта в меню, но есть какой то раздел, в который по логике они должны быть смонтированы.

[главная] — [все новости] — [новостная публикация]

Концепция карты сайта

Кроме публикаций, у вас наверняка на сайте могут быть разделы, созданные программно. Нам нужно объединить на карте оба множества — публикации и программные разделы.

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

Раздел sitemap.html

Нам понадобится какой то раздел для карты сайта. Я назвал модуль SM (sitemap).

Отсечь все лишнее

Карту придется создавать в несколько этапов.

Сначала мы получим необходимые данные о публикациях сайта — это название, url, синоним адреса и тип публикации. Весь этот список мы будет монтировать в заготовку карты, которой будет служить main-menu.

Не все типы публикаций, возможно, попадут на карту, так что составьте свой список типов для запроса node.type in (‘page’, ….) .

Определим, куда будем монтировать публикации. Я объявляю перечень точек монтирования,  к примеру публикации article я монтирую по адресу /blog. Далее следует три этапа монтирования и рендеринг карты.

До рендеринга требуется определить заголовок и ссылку каждого элемента. Синонимы публикаций мы загрузили с самого начала, чтобы не подсматривать их для каждой статьи в отдельности.

Проход 1. Предварительные ласки

Здесь мы проводим анализ существующих пунктов меню, монтируем товары в каталог. Попутно ищем точки монтирования в меню для следующего прохода.

Функция рекурсивно обходит все дерево.

Проход 2

Здесь мы смонтируем все публикации в соответствующие точки монтирования. Здесь обходимся без рекурсии, но нам приходится пробежаться по всему списку публикации (за вычетом тех, что уже смонтировали).

Проход 3

Самый простой из всех. Если у нас остались какие то публикации в списке, которые мы не учли в меню или в перечне точке монтирования, то их надо смонтировать в корень.

Рендеринг дерева карты сайта

Для оснастки я воспользовался неупорядоченным списком (<ul></ul>).  Поправить на <div> или какой то другой тег, думаю, вам не составит труда.

Не рассчитываю, что данный обзор окажется полезен для широкой аудитории. Я преследую цель законспектировать технику до следующего использования в очередном проекте. Но если у вас есть вопросы, я охотно на них отвечу :).

Мало букафф? Читайте есчо !

Миграция терминов таксономии

Февраль 29, 2024 г.

Термины представляют из себя отдельные сущности, которые подключаются к родительской entity в виде term reference. Потому классический подход - это отдельная предварительная миграция терминов, а потом подключение их, используя migration_lookup плагин. ...

Читать

Заполнение поля формы через GET в Drupal 7

Июнь 23, 2011 г.

Рассмотрим случай, когда нужно предварительно заполнить поле (ряд полей) формы при переходе на страницу с этой формой в Drupal. Данные для инициализации передаём как часть uri (т.е. метод GET). Подход проверен для Drupal 7. [crayon-695ee26ea4d34000721116/]

Читать

Качество изображений в Drupal

Май 15, 2015 г.

Иногда жалуются, что преобразование изображений в drupal приводит к сильному снижению качества. Где и что настроить, чтобы решить эту проблему смотрите ...

Читать

Подключение CAPTCHA к пользовательской форме в drupal

Февраль 19, 2012 г.

У вас есть запрограммированная форма в друпал, и вы хотите добавить в неё антиспам поле из модуля CAPTCHA. Смотрим как это сделать. Для начала модуль СAPTCHA надо скачать и установить (активировать на странице доступных модулей сайта - /admin/build/modules). ...

Читать
 

Комментарии к «Пишем карту сайта под Drupal 7»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: