Drupal 7 для начинающих: ЧПУ (синонимы)
Блог

Drupal 7 для начинающих: ЧПУ (синонимы)

Настраиваем алиасы (синонимы) для URL.
8 комментариев
Опубликовано 22.02.2013
2 мин.

Базовый функционала для сайта сделан, все приведено к более-менее подобающему виду. Но осталась одна нерешенная проблема — адреса страниц.

Все адреса в drupal по дефолту имеют вид node/[NID]. Многие оставляют это как есть, но не будет лишним сделать Человеко Понятные Урл.

Стандартный модуль path

Разработчики друпала прекрасно понимают что ЧПУ — необходимость подавляющего большинства сайтов, и не включить подобный функционал в систему, было бы глупо. Поэтому в базовой поставке системы идет модуль path, который как раз таки и добавляет возможность создания ЧПУ.

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

В самом низу окна редактирования есть вкладки, отвечающие за отображение материала. В этом списке нам нужна вкладка «Параметры адреса».

Справа вы увидите поле для настройки синонима. В нем как раз и можно задать то как будет выглядеть ссылка. Например укажем в поле «news/новость-про-ломтик-бекона»

И жмем «Сохранить». После чего наш материал становится доступным по адресу: site/news/новость-про-ломтик-бекона

Небольшое пояснение. Я сделал news по англ. потому что ранее мы создали представление (вьюху), при помощи которой мы реализовали страницу news со всеми новостями. И логичнее всего чтобы новости имели имели такой вид. Допустим можно просто в адресе удалить «новость-про-ломтик-бекона» и мы попадем на все новости. Также, при грамотно созданных хлебных крошках (breadcrumbs) это положительно повлияет на отображение сайта в гугле (не позиции а его отображение). Да и вообще, так правильно.

А после news я написал по-русски. Тем самым я показал что адреса могут содержать и русские буквы. Но данный пример не правильный, потому что нужно делать все в едином стиле, хотя это скорее всего мои убеждения. Если уж назвали news, то пусть название новости будет транслитом, или news будет по-русски. Как вам лучше, решайте сами, о том как это сделать речь пойдет дальше.

Автогенерация ЧПУ

Мы создали чпу только для одной новости. Конечно, учитывая что у нас не очень много страничек, можно пробежаться и сделать каждому материалу ЧПУ вручную. Но что делать если материалов больше 100? Это уже вызывает сложности, а что будет при 1000+? Как правило у них у всех один и тот же ЧПУ, а различаются он лишь заголовком. Поэтому нам необходимо автоматизировать данную работу. Для этого нам понадобится установить модуль pathauto (он зависит от модуля token — его тоже нужно установить).

После успешной установки и активации модуля, переходим в его настройки (/admin/config/search/path/patterns). В настройках все разделено на три категории: контент, таксономия и пользователи.

Рассмотрим раздел контента. Здесь мы можем настроить шаблоны ЧПУ для наших типов содержимых. Например, настроим для новости. Напишем «news/» а после этого поставим токен (некая переменная) из «постановочные шаблоны». Нам необходим токен [node:title], который выдает заголовок материала. В итоге получаем:

Теперь для всех новостей будет автоматически генерироваться ЧПУ формата news/название-материала.

Задайте для остальных типов содержимого форматы ЧПУ на свое усмотрение. Я сделал так:

Затем жмем «Сохранить настройки».

Вверху также есть дополнительные вкладки:

  • Настройки — настройка генерируемых ЧПУ. Какие слова будут удаляться из ЧПУ, максимальная длина, символ замены пробела, регистр и т. д.
  • Bulk update — обновление ЧПУ для всех указанных типов материалов, у которых нету ЧПУ.
  • Delete alises — массовое удаление ЧПУ для всех материалов. Например. Если изменился формат ЧПУ, сначала удаляем, а потом генерируем новые.

Мы воспользуемся Bulk update, так как у нас задано всего лишь для одной новости. Для этого, разумеется, переходим на вкладку Bulk update и ставим все галочки, затем жмем «Обновить».

Все наши материалы теперь имеют ЧПУ и при добавлении новых материалов будут автоматически генерировать для себя синоним.

Транслитерация ЧПУ

Если вы делаете заголовок материала на русском, то и в ЧПУ будут русские слова. Что делать если необходимо чтобы в ЧПУ были только английские символы? Транслетировать при помощи модуля transliteration.

После установки и активации переходим на страницу настройки pathauto (/admin/config/search/path/settings) и устанавливаем галочку «Transliterate prior to creating alias».

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

P.s.

Возможно возник вопрос, почему в друпале ЧПУ называется синонимами? Если не возник, все равно прочитайте. При создании ЧПУ, старый адрес не пропадает и остается доступным.

Например, раньше одна из новостей имела адрес site/node/7, сейчас имеет адрес news/ham-swine-ground-round-brisket, но я также могу попасть на запись по старому адресу. Если Вас не устраивает такой расклад событий, можно установить модуль global redirect, который автоматически будет переадресовывать (!) на ЧПУ. Системный адрес вы никак не удалите, он никуда не денется.

Не стоит бояться и думать что это навредит SEO, ибо многие этим обеспокоены. Поисковые системы понимают что это коротки адрес статьи, а оригинальный тот что с ЧПУ. Это хорошо видно в исходном коде страницы.

Прикрепленные файлы
Drupal
Drupal 7
Pathauto
небольшой уютный чатик

Комментарии

Д
Дима
вт, 06/17/2014 - 18:14

Спасибо. Ваша статья очень помогла. Все понятно и доходчиво объясняете. Продолжайте в том же духе.

В
Владимир Дима
вс, 08/31/2014 - 16:33

Подскажите пожалуйста в решение вопроса. На сайте стоит модуль metatag, в настройках pathauto для всех типов матриала стоит шаблон  [node:metatag:title], т.е синоним генерируется из поля (Заголовок страницы) в мета полях ноды. Но дело в том что не хочет автоматически создаваться синоним, приходится каждый раз после сохранения ноды делать массовое обновление синонимов. Когда захожу в редактирование ноды, вижу что с пункта (Создать синоним URL автоматически) снят флажок, хотя во время сохранения я его ставлю. 

 

m
mik
ср, 12/17/2014 - 19:41

Есть конечно модули для ЧПУ. Мне только не понятно, надо ли на сайте для ноды автоматически генерировать URL в виде /novosti/soyuz-sovetskikh-sotsialisticheskikh-respuplik-prikazal-dolgo-zhitj вместо понятного всем /news/ussr/finish ?
А транслитерация?
В АНБ кончились русские со своим софтом?
Ерунда это всё. На тупых, но небедных заказчиков рассчитано. Типа, продвинутых. Кидайте их, всё правильно.

N
Niklan mik
ср, 12/17/2014 - 22:44

Честно говоря, последние абзацы вообще не понятны мне.

Возвращаясь к ЧПУ. И ваш вариант, и вариант из статьи не понятны подавляющей части пользователей интернета. Поэтому тут каждый делает из своих предпочтений. А разница вот в чем:

  1. Ваш вариант: тут либо ручное прописание адресов страниц - что накладно и если сайт не личный, то надо будет объяснять человеку как это делать и по какому алгоритму писать и в каком порядке. Вдобавок, теряется иерархия, а для её сохранения надо либо модуль писать, а в идеале вообще для таких чпу вообще самопис, либо все это регулировать руками, и любая ошибка может плохо сказаться на выдаче.
  2. Вариант из статьи: Простой, автоматизированный, не требует никаких вмешательств, сам регулирует иерархию.

Так что тут на усмотрение каждого, но ваш вариант как раз таки на небедных и тупых заказчиков, ибо логического объяснения чем ваш вариант лучше того что генерит "друпал" нету, разве что оно покороче и "покрасивее".

Как можете заметить ЧПУ у текущего сайта так вообще с циферками и ничего. Ибо содержимое ЧПУ почти никак не влияет на выдачу (кроме иерархии), и опять же, приходим к тому что кто как хочет так и делает. Кстати ваш вариант тоже можно на автоматизм через данный модуль сделать, но за ним потребуется контроль и лишние телодвижения с таксономией.

А
Андрей
пт, 04/10/2015 - 17:51

Подскажите пожалуйста! Установил все необходимые модули, но в настройках Pathauto нет вообще никаких разделов, есть только Добавить синоним и Фильтр синонимов. В чем может быть проблема? Работаю на Денвере.

Е
Екатерина
ср, 07/22/2015 - 21:03

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

Д
Дарья
вт, 07/04/2017 - 14:06

Здравствуйте, не первый день ломаю голову над следующей проблемой: на сайте есть копии материалов типа "Публикация" и "Статья". Данные копии закрыты от индексирования в роботс тхт. Проблема в том, что именно на них кликают посетители сайта, и динамический вес страницы похоже уходит вникуда. Копии были созданы для отображения в блоках типа "Облако тегов" (у них в урл присутствует слово terms), и в блоке типа "Вам может быть интересно" (в блоке отображаются ссылки на другие статьи по схожей тематике) - тут урл node. При этом, у нода прописал каноникал как у оригинальной страницы, а у термс - каноникал сохраняется свой собственный. Нигде не могу найти информацию. Есть вариант настроить просто редиректы на оригинальные страницы, но решит ли это проблему?)

N
Niklan Дарья
вт, 07/04/2017 - 16:36

Здравствуйте. Не мучайтесь, поставьте Metatag. Для данных типов материалов сделайте metatag robots = noindex (Не индексировать данную страницу в advanced) и всё.