我想通过编写自己的模块来修改 webform 模块的菜单设置。虽然我通过侵入 webform 的代码实现了我想要的,但我无法通过编写自己的模块来实现这一点。
我的目标是以某种方式覆盖 webform 4,特定用户可以访问模块提供的分析页面,而无需让他们访问所有结果。
取自 contrib 模块的 webform_menu()
$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,
);
我的模块代码是:
<?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”页面的“页面回调”也没有改变。
非常感谢您提前