2011-02-06 2 views
0

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

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

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

Может ли кто-нибудь объяснить это поведение?

ответ

0

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

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

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

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

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

+0

Это работает. Спасибо. Приятно знать, что в файл .module автоматически включаются только крючки. – davidgenetic

+0

Drupal 7 первоначально содержал реестр функций, который автоматически анализировал все файлы и сохранял, какие функции хранятся там. Но это было снова удалено, потому что у него было слишком много недостатков, как на самом деле медленнее при использовании APC. – Berdir

Смежные вопросы