it-swarm-eu.dev

Jak zobrazit stejné pohledy exponovaný blok formuláře dvakrát?

Pokouším se dvakrát zobrazit stejné pohledy odkryté z bloku. Jednou v levé navigaci a jednou v obsahu nahoru. Pomocí multi bloku mohu klonovat blok a jsem schopen zobrazit oba. Chtěl bych však, aby levá navigace měla méně vystavené filtry.

Problém je v tom, že v hook_form_alter() a hook_preprocess_views_exposed_from() neexistují žádné jedinečné identifikátory, které mohu zkontrolovat pro změnu tvaru. Prochází háčky dvakrát, ale nevím, jestli vím, jestli mám co do činění s levým navigačním formulářem nebo horním formulářem s obsahem.

Má někdo vhled do toho?

Vyzkoušel jsem kód, který funguje pro zobrazení 2 a chystal se vytvořit svůj vlastní blok a vykreslit formulář. Ale nemůžu dostat kód pracovat pro zobrazení 3.

$view = views_get_view('brands');
$view->set_display('page_2');
$view->init_handlers();

$form_state = array(
  'view' => $view,
  'display' => $view->display_handler->display,
  'method' => 'get',
  'rerender' => TRUE,
  'no_redirect' => TRUE,
);

$output = drupal_build_form('views_exposed_form', $form_state);
$blocks['content'] = $output;

Dívám se špatným směrem?

6
Jepedo

Tento kód pro mě pracoval. Používám Zobrazení 6 Alpha 4.

$view = views_get_view('your_view');
$view->set_display('the_display_you_want_that_have_a_exposed_block');
$view->init_handlers();
$exposed_form = $view->display_handler->get_plugin('exposed_form');
print $exposed_form->render_exposed_form(true);
3
Luis Aveiga

1> Nemůžete přidat další zobrazení stejného zobrazení a potlačit filtry pro toto zobrazení? Pokud dostanu vaši otázku správně, pak by to mělo být provedeno, chcete z pohledu zobrazit 2 rozdílné verze exponovaných filtrů v bloku.

Návrh na problém s více bloky:

2> Raději bych použil kontextový modul - http://drupal.org/project/context k řešení více stejných bloků na stejné stránce a dalších problémů s viditelností bloků. Tato prolly nevyřeší současný problém, který je po ruce, ale je to lepší postup ve srovnání se strategiemi multi-block a block clone.

2
Dipen

Používám nějaký jiný kód k vytvoření bloku s formulářem zobrazení v (z jiného důvodu pro zobrazení formuláře jako zpětné volání stránky, ale mělo by to stále fungovat).

 $module = 'views';
 $delta = '-exp-my_block_id';
 $block = (object) module_invoke($module, 'block', 'view', $delta);
 $block->module = $module;
 $block->delta = $delta;
 return theme('block', $block); 
0
Jeremy French