module_invoke_all не возвращает все модули - PullRequest
0 голосов
/ 07 февраля 2011

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

В модуле узла это делается путем вызова функции module_invoke_all с помощью ловушки 'node_operations'. Это возвращает массив всех модулей, которые реализуют хук 'node_operations'. В моем случае используются следующие два модуля: 'node' и 'nodewords'.

Когда я вызываю module_invoke_all ('node_operations') в моем модуле, он возвращает только модуль 'nodewords', а не модуль 'node' Это потому, что функция 'node_node_operations' не существует.

Кто-нибудь может объяснить это поведение?

1 Ответ

0 голосов
/ 07 февраля 2011

Похоже, что ловушка находится в node.admin.inc, который не включается автоматически. Смотри http://api.drupal.org/api/drupal/modules--node--node.admin.inc/function/node_node_operations/7

Это imho ошибка, вы должны посмотреть, если проблема уже есть, и если нет, создать новую.

В любом случае, в качестве обходного пути, вы можете включить файл node.admin.inc, например, перед вызовом ловушки:

<?php
module_load_include('inc', 'node', 'node.admin');
?>

(Да, странный синтаксис;))

...