Как получить все пути в drupal install

Мне нужно написать модуль, который дает мне страницу, все возможные пути установки drupal, включая осиные страницы. (карта сайта не будет работать для этого).

Я могу запросить таблицу url_alias для псевдонимов, и я могу запросить таблицу menu_router для всех путей, даже те, которые установлены в отображениях страниц/каналов в представлениях. Но переменные пути (те, у которых есть аргументы) интерпретируются во время выполнения.

Итак, есть ли способ получить все возможные пути установки drupal, включая динамические пути и сироты? Это поймать22. Я должен заранее знать все URL-адреса, чтобы их получить.

3 ответа

Итак, вы можете определенно получить все возможные пути в drupal, запросив таблицу url_alias (которая дает вам все псевдонимы) и menu_router, что дополнительно даст вам пути, заданные страницами или отображениями фида. Проблема остается в том, что вы не можете заполнить переменные в переменных путях в таблице menu_router. Вы должны знать в каждом случае, какие переменные могут быть, поскольку Drupal заполняет их во время выполнения.

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


Вы можете проверить функцию menu_edit_validate(), чтобы узнать, как drupal проверяет, имеет ли ссылка для нового элемента меню действительный путь.

Я не думаю, что можно получить список всех возможных путей, включая те, в которых есть значения переменных. Суть такого динамического пути состоит в том, что он может принимать несколько значений. Конечно, вы можете прокручивать пункты меню, а когда вы сталкиваетесь с node/% node/edit, добавьте новый элемент в свой список для каждого идентификатора node в вашей базе данных. Однако я не вижу, как это может быть полезно для чего угодно....

Можете ли вы объяснить, какую проблему вы пытаетесь решить? Возможно, мы сможем помочь вам найти еще лучшее решение.


Все возможные пути в самом Drupal? В таблице menu_links должно быть указано все зарегистрированные в системе пути.

licensed under cc by-sa 3.0 with attribution.