2014-04-01 60 views
0

我想通過編寫自己的模塊來修改webform模塊的菜單設置。雖然我通過黑客入侵webform的代碼達到了我想要的目的,但我無法通過編寫自己的模塊來完成此任務。使用hook_menu_alter覆蓋web表單模塊的頁面回調

我的目標是覆蓋網絡表格4的方式,特定用戶可以訪問由模塊提供的分析頁面,而不讓他們查看到所有結果。

於contrib模塊

$items['node/%webform_menu/webform-results'] = array(
    'title' => 'Results', 
    'page callback' => 'webform_results_submissions', 
    'page arguments' => array(1, FALSE, '50'), 
    'access callback' => 'webform_results_access', 
    'access arguments' => array(1), 
    'file' => 'includes/webform.report.inc', 
    'weight' => 2, 
    'type' => MENU_LOCAL_TASK, 
    'context' => MENU_CONTEXT_PAGE | MENU_CONTEXT_INLINE, 
); 
    $items['node/%webform_menu/webform-results/submissions'] = array(
    'title' => 'Submissions', 
    'page callback' => 'webform_results_submissions', 
    'page arguments' => array(1, FALSE, '50'), 
    'access callback' => 'webform_results_access', 
    'access arguments' => array(1), 
    'file' => 'includes/webform.report.inc', 
    'weight' => 4, 
    'type' => MENU_DEFAULT_LOCAL_TASK, 
); 
    $items['node/%webform_menu/webform-results/analysis'] = array(
    'title' => 'Analysis', 
    'page callback' => 'webform_results_analysis', 
    'page arguments' => array(1), 
    'access callback' => 'webform_results_access', 
    'access arguments' => array(1), 
    'file' => 'includes/webform.report.inc', 
    'weight' => 5, 
    'type' => MENU_LOCAL_TASK, 
); 

我模塊的代碼的webform_menu()拍攝的是:

<?php 
function webformanalysis_permission() { 
    return array(
    'access all webform results analysis' => array(
     'title' => t('Access all webform results Analysis'), 
     'description' => t('Grants access to the "Analysis" tab on all webform content.'), 
    ), 
); 
} 

function webformanalysis_menu_alter(&$items) { 
    $items['node/%webform_menu/webform-results']['access arguments'] = array('access all webform results analysis'); 
    $items['node/%webform_menu/webform-results']['page callback'] = 'webform_results_analysis'; 
    $items['node/%webform_menu/webform-results']['page arguments'] = array(1); 
    unset($items['node/%webform_menu/webform-results']['access callback']); 

    $items['node/%webform_menu/webform-results/analysis']['access arguments'] = array('access all webform results analysis'); 
    $items['node/%webform_menu/webform-results/analysis']['type'] = 'MENU_DEFAULT_LOCAL_TASK'; 
    unset($items['node/%webform_menu/webform-results/analysis']['access callback']); 

    $items['node/%webform_menu/webform-results/submissions']['type'] = 'MENU_LOCAL_TASK'; 
} 

但是代碼沒有做任何事情。因爲我清除了緩存。 出了什麼問題。即使「webform-results」頁面的「頁面回調」也不會改變。

非常感謝你提前

回答

0

嘗試做一個*的var_dump *或在您HOOK_menu_alter(),並且結束類似的檢查,如果你看到的變化正確

+0

謝謝。每次進入網頁時,我都會得到整個菜單數組的7倍(當我清除菜單chache時,我認爲該鉤子只被調用一次)。 然後應用更改。 – user3486983

0

好了,測試小時後玩耍時,我發現我的錯誤。我將該類型定義爲一個String,但它似乎是一個Constant。哦,我的上帝!