Drupal синоним url

Что такое URL?

URL — это аббревиатура от «Uniform Resource Locator», который является
адресом страницы в сети. Это «имя», по которому браузер идентифицирует
отображаемую страницу. В примере «Посетите нас по адресу example.com«,
example.com — это URL-адрес главной страницы вашего веб-сайта. Пользователи
используют URL-адреса для нахождения информации в сети.

Что такое путь?

Путь — это уникальная, последняя часть URL для определенной функции или части
содержимого. Например, для страницы с полным URL http://example.com/node/7
путем является node/7.

Вот несколько примеров путей, которые вы можете встретить на вашем сайте:

  • node/7
  • taxonomy/term/6
  • admin/content/comment
  • user/login
  • user/3

Что такое синоним?

Программное обеспечение ядра имеет функцию под названием «Синонимы URL»,
которая позволяет вам дать более понятное название содержимому. Итак, если у
вас есть страница «About Us» с путём node/7, вы можете настроить псевдоним
так, чтобы ваши посетители видели его как http://www.example.com/AboutUs.
Эту функциональность обеспечивает модуль ядра Path, который поддерживает
синонимы в URL.

Source file: content-paths.asciidoc

Доработанная и исправленная статья о формировании красивых синонимов URL в Drupal. Рассматривается возможность совместного использования модулей Path, Pathauto и CCK.

В начале был Path.

Вероятно, вы уже знаете, что в Drupal встроен модуль Path (по умолчанию выключен), позволяющий создавать синонимы (то есть — псевдонимы или алиасы) для документов. После включения модуля при создании или редактировании документа становится доступным дополнительное поле «Настройки адресов». В этом поле можно указать альтернативный синоним URL для документа. То есть, если страница «Мои друзья» на вашем сайте имеет фактический адрес www.mysite.com/node/17, а вам нужно, чтобы адрес был вроде www.mysite.com/aboutme/myfriends, то всё, что следует сделать — просто указать синоним aboutme/myfriends в этом поле (именно так, то есть — всё, что ниже «корневого» слеша):

Drupal сохранит этот связанный синоним в базе, и все последующие ссылки на документ будут формироваться уже с учетом определенных для него синонимов. Также имеется возможность назначать синонимы для категорий (терминов таксономии), заменяя taxonomy/term/term_id на что-то более понятное человеку.

Всё это так, и написано об этом тоже уже много. Но мне этого недостаточно. Я искал возможность максимально автоматизировать формирование алиасов, вместе с тем сохранив определённую гибкость в их создании. Попробую объяснить, что же именно я хотел.

Задачи.

Итак, я бы хотел:

  1. Сделать формирование всех алиасов максимально прозрачным, с тем, чтобы ввод синонима URL или не требовался (пусть Drupal сделает это за меня) или же был предельно простым.
  2. Мне нравится, когда URL’ы включают в себя расширение «.html». Согласен, это мега-архаизм и излишество, но такая уж у меня слабость. В общем, я хочу, чтобы все сформированные Drupal’ом ссылки на моем сайте имели на своём конце старое доброе «.html».
  3. Заставить Drupal формировать синонимы URL, учитывающие принадлежность документа к определенной категории (т.е. термину таксономии) и соответственно наследующие синоним, ранее определённый мною для этой категории.
  4. Наконец, определить различные правила формирования синонимов для различных типов содержания.
    • Например, я бы хотел, чтобы для блоговых нодов это было наподобие: blog/5.html, …, blog/25.html, …, blog/278.html, и т.д. и т.п. То есть URL должен включать в себя nid документа (или, возможно, дату).
    • Для других же, статических типов содержания, мне нужна была возможность явно указать синоним непосредственно документа (например, «myarticle»), а на Drupal переложить все заботы, связанные с формированием и включением в URL синонима категории (или полного «пути») перед документом и любимого мною «.html» на конце. В итоге должно было получаться что-то вроде articles/all/myarticle.html.

Ну и что здесь такого, скажете вы. Модуль Pathauto решает все перечисленные задачи без шума и пыли. Да, решает. Почти все, за исключением последнего пункта. Но давайте по порядку.

Автопилот: Pathauto.

Модуль Pathauto действительно был создан для целей, связанных с автоматизацией формирования синонимов в Drupal. Включённый модуль «прозрачно» делает свою работу при каждом сохранении документа. Возможностей у него достаточно много. Основной функционал модуля построен на шаблонах преобразования синонима, определяемых пользователем для отдельных (или всех) типов содержания.

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

Кроме того, в Pathauto встроен механизм транслитерации заголовков документов для компонента [title]. При желании вы сможете автоматически получать URL’ы вроде «kak-ya-otdihal-s-druzyami-na-more», базирующиеся на тексте заголовка. Для корректной работы этого механизма с русским языком следует переименовать файл i18n-ascii.example.txt в папке модуля в i18n-ascii.txt.

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

Итак, Pathauto допускает использование синонимов категорий ([catalias]) в качестве компонента шаблонов. Это хорошо, и значит, я смогу использовать эту особенность для формирования «пути» к документу, включающего в себя синоним термина таксономии, к которой относится материал. Также есть возможность сформировать URL’ы, комбинирующие синоним категории («путь») и дату создания документа, или его nid или ещё какой-либо компонент, и, наконец, моё любимое «.html» (!) в конце. На первый взгляд в нём есть всё то, что я хотел.

Однако, не всё. Если вы помните, я также хотел иметь возможность создавать свои синонимы для некоторых типов материалов. Но как «научить» Pathauto добавлять к автоматически формируемому «пути» мой синоним?

Здесь есть одна проблема, которая перечёркивает многие преимущества модуля, по крайней мере — в моём случае. Pathauto формирует всё, что от него требуется, но при этом обновляет все системные синонимы документа, привязывая вновь созданные модулем. И, к сожалению, модуль Pathauto не может использовать ранее назначенный синоним документа как компонент шаблона. Таким образом, все ваши попытки непосредственно указать синоним в поле «Настройка адресов» после первого же сохранения документа будут сведены на нет. А что делать, если, как я уже писал, я хочу сам назначать синонимы для документов определённого типа?

Выходит, что модуль Pathauto в чистом виде идеально подходит для автоматических машинно-правильных адресов. В моём случае это пригодилось бы при формировании URL’ов для блоговых нодов или других видов динамического содержания. Но для тех материалов, которые мне хотелось бы подавать как статические страницы, мне нужно нечто большее.

Гибкий рецепт: Path + Pathauto + CCK.

Каков же выход?

Выход в поиске способа предоставить модулю Pathauto информацию о предпочтительном URL документа. Эта информация должна быть сохранена вместе с документом, но отдельно от стандартного поля настройки адреса. Здесь мне поможет мощный инструмент для создания пользовательских полей в нодах Drupal’а — модуль CCK. Этот модуль позволяет добавлять различные виды полей к любым типам содержания и сохранять введенные в них данные в базе, как дополнительные данные для каждого нода. Это именно то, что мне нужно, поскольку CCK экспортирует имена полей в Pathauto в качестве возможных компонентов для шаблона преобразования.

  • Итак, устанавливаю модуль CCK. Поскольку CCK является не отдельным модулем, а группой таковых (каждый из которых служит для создания и управления отдельным типом полей), то на странице управления модулями Drupal я включаю только два модуля из набора: Content и Text.
  • После включения модуля на странице описания любого из имеющихся типов содержания появляется дополнительный пункт меню – «Fields».
  • Для моих целей удобнее всего использовать тип содержания Page. Но я, пожалуй, создам новый тип содержания для своих статических страниц. Просто чтобы не было путаницы.
  • Создаю новый тип документов, называю его, скажем – MyStaticPage и присваиваю ему машинное имя my_static_page. Затем открываю страницу добавления дополнительных полей CCK для этого типа.
  • Добавляю новое поле типа Text, называю его, скажем: MyURL.
  • В свойствах поля указываю – «Обязательно». Это значит, что поле должно быть обязательно заполнено пользователем (ведь мы же не хотим, чтобы Pathauto формировал «отсебятину» в случае пустого поля, верно?).
  • Теперь при создании или изменении материалов типа MyStaticPage нам доступно специальное поле для ввода URL, в нём я и буду указывать мой синоним для документа.
  • Перехожу к модулю Pathauto. В настройках «Node path settings» теперь появилось новое поле «Pattern for all MyStaticPage paths:». Вот здесь-то нам и нужно указать …что? Смотрим ниже список всех доступных компонентов. Вот оно: «[field_myurl]».
  • Этот компонент использует информацию, сохранённую в нашем новом текстовом поле, его нам и нужно указать. Вводим шаблон: «[catalias]/[field_myurl].html».
  • Для остальных, «нестатических», типов ставлю шаблон «[catalias]/[nid].html». То есть, это просто id документа внутри Drupal’а, мне так нравится. Можете поменять на дату, или на что-то другое.
  • Поскольку теперь мне нужно обновить таблицу синонимов Drupal’а для имеющихся документов, я включаю опцию «Bulk update node paths» (можете пропустить, если у вас ещё нет документов), а также опцию «Create feed aliases» для формирования таких же синонимов в RSS фидере.
  • Мне не нужно автоматическое формирование синонимов категорий (я предпочитаю их указывать сам), а потому во избежание путаницы я очищаю все поля в секции «Category path settings».
  • Сохраняю настройки.

Теперь URL’ы всех новых страниц типа MyStaticPage будут автоматически формироваться Drupal’ом, комбинируя синонимы категорий, в которые они включены, и синонимы, определенные мною в поле MyURL при создании документа.

Последнее «но».

Осталось ещё одно «но». Модуль CCK при отображении документа с пользовательскими полями выводит также название поля и его содержание, что не есть хорошо. Они отображаются как в теле тезауруса, так и при просмотре документа.

Настройки модуля, к сожалению, не допускают возможности скрыть содержание поля при просмотре документа. Но выход всё-таки есть. Модуль CCK позволяет подключать собственные шаблоны для визуализации полей модуля, в которых при желании можно просто …ничего не выводить. Это позволит отключить отображение и названия поля и его данных. Для этого потребуется простейшая модификация файла template.php из вашей темы оформления. Эта процедура описана в файле readme.txt, находящемся в папке модуля CCK: modules/cck/theme/readme.txt, на основании этого файла я и опишу все последующие шаги.

Итак, находим в папке modules/cck/theme/ файл template.php. Как видите, он содержит единственную функцию phptemplate_field:

function phptemplate_field(&$node, &$field, &$items, $teaser, $page) {
  $variables = array(
    ‘node’ => $node,
    ‘field’ => $field,
    ‘field_type’ => $field[‘type’],
    ‘field_name’ => $field[‘field_name’],
    ‘label’ => $field[‘widget’][‘label’],
    ‘items’ => $items,
    ‘teaser’ => $teaser,
    ‘page’ => $page,
  );
}

Аккуратно копируем весь код функции и вставляем в конец файла template.php текущей темы оформления. Сохраняем файл. Добавленная функция переопределяет стандартную процедуру вывода полей CCK и «сообщает» модулю CCK, что забота о выводе полей теперь ложится на пользователя.

В соответствии с описанием, в папке текущей темы также нужно создать файл field-field_myurl.tpl.php (помните, что поле в моём примере выше называется field_myurl?). Этот файл — просто шаблон, в котором можно определить, как именно поле CCK будет отображаться в браузере, то есть, HTML-обвязку выводимых данных поля. Поскольку нам ничего не нужно выводить (мы хотим скрыть поле), то создаём пустой файл, а лучше — вообще ничего не создаём (ничего страшного не произойдёт). Для интереса можете посмотреть как может выглядеть шаблон вывода поля, открыв файл modules/cck/theme/field-field_body.tpl.php.

На этом настройка закончена. Помните о том, что, поскольку мы переопределили функцию вывода полей CCK, в будущем вам придётся создавать шаблоны вывода для всех новых полей CCK, иначе они отображаться не будут. Либо определить дополнительно общий шаблон для вывода полей CCK (field.tpl.php). Подробности — в файле modules/cck/theme/readme.txt.

Что же касается меня, то я совершил святотатство, надругавшись над своим модулем content.module из набора CCK, и вообще отключил вывод полей на уровне кода модуля. Я могу себе это позволить, поскольку поля CCK у меня пока больше нигде не используются. При необходимости я вернусь к способу скрытия полей CCK с помощью тем.

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

Все адреса в 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], который выдает заголовок материала. В итоге получаем:

Pathauto.

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

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

Полная настройка Pathauto.

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

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

  • Настройки — настройка генерируемых ЧПУ. Какие слова будут удаляться из ЧПУ, максимальная длина, символ замены пробела, регистр и т. д.
  • 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, ибо многие этим обеспокоены. Поисковые системы понимают что это коротки адрес статьи, а оригинальный тот что с ЧПУ. Это хорошо видно в исходном коде страницы.

Код страницы.


Опубликовано Elena Ivleva
чт, 01/07/2021 — 21:13

При создании структуры сайта на Drupal 9 мне регулярно встречаются очень схожие задачи. Например, создать с помощью модулей Pathauto и Token синоним пути для материала, который включал бы термин таксономии из поля Term reference.

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

Вот наиболее распространенные примеры токенов:

Иерархические синонимы терминов таксономии.

[term:parents:join-path]/[term:name]

Иерархический синоним для материала, если у материала может быть выбран только один термин из словаря и термин может иметь иерархию.
Здесь field_stile_collezione поле Term reference с единственным возможным значением, причем в поле может быть выбран термин верхнего уровня, а может быть термин, имеющий родителей.

[node:field_stile_collezione:entity:parents:join-path]/[node:field_stile_collezione]/[node:title]

Возможные результаты:

classico/eleonora

classico/eleonora/composizione

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

[node:field_spravochnik]/[node:field_resurs]/[node:title]

В результате все термины из одного поля записываются через дефис.

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

В системе управления сайтом Drupal можно делать понятные URL только при создании конкретных страниц. Но для автоматизации этого процесса придётся использовать расширения. Расскажем обо всём по порядку.

Редактирование материала

Задать URL для материала можно в разделе «Содержимое». Чтобы перейти в него, необходимо кликнуть на пункт «Содержимое» в верхнем меню. Здесь выводится список всех материалов, опубликованных на сайте.

настройка содержимого сайта  в Drupal

В столбце «Операции» напротив каждой статьи есть возможность совершения над ней разных действий – редактирования, управления переводами, удаления. Здесь следует нажать пункт «Редактировать».

поле с синонимом URL в Drupal

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

Установка модуля

Самостоятельно задавать понятные адреса для страниц удобно только в том случае, когда на сайте мало материалов. Когда количество страниц исчисляется сотнями, лучше использовать модуль. Например, можно скачать расширение «Pathauto» на официальном сайте проекта или в других источниках.

Для установки модуля Pathauto нужно перейти в раздел «Расширения», нажав соответствующую кнопку в верхнем меню. Дальше необходимо нажать «Установить новый модуль». Здесь надо выбрать скачанный заранее файл или дать ссылку на него в сети.

Выбор файла для установки в Drupal

После этого нужно нажать кнопку «Установить», дождаться появления сообщения «Установка успешно завершена». После этого нужно вернуться в раздел «Расширения», найти в списке Pathauto, нажать рядом с ним галочку, а затем нажать внизу страницы кнопку «Установить».

Настройка модуля Pathauto

Для настройки модуля нужно перейти в раздел «Расширения». Затем кликнуть на описание расширения Pathauto. И в открывшемся меню нажать «Настройте». Откроется окно «Шаблоны». Здесь нужно кликнуть «Добавить шаблон».

Добавление шаблона в Drupal

В поле «Тип шаблона» нужно выбрать, для чего будет применять шаблон: для содержимого, мультимедиа, типов таксономии или пользователей. В зависимости от выбранного типа откроются дополнительные настройки. Нужно заполнить все поля, помеченные звёздочкой. После внесения всех необходимых параметров следует нажать кнопку «Сохранить». После чего страницы в соответствующих разделах начнут получать ЧПУ адреса.

Была ли статья полезной?

Была ли эта статья полезна?

Есть вопрос?

хостинг для сайтов

Закажите недорогой хостинг

Заказать

всего от 290 руб

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Don t like синонимы
  • Dominant синоним
  • Domestic appliance синоним
  • Domain синонимы
  • Dolce vita синоним