Как программно вывести пользовательские пути для ссылок узлов Drupal (без PathAuto)?

Как программно вывести пользовательские пути для ссылок узлов Drupal (без PathAuto)?

03.06.2009 05:38:50 Просмотров 39 Источник

Я хотел бы иметь возможность программно изменить выводимый путь к узлу 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)?

Является ответом!
Sean McSomething

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 (и, вероятно, вводить кучу новых ошибок).

https://stackoverflow.com/questions/944812/how-do-i-programmatically-output-custom-paths-for-drupal-node-links-w-o-pathaut/945845#comment754013_945845
Шон-спасибо-это может быть лучшим советом. Собирая воедино этот вопрос, я почти вытащил его, понимая, что, возможно, мне нужно более внимательно посмотреть на Патауто.
https://stackoverflow.com/questions/944812/how-do-i-programmatically-output-custom-paths-for-drupal-node-links-w-o-pathaut/945845#comment837431_945845
На самом деле, я знаю, что PathAuto имеет много преимуществ, но мне интересно лучше понять, как подключиться к методу drupal для создания ссылок для узлов. Кроме того, я пытаюсь оптимизировать этот сайт, поэтому дополнительные запросы или соединения будут иметь влияние на производительность (особенно на страницах списков).
Niels

22.06.2009 10:19:50

Хотя Pathauto, вероятно, является лучшим выбором, вы можете использовать функцию hook_menu для подключения URL-адреса к методу. Этот метод может программно найти нужный узел на основе URL-адреса.

https://stackoverflow.com/questions/944812/how-do-i-programmatically-output-custom-paths-for-drupal-node-links-w-o-pathaut/1028691#comment839580_1028691
Но я также ищу другой путь ... узел, связанный в представлении списка, должен отображать правильную ссылку, или в соответствующем разделе содержимого, или в любом месте, где он отображается. В основном достичь некоторых из того, что pathauto делает, но без каких-либо запросов.
greggles

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-это "правильный" способ сделать это.

Ali_Hr

01.11.2019 04:27:03

вы можете задать свой собственный псевдоним пути для каждого типа узла без использования модуля path auto:

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

если вы не хотите использовать модуль правил, вы можете использовать hook_node_presave вместо этого в своем пользовательском модуле

Закрыть X