Как узнать идентификатор блока?

$block = module_invoke('menu_block', 'block', 'view', 26); 
print $block['content'];

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

6 голосов | спросил Remy 22 J0000006Europe/Moscow 2011, 03:51:43

2 ответа


2

Вам просто нужно искать hook_block () выполняется из модуля, для которого вы вызываете module_invoke(). Последним аргументом в вызове функции, о котором вы сообщили, является параметр $delta, который используется из Drupal для идентификации блока внутри модуля.

Например, глядя на код forum_block () , часть кода, реализующего операцию« списка », 0 - параметр дельта для блока« Активные темы форума », а 1 - параметр дельта для блока« Новые темы форума » .

Код, который вы написали в своем вопросе, вызывает реализацию hook_block, сделанный из модуля с коротким именем - menu_block (что означает функция, реализующая hook, - это menu_block_block()). Если вы хотите вызвать реализацию hook_block(), сделанный из menu.module, тогда код должен быть следующим:

$block = module_invoke('menu', 'block', 'view', 26); 
print $block['content'];

Функция, реализующая hook_block() является menu_block () . Значения, используемые в качестве $delta для этой функции, являются значениями поля «menu_name», используемого в таблице «menu_custom».

ответил kiamlaluno 22 J0000006Europe/Moscow 2011, 10:20:27
1

Как вставить блокировать в tpl или в контент программно с помощью Drupal

См. раздел «Где я могу получить эту информацию для блока, который я пытаюсь позвонить?» внизу ...

Поскольку он был удален с сайта, я помещаю текст из истории кеширования сайта:


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

Самый простой способ - перейти на страницу блоков и навести курсор на ссылку «configure». Не нажимая на ссылку в левом нижнем углу браузера (по крайней мере, с Firefox), вы должны увидеть URL-адрес, по которому вы будете нажимать. Важная информация, которая вам нужна, находится в двух последних элементах URL-адреса. Поэтому, если URL-адрес ссылки - admin /build /block /configure /jquerymenu /0, то модулем, который создал этот блок, является блок jquerymenu, а $ delta (или номер блока) - 0.

Итак, чтобы просмотреть, код примера вызывает module_invoke со следующими аргументами: «jquerymenu», «block», «view», 0. То, что это делает, - это вызвать модуль jquermenu, он называет его hook_block, сообщает ему, что ему нужна информация, которая возвращается в $ op = 'view', и что она хочет только информацию из блока с $ delta 0.

Теперь, когда у вас есть $ block (который является массивом), вам нужно получить от него элемент «content», вызвав $ block ['content']. Вы также можете назвать заголовок, используя $ block ['title'].

Я надеюсь, что этот фрагмент кода имеет смысл для вас. Дополнительную информацию о module_invoke можно найти на странице http://api.drupal.org/api/function/module_invoke .

ответил Nikit 22 J0000006Europe/Moscow 2011, 06:28:19

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

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132