สร้างแท็บด้วย hook_menu () สำหรับโมดูลที่กำหนดเอง


14

ตั้งแต่สองชั่วโมงฉันพยายามสร้างแท็บในแบ็กเอนด์โมดูลที่กำหนดเองของฉัน

ฉันได้ลองใช้คำแนะนำที่ตัดขาดแล้ว แต่ไม่สามารถทำให้คนใดคนหนึ่งทำงานได้

นี่คือ hook_menu ปัจจุบันของฉัน ():

    function social_links_menu() {
  $items['admin/config/system/social_links'] = array(
    'title' => 'social_links',
    'description' => 'Configure to fit clients needs',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('social_links_settings'),
    'access arguments' => array('administer site configuration'),
    'file' => 'social_links.admin.inc',
  );

  return $items;
}

ฉันต้องการเพียงสองแท็บที่เรียกว่า: 'tab1' และ 'tab2'

บางคนสามารถให้ตัวอย่างการทำงานกับฉันได้ไหม มันควรจะง่ายจริงๆ แต่ตอนนี้ดูเหมือนจะเป็นไปไม่ได้

คำตอบ:


44

คุณต้องกำหนดพา ธ 'รูท' ซึ่งเป็นรายการเมนูปกติแล้วเพิ่มรายการอื่นสำหรับแต่ละแท็บ ครั้งแรกของเหล่านี้จะสืบทอดคุณสมบัติของรายการรากและที่สองจะกำหนดโทรกลับของตัวเอง

เมื่อรวมกับค่าคงที่MENU_LOCAL_TASKและMENU_DEFAULT_LOCAL_TASKประเภทคุณควรได้รับแท็บที่คุณต้องการ:

function social_links_menu() {
  $items['admin/config/system/social_links'] = array(
    'title' => 'social_links',
    'description' => 'Configure to fit clients needs',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('social_links_settings'),
    'access arguments' => array('administer site configuration'),
    'file' => 'social_links.admin.inc',
  );

  $items['admin/config/system/social_links/tab1'] = array(
    'title' => 'Tab 1',
    'type' => MENU_DEFAULT_LOCAL_TASK,
    'weight' => -10
  );

  $items['admin/config/system/social_links/tab2'] = array(
    'title' => 'Tab 2',
    'type' => MENU_LOCAL_TASK,
    'page callback' => 'some_callback',
    'access arguments' => array('some permission')
  );

  return $items;
}

2
ขอบคุณสำหรับบทเรียนบทเรียน! คำอธิบายที่ดี คุณเพิ่งช่วยฉันสักสองสามชั่วโมง :)
mhmdrupal
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.