2014-06-24 45 views
0

我需要以編程方式刪除節點顯示上的圖像字段。Drupal 7 hook_node_view刪除視圖生成的內容

要做到這一點我的模塊實現hook_node_view,我可以在$節點 - >內容它禁止顯示節點頁面上取消設置數據。 但是,由於Views生成圖像,因此它不在$ node-> content中表示。

任何人都可以提出一個解決方案,將允許我從模塊中刪除視圖生成的內容?

回答

1

如果您正在使用意見生成您的節點,我會建議你取消設置在template_preprocess_views_view(&$vars)你的領域,你可以通過$vars['view']->result這與您的視圖中顯示的所有行的數組訪問它。然後,您可以搜索每行中的字段並取消設置。

例如,對於像場結構:

function template_preprocess_views_view(&$vars) { 
    foreach($vars['view']->result as $test){ 
    $test->field_field_image[0]['rendered']['#access'] = FALSE; 
    } 
} 

我希望它幫助。

+0

感謝偉大的建議。儘管它可以提供幫助,但它會移除整個網站的視圖。我只需要它在特定節點上刪除它。由於沒有節點數據,我無法檢查 – sisko

+0

如果特定節點與特定內容類型相關,則檢查不會有問題。但是,如果它是隨機的,你別無選擇,只能檢查每個nid。祝你好運。 – Djouuuuh

0

感謝@justinelejeune的努力,我找到了一個更簡單的解決方案。

實施hook_node_view,可以正好被清除目標字段或將字段陣列爲空白即:

function mymodule_node_view($node, $view_mode, $langcode){ 
    if($view_mode != 'full') 
     return; 

    unset($node->field_banner); // or  $node->field_banner = array(); 

}