2012-10-16 42 views
1

所以我猜我可以渲染$page['content']陣列像這樣的特定元素...渲染個人頁面場1次只在Drupal 7 page.tpl.php中

<?php print render(field_view_field('node', $node, 'field_image')); ?> 

凡開箱這將使元素與標準默認值一樣。好的,那麼我怎麼才能確保手撥彈子元素不再在以後的<?php print render($page['content']) ?>調用中呈現?

爲什麼我要這樣的東西啞巴?因爲每個頁面都有一個標題圖片,其中包含幾個用於覆蓋圖,設計等的css技巧。但是並不是每個頁面都會有附件,鏈接等等......你知道,這些東西是頁面中的附加字段。所以我不能手動打印每個領域,因爲我不知道有多少或其他什麼。我所知道的確實是我上面打印的field_image包裝在一大堆樣式的標記中,並且必須以這種方式完成。其他幾個領域也是如此。

基本上我正在尋找一種方法來使用後馬上取消設置。

有誰知道如何做到這一點?我寧願不製作顯示特定頁面的視圖或自定義塊。我最終不得不將這些交給一位客戶,他們無法圍繞在CMS中許多地方管理的單個頁面進行打包。

回答

0

看起來這將工作:

<?php 
print render(field_view_field('node', $node, 'field_image')); 
MYTHEME_remove_item($page['content'], 'field_image'); 
?> 

在template.php文件中我做了這樣的功能:在我看來

function MYTHEME_remove_item(&$content, $field) 
{ 
    foreach($content['system_main']['nodes'] AS $key => $val){ 
     unset($content['system_main']['nodes'][$key][$field]); 
    } 
} 

這是荒謬的。我認爲一個像drupal一樣健壯的系統會有這樣的解決方案。如果有人知道這樣做的正確方法,我會很樂意將它們標記爲正確的。與此同時,對於其他面臨類似情況的人來說,這對我也有效。

3

實際上,您可以控制Drupal中內容類型的各個字段的顯示,而不必訴諸於您使用的功能。

由於您事先知道要抑制哪些字段,因此可以在內容類型設置中關閉其顯示。

在Drupal 7的,請參閱:
聯繫>>結構>>內容類型>>內容類型 >>管理顯示
在「格式」中選擇<隱藏>爲您要到外地忽略。

這將防止字段內容顯示在通常的節點內容中,但是field_view_field自然會起作用。

您還可以根據不同的視圖模式(例如,選擇在內容中顯示字段,但不是全部內容。