2014-10-17 25 views
0

我不得不通過創建自定義視圖區域處理程序來完成任務。這一切都很好,我可以通過視圖UI將處理程序放入標題區域。不幸的是,由於這個項目的部署結構,我不能只更新與視圖相關的代碼。我創建自定義區域處理程序的模塊也需要更改視圖以將區域處理程序放入標題中。如何以編程方式將自定義視圖區域處理程序放入視圖標題中?

我創建的視圖區處理程序細跟下面的代碼:

/** 
* Implements hook_views_data(). 
* 
* Purpose: Establish a views area handler for displaying. 
*/ 
function custom_shipping_notification_views_data() { 
    // Initialize data array. 
    $data = array(); 

    // Define a handler for an area used to display if qualifies for free ship. 
    $data['commerce_order']['free_shipping_message'] = array(
    'title' => t('Free Shipping Notification'), 
    'help' => t('Displays the free shipping notification on cart form.'), 
    'area' => array(
     'handler' => 'custom_shipping_notification_handler', 
    ), 
); 

    // Return data. 
    return $data; 
} 

這一切的作品,所以我不會進入處理程序本身。我可以通過視圖UI放置這個沒問題。我需要將其放置在特定視圖的標題中。該視圖由功能管理,但由於客戶端部署和回購結構,我無法合理更改該功能。我需要改變包含自定義區域的模塊內部的視圖。

我已經嘗試使用此代碼無濟於事:

function custom_shipping_notification_views_pre_build(&$view){ 
    if ($view->name == 'commerce_cart_form') { 
    $id = $view->add_item('default', 'header', 'views', 'free_shipping_message'); 
    } 
} 

人有什麼想法?由於add_item方法具有單行描述,並且沒有編碼示例,所以我顯然進入了模糊的領域。圍繞這個區域的大部分文檔同樣沒有開發。

回答

1
function YOURMODULENAME_views_pre_view(&$view, &$display_id, &$args) { 
    if($view->name == 'YOURVIEWNAME' && $display_id == 'YOURDISPLAYID') { 
     $footer = "This is the text that I want in my footer!!!!"; 
     $options = array(
     'id' => 'area', 
     'table' => 'views', 
     'field' => 'area', 
     'empty' => FALSE, 
     'content' => $footer, 
     'format' => 'filtered_html', 
     'tokenize' => 0, 
    ); 
    $view->set_item('YOURDISPLAYID', 'footer', 'area', $options); 

    } 
} 
相關問題