2011-10-12 135 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

相關問題