it-swarm-ko.tech

동일한 뷰를 폼 블록에 두 번 표시하는 방법은 무엇입니까?

블록에서 노출 된 동일한 뷰를 두 번 표시하려고합니다. 왼쪽 탐색 메뉴에서 한 번, 콘텐츠 상단에서 한 번 다중 블록을 사용하면 블록을 복제 할 수 있으며 둘 다 표시 할 수 있습니다. 그러나 왼쪽 탐색 양식에 필터가 덜 노출되도록하고 싶습니다.

문제는 hook_form_alter()hook_preprocess_views_exposed_from()에 양식을 변경하기 위해 확인할 수있는 고유 식별자가 없다는 것입니다. 그것은 후크를 두 번 통과하지만 왼쪽 탐색 양식 또는 콘텐츠 상단 양식을 처리하는지 알 수없는 것 같습니다.

누구든지 이것에 대한 통찰력이 있습니까?

아래 코드 2를 사용하여 뷰 2에서 작동하고 내 블록을 만들고 양식을 렌더링하려고했습니다. 그러나 뷰 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;

잘못된 방향으로보고 있습니까?

6
Jepedo

이 코드는 나를 위해 일했습니다. 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> 동일한보기의 디스플레이를 하나 더 추가하고 해당 디스플레이에 대한 필터를 재정의 할 수 없습니까? 귀하의 질문을 올바르게 받으면 그렇게해야합니다.보기에서 2 개의 diff 버전의 노출 된 필터를 원합니다.

멀티 블록 문제에 대한 제안 :

2> 컨텍스트 페이지- http://drupal.org/project/context 를 사용하여 동일한 페이지의 여러 블록과 기타 블록 가시성 문제를 처리합니다. 이 문제는 현재 당면한 문제를 해결하지는 못하지만 멀티 블록 및 블록 클론 전략에 비해 더 나은 방법입니다.

2
Dipen

다른 코드를 사용하여 뷰 양식이있는 블록을 만듭니다 (다른 이유로 양식을 페이지 콜백으로 표시하지만 여전히 작동해야 함).

 $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