我想通過編寫自己的模塊來修改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」頁面的「頁面回調」也不會改變。
非常感謝你提前
謝謝。每次進入網頁時,我都會得到整個菜單數組的7倍(當我清除菜單chache時,我認爲該鉤子只被調用一次)。 然後應用更改。 – user3486983