Вопрос

У меня проблема с путями Drupal в одном представлении, которое я создаю.Прямо сейчас мое мнение имеет следующую форму:содержание/2/6.

Где 2 и 6 — это идентификаторы двух узлов, я хотел бы манипулировать этими идентификаторами, чтобы перевести их, скажем, названия этих узлов.

Я не могу сделать это из представления, потому что я отправляю эти значения на панель, и панель ДОЛЖНА получить идентификаторы узлов.

Подводя итог, я просто хочу переписать (как это делает pathauto) эти идентификаторы в заголовок, могу ли я это сделать?Есть ли для этого специальный модуль?

Спасибо!

Это было полезно?

Решение

Если я вас правильно понимаю, вы хотите сохранить исходные пути «content/[nid_x]/[nid_y]», но добавить дополнительные псевдонимы URL для тех, у кого больше «говорящих» элементов пути из узлов (например,титулы).Если это верно, у вас есть два варианта:

Во-первых, вы можете сделать это вручную, определив псевдонимы URL-адресов для «content/[nid_x]/[nid_y]» в разделе «admin/build/path/add».Это легко сделать, но, вероятно, это не то, что вам нужно, если вам нужно много таких псевдонимов.

Во-вторых, это можно сделать программно с помощью path_set_alias() функция.Использование функции довольно простое — единственная проблема может заключаться в том, где ее вызвать.Из вашего описания мне неясно, где и когда создаются эти представления, поэтому трудно придумать предложение - возможно, вы можете отредактировать свой вопрос, чтобы сделать его более конкретным.

Если вы хотите создать псевдонимы URL-адресов представления для определенных комбинаций узлов, вы можете попробовать использовать операции «вставка», «обновление» и «удаление» hook_nodeapi() чтобы инициировать создание псевдонима.Очевидно, что это будет работать только в том случае, если существует последовательное правило, которое позволит вам решить из кода, для каких узлов создавать псевдоним или нет.

Если у вас есть псевдоним URL-адреса для определенного пути, он будет использоваться вместо исходного всякий раз, когда ссылка на этот путь создается через л() функция.Так, например.если вы создадите запись меню, указывающую на «content/2/6», используемый URL-адрес автоматически станет псевдонимом, который вы создали для этого пути.


Редактировать:На всякий случай, если вы в конечном итоге создадите псевдонимы программно. Если вы все равно используете pathauto, вы можете/должны использовать его pathauto_cleanstring()(из «pathauto.inc»), чтобы гарантировать, что ваши сгенерированные URL-адреса правильно экранируются/перезаписываются на разрешенные символы.

Другие советы

Существует способ использовать функцию пользовательского URL-адреса для создания специальных URL-адресов.Если вы используете панели, я не уверен, захотите ли вы сделать это таким образом, потому что он очень статичный.

function custom_url_rewrite($op, $result, $path) {

  if ($op == 'alias') {
    if (preg_match('|^[node_id#_here](/{0,1}.*)|', $path, $matches)) {
      return '[desired_alias]'. $matches[1];
    }
  }

  if ($op == 'source') {
    if (preg_match('|^[node_id#](/{0,1}.*)|', $path, $matches)) {
      return '[desired_source]'. $matches[1];
    }
  }

  return $result;

}

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

Возможно, также полезно:

измените исходные ссылки, используя представление для создания ссылки с использованием замены токена, например <a href="nodeview/[title]/nid" title="[title]">link tekst</a> и обработать узел в представлении с помощью пути exa nodeview и аргументов null, null, nid f.i.

для более запутанных ссылок используйте поле просмотра php для построения строки..

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top