it-swarm-es.com

¿Cómo mostrar las mismas vistas expuestas bloque de formulario dos veces?

Estoy tratando de mostrar las mismas vistas expuestas desde el bloque dos veces. Una vez en el navegador izquierdo y una vez en la parte superior del contenido. Con el bloqueo múltiple, puedo clonar el bloque y puedo mostrar ambos. Sin embargo, me gustaría que el formulario de navegación izquierdo tenga filtros menos expuestos.

El problema es que en hook_form_alter() y hook_preprocess_views_exposed_from() no hay identificadores únicos que pueda verificar para alterar el formulario. Se ejecuta a través de los ganchos dos veces, pero parece que no puedo saber si estoy tratando con el formulario de navegación izquierdo o el formulario superior de contenido.

¿Alguien tiene alguna idea de esto?

Probé el siguiente código que funciona para las vistas 2 e iba a crear mi propio bloque y renderizar el formulario. Pero no puedo hacer que el código funcione para las vistas 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;

¿Estoy mirando en la dirección equivocada?

6
Jepedo

Este código me funcionó. Estoy usando Views 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> ¿No puede agregar una pantalla más de la misma vista y anular los filtros para esa pantalla? Si recibo su pregunta correctamente, entonces eso debería hacerlo, desea 2 versiones diff de filtros expuestos en bloque desde una vista.

Sugerencia para el problema de bloque múltiple:

2> Prefiero usar el módulo de contexto - http://drupal.org/project/context para lidiar con múltiples bloques iguales en la misma página y otros problemas de visibilidad de bloques. Esto probablemente no resolverá el problema actual, pero es una mejor práctica en comparación con las estrategias de clones de bloque múltiple y bloque.

2
Dipen

Utilizo un código diferente para crear un bloque con un formulario de vistas (por un motivo diferente, para mostrar el formulario como una devolución de llamada de página, pero aún debería funcionar).

 $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