Jak renderować linki kontekstowe dla bloków renderowanych w kodzie?


11

Załadowałem temat bloku i treść module_invoke()i użyłem ich render()do renderowania. Chcę użyć linków kontekstowych dla tego bloku. Jak mogę je również renderować?

To jest kod, którego używam w szablonie strona - front.tpl.php.

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

Jakiego kodu powinienem użyć zamiast tego?

Odpowiedzi:


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

Szkoda, że ​​do tego celu musimy użyć funkcji prywatnych z modułu blokowego (_ * ()).


Tak więc dla przykładu PO byłoby to: $ block = block_load ('block', '4');
Cameron

12

Odpowiedź Barta da ostrzeżenie o ścisłych standardach (domyślnie włączone w PHP 5.4). Aby to naprawić, po prostu użyj zmiennej pośredniej dla tablicy do renderowania:

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

Przyczyną tego ostrzeżenia jest to, że drupal_renderfunkcja oczekuje, że jej parametr będzie referencją. Ma podpis drupal_render(&$elements). Aby uzyskać więcej informacji, zobacz odpowiedź na to podobne pytanie .


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.