it-swarm-eu.dev

Programově tisknout blok

Zatím používám tento kód, který funguje dobře pro tisk bloků modulů třetích stran.

<?php
    $block = module_invoke('views', 'block_view', 'og_members-block_1');
    print render($block);
?>

Nyní se však snažím vytisknout blok, který žije v mé složce motivů, a nedokážu přijít na to, jak na to. Jak toho mohu dosáhnout?

2
silkAdmin

Existuje způsob, jak programově vytisknout blok v souboru tpl.

Pro 'moduly' definované bloky můžete použít block_load() viz: block_load op api.drupal.org

Pokud máte blok definovaný přes rozhraní bloku, nazývá se vlastní blok, který můžete použít block_custom_block_get($bid) see: block_custom_block_get () na api.drupal.org

$block = block_custom_block_get(1);
$content = $block['body'];
13
michaelmol

Zdá se, že si věci trochu pletete.

Vaše metoda, kterou používáte v příkladu kódu, je pěkně znějící, vyvolá hook_block_view pro modul touhy s určitou deltou bloku. Tato metoda funguje dobře, protože jediný způsob, jak vytvářet bloky, je pomocí háčků, které blokový modul definoval.

To znamená, že motiv nemůže vytvořit blok a nemůžete načíst blok z motivu. Místo toho byste ji museli implementovat do modulu. Pokud tak učiníte, umožní vám použít metodu, kterou jste sami popsali.

6
googletorp

Je to pro mě práce v Drupal 7.

$block = block_load('block', 'block_id');
$output =_block_get_renderable_array(_block_render_blocks(array($block)));
$res_output = drupal_render($res_output);
print render($res_output);
2
arulanpari

Programově tisk bloku v souboru tpl.

$view = views_get_view("block-name");
print $view->preview("block");
1
mvd