я могу автоматически добавить пункт меню, когда я добавляю узел к странице в Drupal?
Другими словами, я могу связать родителя меню с типом контента узла и затем автоматически добавить детей, если новые узлы добавляются?
спасибо
Да.
Я уверен, что есть модуль для чего-то подобного, но вы также можете создать свой собственный.
Есть два способа сделать это.
Вы можете использовать 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;
}
Вам стоит взглянуть на модуль Auto Menu - пока версия Drupal 6 находится в стадии разработки, он может покрыть ваши потребности. Если нет, вы можете взять его в качестве примера использования menu_link_save()
для создания собственного решения.