Настраиваем все, для максимальной пользы в SEO.
Как-то я написал гайд как сделать каталог товаров на Views + Panels + Taxonomy. Эта статья сейчас является самой обсуждаемой и читаемой в блоге. И я заметил что многие испытывают проблемы именно с настройкой URL’ов для категорий и товаров. Поэтому данная статья посвящена именно настройка грамотных URL с иерархией, ну и попутно я расскажу как сделать для них же хлебные крошки, ведь они играют немаловажную роль на странице.
Для начала запасаемся модулями и их зависимостями:
- Path Breadcrumbs - позволит строить нам хлебные крошки как угодное и где угодно. - Chaos Tools
- Entity API
- Pathauto - многим уже известен, ведь позволяет генерировать URL’ы. - Token
Для пользователей Drush все намного проще:
drush dl entity path_breadcrumbs token pathauto && drush en path_breadcrumbs_ui pathauto -y
Подготовка
Для начала я опишу свою рабочее окружение, где будут проводиться демонстрации. Я не собираюсь воссоздавать каталог, ведь разницы вообще никакой, уверяю вас, если поймете суть, то все получится даже с Drupal Commere, не говоря уже о каталоге на обычных нодах.
Итак, имеется:
- Словарь таксономии (taxonomy vocabulary): Категории каталога.
- Тип содержимого (node): Товар. - Заголовок (стандартное)
- Содержимое (стандартное)
- Категория (term reference на словарь “Категории каталога”).
Все просто как пить дать! Осталось добавить парочку бутафорских товаров и в путь.
Создание иерархических путей
Для создания путей для товара мы должны зайти в настройки модуля Pathauto, которые находятся по пути: Конфиграция -> Синонимы и переходим во вкладку Шаблоны.
Суть такая, мы делаем адреса для категорий, а затем делаем финт ушами и товару делаем урл: URL-категории + название товара.
Задаем следующие паттерны:
- Категория каталога (термин):
catalog/[term:parents:join-path]/[term:name]
- Содержимое
Товар:
catalog/[node:field-product-category:parents:join-path]/[node:field-product-category:name]/[node:title]
Получается например так:
- catalog/computer
- catalog/computers/computer-1
- catalog/computers/asus/asus-123
Но у такого метода есть ограничения. Например мы размещаем товар в категории со следующей иерархией: Компьютеры и ноутбуки -> Компьютеры -> Собранные -> Асус
Ожидаемый URL:
- catalog/computery-i-noutbuki/computery/sobrannye/asus/nazvanie
Реальный URL:
- catalog/computery-i-noutbuki/computery/sobrannye/nazvanie
Как вы уже догадались, вложенность не такая уж и бесконечная. Если отбросить приставку каталога, которой скорее всего будет являться вьюха со всем товаром, то вложенность категорий может достигать 4, при этом урл будет генерироваться нормально. С вьюхой уже получается 3.
С другой стороны, куда такие вложенности и длинные url’ы? Тут попахивает неправильной организацией каталога, да и url имеют ограничение в 255 символов.
Создание хлебных крошек с иерархией
Если вы реализовывали категории на таксономии, то хлебные крошки строятся вполне сносно.
Например, у меня есть категории следующей вложенности: Компьютеры и ноутбуки » Ноутбуки » Работающие на солнце. Они имеют следующий вид:
Отлично, не так ли? Но если мы заходим в товар, который находится в данной категории, что мы видим:
Правильно, мы видим разочарование, но решение очень простое. Заходим в: Структура » Path Breadcrumbs и создаем новое правило для хлебных крошек.
Задаем следующие параметры:
Не обращайте внимание на ?q= - у меня просто выключены чисты ссылки. Мы просто жмем “Далее”.
На второй странице указываем что %nid
- это Node: ID (Материал: ID), и жмем
далее.
На странице выборки указываем фильтр по типу содержимого, где указываем тип содержимого который отвечает за товар. Ведь нам не нужно чтобы те же самые крошки генерировались, допустим, для новостей.
Вот мы и на странице настроек хлебных крошек. Тут все просто.
- Заголовок ссылки:
%nid:field-product-category:pb-join:name
- Адрес ссылки:
%nid:field-product-category:pb-join:url
Также можно добавить путь корня каталога, допустим если это вьюха. Я например, сделал так:
В итоге теперь товары имеют следующие хлебные крошки:
Кстати, то же самое можно проделать и для терминов словаря “Категории каталога”,
чтобы добавить туда ссылку на “Каталог”. Все действия те же самые, только
вместо node/%node
, указывайте taxonomy/term/%tid
, где tid - ID Термина.
Вот и все. Если у кого есть опыт с адресами огромной вложенности, поделитесь своим опытом.
Комментарии
Мискузи, мерси!
Приветствую!
На странице просмотра ноды (site/catalog/razdel-1/element-1) хлебные крошки встали как надо! Спасибо за статью!
По аналогии пытаюсь сделать хлебные крошки для раздела каталога - но не могу понять, что писать в поле Путь ссылки чтобы получить адрес типа "site/catalog/razdel-1"
С дупалом пытаюсь подружиться третий день, не ругайте сильно
Если делать как написано, они сами такими стать должны.
Никита, спасибо за полезнейшие статьи. Делаю каталог по вашему мануалу, никак не могу понять с иерархическими путями вот какой ньюанс:
Термины таксономии у меня на русском (ибо на их основе у меня еще генерируется меню), и когда я делаю всё как в вашей статье, иерархические ссылки в адресной строке тоже на русском. У вас же категории идут на русском, а ссылки на английском.
Нутром чую что решение кроется в вашей фразе "мы делаем адреса для категорий". Но если я руками задаю урл алиас для категории, то Pathauto не работает. То есть либо Pathauto и ссылки на русском, либо ссылки прописаны руками, безо всяких иерархий.
Где то туплю, не пойму где.
Модуль transliteration установите, а в настройках Pathauto укажите "транслитерировать". И все :)
Для хлебных крошек путь лучше такой
- ЗАГОЛОВОК ССЫЛКИ
%term:parent:pb-join:name
ПУТЬ ССЫЛКИ
%term:parent:pb-join:url - ЗАГОЛОВОК ССЫЛКИ
!page_title
ПУТЬ ССЫЛКИ
Получаются крошки где весь путь ссылками, а последняя крошка нет.
Для таксономии я имел в виду.
В создании иерархических путей в заполнении поля "Содержимое Товар" я так и не смог найти подобной строки для своего field-... catalog/[node:field-product-category:parents:join-path]/[node:field-product-category:name]/[node:title]
Вы как то пишите на скорую руку, приходится над некоторыми моментами гадать. Пожалуйста если взялись писать на эту тему, то указывайте детали и точные направления действий. Спасибо!
Спасибо за статью эту и другие, все доступно и понятно. Может здесь стоит разве сделать приписку, что field-product-category - это имя поля терминов в товаре)
Довольно интересно и увлекательно написано, спасибо Вам. Встал вопрос казалось бы на ровном месте. Для мультиблогов как настроить правильно путь, примерно нужно чтобы выглядело так: Главная/Блоги/Блог пользователя %uid
Вот эта страница интересует, которая есть блог пользователя.
хороший диз в стиле ТМ )
Возможно информация устарела. В последней версии правильно %node и %term, а не %nid и %tid. Исправьте на node/%node и taxonomy/term/%term
Возможно информация устарела. В последней версии правильно %node и %term, а не %nid и %tid. Исправьте на node/%node и taxonomy/term/%term
Это не имеет значения. После % можно писать что угодно, это лишь для вас чтобы понятнее было. Просто на место этой "переменной" подставится значения из этой части URL, на данном этапе нет никакого парсинга, поэтому дальше предлагают выбрать что это за данные. Можете хоть %blabla назвать.
Как то не могу найти токен join-path в модуле Pathauto при настройки пути node , или это не принципиально ?
Это скорее всего от какого-то модуля типа Entity Token идет, я уж точно и не помню. Но поставив Path Breadcrubms они вроде по зависимости приедут.
katalog/[node:field-katalog:0]/[node:field-katalog:1]/[node:field-katalog:2]/[node:title]/[node:product:model] Вот такой цепочкой возможен путь node для хлебной крошки ?
Niklan, Вы-умница! Огромное спасибо, ваша статья очень помогла))
у вас ссылка палевная на " каталог товаров на Views + Panels + Taxonomy"