Problémánkat megoldhatjuk a module_invoke() függvénnyel. Használata nem túl bonyolúlt, csak ismernünk kell, hogy milyen paramétereket vár (A függvény hivatalos oldalán elég kevés tájékoztatót kapunk erről...).
Függvényhívás:
module_invoke('modulename', 'block' , 'view', display_id);
Paraméterek:
1: A modul neve, ami a megjelenítendő blokkot készíti
2: A megjelenítés típusa. Mindig legyen 'block'!
3: A hook_blokk() operandus ($op) típusa. Mindig legyen 'view'!
4: Azonosító
1. "Hagyományos" Drupal blokk betöltése (blokk, amely megjelenik a blokkok listája oldalon - /admin/build/block/list):
$block = module_invoke('block', 'block' , 'view', '5');
print $block['content'];
2. Más modul által készített blokk betöltése:
$block = module_invoke('panels_mini', 'block' , 'view', '3');
print $block['content'];
3. Views modul blokkjának betöltése:
Itt egy kicsit változik a hívás:
$block = module_invoke('views', 'block' , 'view', 'VIEWNAME-block_ID');
tehát így:
$block = module_invoke('views','block','view','hirek_admin-block_1');
print $block['content'];
vagy így:
$block = views_embed_view('hirek_admin', 'block_1');
print $block;
vagy így:
$viewname = 'VIEWNAME';
$display_id = 'block_1'; // or any other display
$args[0] = '17';
$view = views_get_view($viewname);
$view->set_display($display_id);
$view->set_arguments($args);
$block = $view->preview();
print $block ;
2 megjegyzés:
Nézek, mint a hülye gyerek a moziban.
Blogomban nem törekszem a teljességre és arra, hogy mindenki megértse. A bejegyzéseket sokkal inkább magam számára készítem "pótmemóriának", illetve azoknak akik konyítanak valamennyit a témához.
Megjegyzés küldése