Что такое 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
Базовый функционала для сайта сделан, все приведено к более-менее подобающему виду. Но осталась одна нерешенная проблема — адреса страниц.
Все адреса в 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, ибо многие этим обеспокоены. Поисковые системы понимают что это коротки адрес статьи, а оригинальный тот что с ЧПУ. Это хорошо видно в исходном коде страницы.
Доработанная и исправленная статья о формировании красивых синонимов 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 на что-то более понятное человеку.
Всё это так, и написано об этом тоже уже много. Но мне этого недостаточно. Я искал возможность максимально автоматизировать формирование алиасов, вместе с тем сохранив определённую гибкость в их создании. Попробую объяснить, что же именно я хотел.
Задачи.
Итак, я бы хотел:
- Сделать формирование всех алиасов максимально прозрачным, с тем, чтобы ввод синонима URL или не требовался (пусть Drupal сделает это за меня) или же был предельно простым.
- Мне нравится, когда URL’ы включают в себя расширение «.html». Согласен, это мега-архаизм и излишество, но такая уж у меня слабость. В общем, я хочу, чтобы все сформированные Drupal’ом ссылки на моем сайте имели на своём конце старое доброе «.html».
- Заставить Drupal формировать синонимы URL, учитывающие принадлежность документа к определенной категории (т.е. термину таксономии) и соответственно наследующие синоним, ранее определённый мною для этой категории.
- Наконец, определить различные правила формирования синонимов для различных типов содержания.
- Например, я бы хотел, чтобы для блоговых нодов это было наподобие: 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 с помощью тем.
Опубликовано 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]
В результате все термины из одного поля записываются через дефис.
A Simple Guide to Understanding and Using URLs
Ever Wondered What «URL» Means? Here’s the Definition and More
If you enter online sweepstakes, you’ll hear the term «URL» frequently. For example, a friend might tell you to go to a certain URL to find a giveaway, or you could discover that you can receive extra entries for sharing a company’s URL on social media.
If you’re not very computer-savvy, you might be confused. What does URL mean? What does the acronym stand for? And why are URLs important?
Here’s a quick and easy guide to understanding URLs, which will make it easier for you to enter online sweepstakes and, in general, to navigate the internet.
«URL» is an acronym that stands for Universal Resource Locator. You might know it as the text that you type into your internet browser when you want to go to a website.
In its most common form, a URL starts with «http://» or «https://» followed by «www,» then the website name. That can then be followed by the address of directories on that web page, followed by the location of specific pages.
For example, the URL for Contests and Sweepstakes on Live About is https://www.liveabout.com/contests-5202140. When you want to visit the site, you simply open your web browser and type that URL into the address field.
A specific page on that website would have a longer URL. For example, here’s the URL to the page about how lottery pools work: https://www.liveabout.com/lottery-pools-what-they-are-and-how-they-work-892822.
The web page is the «resource» that your browser is «locating» for you with a URL. The «universal» part of the URL acronym comes in because URLs can help you locate other types of resources as well, including images, videos, PDF files, and more.
URL Synonyms
A URL is also called a web address because it works like a house address. You can use a house address to find the location of a friend’s home or store you want to visit. Your browser uses a URL to tell it where to go to find the web page you want to visit. Internet address is another synonym for URL.
How Do URLs Work?
URLs are meant to be easy for people to remember and to use. However, computers need to have information presented to them in a different way.
Your web browser finds web pages using an IP, or Internet Protocol. The IP is a series of numbers, which look something like: 69.171.224.11.
Imagine if you had to remember a number like that for every website that you wanted to visit. The internet would not have become so popular if that were necessary! It’s far easier to use a word-based URL like https://www.liveabout.com/.
Furthermore, not every site has a static, or permanent, IP. Some IPs change on a regular basis, which would make it nearly impossible to go directly to the websites you want to visit.
So instead of trying to memorize IPs, we use URLs, which generally stay the same and make sense to our brains.
When you type a URL into an address field, your web browser uses something called a DNS (Domain Name Server) to translate the URL to the corresponding IP. The browser can then use the IP number to bring you to your desired destination.
The Anatomy of a URL:
A URL usually looks something like this:
- It (usually, but not always) starts with «http://» or «https://»
- Often followed by «www»
- Then the name of the website you want to visit
- Followed by specific directories where the information you want to read is stored, separated by / marks
- Finally, the location of the page you want to read.
Take, for example, The HGTV Dream Home Sweepstakes page has this URL: https://www.hgtv.com/sweepstakes/hgtv-dream-home.
To compare it with the breakdown above, this URL:
- Starts with https://.
- Is followed by www.
- And then the name of the website: hgtv.com.
- Followed by a directory: sweepstakes.
- And finally, the specific page you’re looking for: hgtv-dream-home.
If you want, you can click the link above to be brought to that page and see for yourself how it works.
The Difference Between Links and URLs
Links are not the same as URLs, though sometimes people say «link» when they mean «URL.» For example, «Type the link into your web browser.»
A link is a clickable snippet of text associated with a URL. Clicking on the link brings you to the page the URL points to. This saves you time, letting you easily explore associated web pages without having to copy and paste URLs into your browser.
Example:
Here, you can see the difference between the two terms:
- URL: https://www.liveabout.com/contests-5202140
- Link: Contests on LiveAbout
They both go to the same place, but one takes you directly there with a click.
In most browsers, if you hover over a link (hold your mouse over the link without clicking it), you can see the associated URL at the bottom of the browser window. It’s a good idea to do this before clicking on any link so you know where that click brings you. If the URL looks different than you expect, you might be going to a phishing site.
Secure URLs
A URL that starts with «https://» indicates that you’re on a secure site. That means that if you enter personal information on that site, it will be encrypted before it’s transmitted. Encrypted information cannot be easily intercepted by hackers.
While most sites use https these days, it’s especially important if you’re transmitting sensitive information. Any website that requests personal information, such as credit card information, should use a secure protocol in its URLs so that your information cannot be intercepted and misused.
Many sweepstakes websites will use https in the URL of their entry forms so your personal information is safe when you submit your entry.
Read How-to-Geek’s What Is HTTPS and Why Should I Care? for more information.