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

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

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

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

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

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

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

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

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

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

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

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

Раздел sitemap.html

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

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

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

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

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

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

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

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

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

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

Проход 2

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

Проход 3

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

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

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

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

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

Установка drush в окружении OpenServer

Сентябрь 21, 2017 г.

Drush позволяет почувствовать себя "ацким хакером" при работе над проектом в Drupal. Он упрощает многие рутинные операции, расширяя и дублируя часть функций ...

Читать

Линейка сайтов на новом шаблоне suet-2012

Апрель 18, 2012 г.

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

Читать

Как подставить файл-источник при запуске миграции из CSV файла

Март 4, 2024 г.

При работе с migration API в друпал, в документации предполагается, что вы задаёте файл в секции source как значение path. (Подразумевается, что вы используете модуль migrate_source_csv). Хотелось бы делать это через интерфейс, а не конфигурационные ...

Читать

Кастомизация шаблона формы плагина webforms

Май 1, 2023 г.

Чтобы изменить штатный макет формы webform-submission-form.html.twig, требуется имплементация своего шаблона. Для начала определимся с именем шаблона. ...

Читать
 

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

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



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