2010-08-17 533 views
1

我在顯示自定義內容頁面上的塊時遇到很大麻煩。Drupal - 自定義內容類型中的自定義區域

所以這裏的問題; 我想要在自定義內容類型Y的節點上顯示塊X. 我不希望此塊顯示在每個頁面上,只顯示具有給定內容類型的塊。

如果我在自定義內容頁面模板(例如Y.tpl.php)上定義自定義區域Z,則無法在此處顯示區域內容($ Z),因爲該變量顯示爲空。 如果我在page.tpl.php中定義了非常相同的區域,我可以毫無問題地打印區域內容。

所以我認爲問題是區域變量($ Z)不會傳遞到自定義內容頁面上。有什麼辦法可以實現這種行爲?

回答

0

使用內容類型頁面上顯示的特殊區域不是一個乾淨的解決方案,只顯示特定內容類型的節點的塊。 Drupal會爲每個頁面在內存中渲染塊。相反,您可能需要使用menu_get_object()來控制塊的可見性,使用一些PHP代碼來獲取當前節點及其類型。

$node = menu_get_object(); 
return $node && $node->type == 'custom-content-type'; 

應顯示任何/node/$uid/node/$uid/*頁面的塊。爲了避免顯示上/node/$uid/*網頁塊,下面應該工作

$node = menu_get_object(); 
return $node && $node->type == 'custom-content-type' && !arg(2); 
0

你可以用上下文做到這一點 - 因爲你的頁面要塊>http://drupal.org/project/context

在有路徑,節點/%NID或乾淨的網址,您可以設置上下文以僅在該區域中顯示特定的區塊。