วิธีเพิ่มแท็บภารกิจในพื้นที่ไปยังมุมมองโหนด [ปิด]


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

รหัสของคุณดูดี แต่อย่าลืมล้างแคช Drupal ของคุณที่ admin / config / development / performance หลังจากการเปลี่ยนแปลง hook_menu ของคุณทุกครั้ง

ทางเลือกที่อยู่ในใจคือการใช้ 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.