고유 한 모듈을 작성하여 webform 모듈의 메뉴 설정을 수정하고 싶습니다. webform 코드를 해킹하여 원하는 것을 얻었지만 내 모듈을 작성하여이 작업을 수행 할 수는 없었습니다.hook_menu_alter를 사용하여 웹 양식 모듈의 페이지 콜백을 무시하십시오.
내 목표는 특정 결과를 사용자가 모든 결과에 액세스하지 않고 모듈에서 제공하는 분석 페이지에 액세스 할 수있는 방식으로 webform 4를 재정의하는 것입니다.
<?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';
}
그러나 코드는 아무것도되지 않습니다 들어있는 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()에서 촬영
는입니다. 내가 캐시를 비웠다. 무엇이 잘못 되었나요? "webform-results"페이지의 "page callback"조차도 변경되지 않습니다.
이
감사합니다. 웹 페이지를 갈 때마다 전체 메뉴 배열의 7 배를 얻습니다 (메뉴 쉐이크를 지우면 훅이 한 번만 호출된다고 생각했습니다). 변경 내용이 적용됩니다. – user3486983