Как программно вывести пользовательские пути для ссылок узлов Drupal (без PathAuto)?
Я хотел бы иметь возможность программно изменить выводимый путь к узлу Drupal без использования модуля PathAuto . В настоящее время мы обрабатываем большой объем контента (тысячи статей в день), который добавляется на серверной части. Вместо того, чтобы использовать PathAuto для создания псевдонимов пути, я хотел бы, чтобы Drupal выводил ссылку по умолчанию, но добавлял частичный заголовок для лучшего SEO.
Примером этого может быть:
/ узел / 123
будет изменен на
/node / 123 / This-is-the-article-title (этот путь в настоящее время будет работать для существующего узла)
Я понимаю, как это сделать на основе темы, изменив шаблоны темы / представления, но я хотел бы сделать это так, чтобы в любое время ссылка на узел отображалась в любом месте, она добавляла заголовок плагина.
Кроме того, я хотел бы ограничить его определенным типом контента (например, "статья").
Я использую Drupal 5.x и я бы предпочел не использовать PathAuto (я не хочу хранить сотни тысяч псевдонимов пути, если это не нужно)
Я ищу решение, которое не использует PathAuto
Ответы - Как программно вывести пользовательские пути для ссылок узлов Drupal (без PathAuto)? / How do I Programmatically Output Custom Paths for Drupal Node Links (w/o PathAuto)?

03.06.2009 08:57:43
Drupal имеет внутренний механизм для отображения от "/ node / 1234/ " до "/ blogs / look-at-what-my-cat-just-did". Это часть основной системы, и используется почти везде, по каждому запросу, даже без необходимости спрашивать. Это достаточно быстро, вы почти никогда не заметите, что это происходит - в drupal есть много других вещей, которые намного медленнее.
Если вы обеспокоены тем, как URL-адреса отображаются на интерфейсе-вы должны использовать функцию url () (и фильтры, которые делают то же самое с содержимым узла) для обработки запросов, идущих в другую сторону.
Когда вы создаете или редактируете контент, он генерирует несколько записей в таблице url_alias Drupal (на основе любых правил pathauto, которые вы создали). Это одноразовая стоимость. Если вы не генерируете контент с астрономической скоростью - есть незначительная стоимость, связанная с этим.
Вы уже оплачиваете стоимость поиска псевдонимов URL, просто используя Drupal. Без взлома ядра, вы не можете действительно избежать этого. Хранение "сотен тысяч псевдонимов путей" в базе данных не так уж и важно - если вы разбиваете это на фактические требования к хранилищу, вы смотрите только на несколько мегабайт. Поскольку таблица хорошо индексируется, поиск будет практически мгновенным. Это основная функциональность и происходит независимо от того, что Pathauto даже находится в вашей системе.
Если у вас нет каких-то очень странных требований к типам URL-адресов, на которые вы хотите сопоставить свои узлы, все, что вы делаете, будет просто воссоздавать подмножество существующей функциональности Pathauto (и, вероятно, вводить кучу новых ошибок).





24.06.2009 01:16:58
Вы можете попробовать использовать эти две функции:
http://api.drupal.org/api/function/custom_url_rewrite_outbound http://api.drupal.org/api/function/custom_url_rewrite_inbound
Но на самом деле, Pathauto-это "правильный" способ сделать это.

01.11.2019 04:27:03
вы можете задать свой собственный псевдоним пути для каждого типа узла без использования модуля path auto:
- установите модуль правил, Если вы этого еще не сделали.
- создайте правило с событием "перед сохранением содержимого типа "ваш тип"
- добавьте действие php, а затем создайте свой собственный путь и выполните следующие действия:
- $node - >path ['alias'] = ваш пользовательский псевдоним пути
- нажмите Сохранить и все готово
если вы не хотите использовать модуль правил, вы можете использовать hook_node_presave вместо этого в своем пользовательском модуле