2011-10-12 2 views
0

질문하는 방법이 확실하지 않으므로 더 이상 추가 정보가 필요하지 않으면 요청하십시오.드루팔 (Drupal) 필터가 제대로 작동하지 않습니다.

상황
웹 사이트는 3 개 언어로 제공됩니다. 나는 각 섹터에 연결된 고객 사례를 온라인으로 많이 확보하고 있습니다 (섹터가 속한 분야에 따라 다름). 각 섹터 및 참조에는 고유 한 nid이 있습니다. 내 template.php에서

는이 같은 진술 것 :

if ('sector' == $vars['node']->type) { 
     $lang = '/'.$vars['language'].'/'; 

     $key_path = $_SERVER['REQUEST_URI']; 
     $key_path = substr_count($key_path, $lang) ? substr($key_path, strlen($lang)) : $key_path; 
     if (strpos($key_path, '?')) $key_path = substr_replace($key_path, '', strpos($key_path, '?')); 

     if (strpos($key_path, 'sectors-references') === 0) {   
      $view = views_get_view('references'); 
      if (!empty($view)) { 
       $view->set_arguments((int)$vars['node']->nid); 
       $vars['content']['suffix'] = $view->render(); 

      } 
     } 
    } 

그럼에도 불구하고이 모든 분야는 나에게 같은 참조를 보여줍니다 ... 내가 올바른 분야에서 올바른 참조를 얻기 위해 변경해야합니까?

+0

'echo $ vars [ 'nid'] = $ view-render(); 확실히 그것은'$ vars [ 'my_var'] = $ view-> render();'아니면 질문에 오타가있는 것일까? – Clive

+0

오, 젠장, 네 말이 맞아. 내 실수를 바로 잡았어! – Michiel

답변

2

일반적으로 인수는 배열을 사용하여 set_arguments으로 전달됩니다. 배열이 아닌 경우 인수는 무시되므로 항상 동일한 결과가 발생합니다. 시도해보십시오 :

$view->set_arguments(array((int)$vars['node']->nid)); 
+0

신난다 !! 너 해결 했어! 아마도 당신은 추가 설명을 해줄 수 있습니까? – Michiel

+1

나는 그것을 설명하는 가장 쉬운 방법은'set_arguments'가 첫 번째 매개 변수가 뷰의 인수 배열이 될 것으로 기대한다는 것입니다. 그렇게하면 함수에 임의의 수의 매개 변수를 가져 와서'func_get_args' 또는 비슷한 것을 실행하는 대신 배열을 통해 실행할 수 있습니다. 비 배열을 매개 변수로 전달했기 때문에'set_arguments' 함수는 무시했습니다. 따라서 필터링 된 결과가 아닌 * 모든 결과를 얻을 수 있습니다. – Clive

관련 문제