2011-10-12 115 views
0

我不确定如何提问,所以如果您需要更多其他信息,请索取!Drupal过滤器无法正常工作

情况
我有一个三种语言的网站。我在网上有很多客户案例,每个案例都连接到一个部门(取决于他们所属的部门)。每个部门和参考都有自己独特的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

'回波$瓦尔[ 'NID'] = $视图渲染();'??当然这应该是'$ 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

相关问题