노드보기에 로컬 작업 탭을 추가하는 방법은 무엇입니까? [닫은]


8

노드 '보기'및 '편집'탭에 추가 탭을 추가하려고합니다.

모듈이 제대로 활성화되어 있고 캐시를 지 웠지만 새 탭이 나타나지 않습니다. 내가 무엇을 놓치고 있습니까?

/**
* Implements hook_menu().
*/
function add_performance_menu() {
  $items = array();

  $items['node/%node/performance'] = array(
    'title' => 'Add a performance',
    'page callback' => 'add_performance_action',
    'access callback' => TRUE,
    'type' => MENU_LOCAL_TASK,
  );

  return $items;
}

/**
* Page callback.
*/
function add_performance_action() {
  return t('Hello');
}

경로가 작동합니까? '/ node / 1 / performance'로 이동하면 "Hello"가 다시 나타 납니까?
Les Lim

좋은 지적. 평소와 같이 노드 만 표시합니다.
pushka

4
게시 한 코드에는 아무런 문제가 없으므로 일반적인 검사를 수행하십시오. 모듈 파일의 파일 이름에 오타가 있는지 확인하고 실제로 캐시 테이블을 확인하여 파일이 지워 졌는지 확인하십시오.
Les Lim

1
고마워-코드가 아니라는 것을 확신합니다. 결국, 나는 모듈을 비활성화하고 다시 활성화하여 작동하게했습니다. 라우터 테이블이 활성화되어 업데이트 되었기 때문일 수 있습니다. 어쨌든 ... 지금 작동합니다.
pushka

답변:


0

hook_menu를 변경하면 '캐시 지우기'가 아니라 ' 메뉴 다시 작성 '이 필요하지 않습니다 .


메뉴를 다시 작성하면 충분하지만 캐시 지우기에는 다시 작성 메뉴가 포함됩니다.
sanzante

0

코드는 좋아 보이지만 위의 hook_menu를 변경할 때마다 admin / config / development / performance에서 Drupal 캐시를 지우십시오.

우리가 사용하고자하는 메뉴 항목이 이미 존재하기 때문에 염두에 두는 대안은 hook_menu_local_tasks_alter를 사용하는 것입니다.

당신은 또한 이것을 시도해 볼 수 있습니다.

/**
* Implements hook_menu().
*/
function add_performance_menu() {
  $items = array();
  $items['node/%node/performance'] = array(
    'title' => 'Add a performance',
    'access callback' => 'your_module_access_check',
    'access arguments' => array(1),
    'type' => MENU_LOCAL_TASK,
  );
  return $items;
}
function your_module_access_check($node) {
  if ($node->type == 'page') {
    return TRUE;
  }
  return FALSE;
}

감사

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.