2014-10-17 55 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); 

    } 
} 
相关问题