Drupal: автоматически добавьте пункты меню, когда новые узлы будут добавлены

я могу автоматически добавить пункт меню, когда я добавляю узел к странице в Drupal?

Другими словами, я могу связать родителя меню с типом контента узла и затем автоматически добавить детей, если новые узлы добавляются?

спасибо

5
задан aneuryzm 2 July 2010 в 05:59
поделиться

2 ответа

Да.

Я уверен, что есть модуль для чего-то подобного, но вы также можете создать свой собственный.

Есть два способа сделать это.

Вы можете использовать hook_menu() для запроса нужных вам пунктов и возврата правильной структуры меню. Вам также нужно убедиться, что кэш меню перестраивается при сохранении узла с помощью hook_nodeapi(). См. комментарии henricks ниже о том, почему это плохая идея

В качестве альтернативы вы можете использовать hook_nodeapi() для добавления пользовательских пунктов меню с помощью menu_link_save().

Edit

hook_menu должен возвращать массив пунктов меню, часто они довольно статичны, однако нет ничего плохого в том, что эти массивы будут генерироваться динамически.

Таким образом, вы можете запросить таблицу узлов, чтобы получить список нужных вам узлов, просмотреть эти элементы и динамически создать массив, содержащий нужные пункты меню.

очень грубо:

function example_menu() {
  $result = db_query('select * from node where ...'); // put in your own select items and where clause
  $menu = array();
  while ($row = db_fetch_object($result)) {
    $menu['my_path/' . $row->nid;] = array(
      // See hook menu docs for what to put here.
    );
  }
  return $menu;
}
1
ответ дан 14 December 2019 в 13:25
поделиться

Вам стоит взглянуть на модуль Auto Menu - пока версия Drupal 6 находится в стадии разработки, он может покрыть ваши потребности. Если нет, вы можете взять его в качестве примера использования menu_link_save() для создания собственного решения.

0
ответ дан 14 December 2019 в 13:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: