Як зробити візуальні контекстні посилання для блоків, які я надаю в коді?


11

Я завантажив об'єкт і вміст блоку module_invoke()і використовував їх render()для надання. Я хочу використовувати контекстні посилання для цього блоку. Як я можу зробити їх також?

Це код, яким я користуюся шаблон шаблону insde page - front.tpl.php.

$block = module_invoke('block', 'block_view', '4);
print render($block);

Який код я повинен використовувати замість цього?

Відповіді:


16
$block = block_load('module', 'delta');
print drupal_render(_block_get_renderable_array(_block_render_blocks(array($block))));

Шкода, що для цього ми повинні використовувати приватні функції з блочного модуля (_ * ()).


Так для прикладу ОП це було б: $ block = block_load ('блок', '4');
Камерон

12

Відповідь Барта дасть попередження про суворі стандарти (включено за замовчуванням у PHP 5.4). Щоб виправити це, просто використовуйте проміжну змінну для масиву, що передається:

$block = block_load('module', 'delta');
$renderable_array = _block_get_renderable_array(_block_render_blocks(array($block)));
print drupal_render($renderable_array);

Причина, з якою виникає попередження, полягає в тому, що drupal_renderфункція очікує, що її параметр буде опорним. На ній є підпис drupal_render(&$elements). Для отримання додаткової інформації дивіться відповідь на подібне запитання .


2

Контекстуальні посилання корисні та реально прості у виконанні. Для вашого випадку використання потрібно здійснити hook_block_view_alter()зміну елемента #contextual_links відповідно до ваших потреб. Ці посилання допоможуть вам:

GL :)


1
Що означає ОП, це те, що він програмно відображає блок, але контекстні посилання не додаються.
Барт
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.