অ্যাডমিন / কনফিগার পৃষ্ঠাতে মডিউল কীভাবে যুক্ত করবেন?


27

আমি ড্রুপাল in-এ একটি মডিউলে কাজ করছি I've আমি একটি হুক_মেনু বাস্তবায়ন যুক্ত করেছি:

$items['admin/config/content/mymodule'] = [
  'title'            => 'MyModule',
  'description'      => 'Configure MyModule settings.',
  'page callback'    => 'mymodule_get_form',
  'page arguments'   => ['mymodule_admin_settings'],
  'file'             => 'mymodule.admin.inc',
  'access arguments' => ['administer mymodule'],
  'menu_name'        => 'mymodule',
];

... এবং mymodule.info এ একটি কনফিগার লাইন:

configure = admin/config/content/mymodule

মাইমডুলের জন্য একটি কনফিগার লিঙ্ক এখন অ্যাডমিন / মডিউল পৃষ্ঠাতে উপস্থিত হয় , তবে আমি কীভাবে অ্যাডমিন / কনফিগার পৃষ্ঠায় মডিউল তালিকাভুক্ত করতে পারি ? অথবা অ্যাডমিন / কনফিগার পৃষ্ঠাটি কেবল মূল মডিউলগুলির জন্যই সংরক্ষিত আছে?

উত্তর:


9

কোড এ খুঁজছি system_admin_config_page () , যা অ্যাডমিন / কনফিগ জন্য পৃষ্ঠা কলব্যাক, আমি এটা নিম্নলিখিত পংক্তিগুলি রয়েছে বিজ্ঞপ্তি:

if ($admin = db_query("SELECT menu_name, mlid FROM {menu_links} WHERE link_path = 'admin/config' AND module = 'system'")->fetchAssoc()) {
  $result = db_query("
    SELECT m.*, ml.*
    FROM {menu_links} ml
    INNER JOIN {menu_router} m ON ml.router_path = m.path
    WHERE ml.link_path != 'admin/help' AND menu_name = :menu_name AND ml.plid = :mlid AND hidden = 0", $admin, array('fetch' => PDO::FETCH_ASSOC));
  foreach ($result as $item) {
    _menu_link_translate($item);
    if (!$item['access']) {
      continue;
    }
    // ...
  }
  // ...
}

প্রথম ক্যোয়ারীটি অ্যাডমিন / কনফিগারেশনের সাথে যুক্ত মেনুটির জন্য মেনু_নাম ক্ষেত্রটি নির্বাচন করে, যা পূর্বনির্ধারিতভাবে পরিচালনা হয়; দ্বিতীয় ক্যোয়ারী মেনু_নামের জন্য একই মানযুক্ত এবং মাতাপিতা প্রশাসক / কনফিগার সমস্ত মেনু নির্বাচন করুন select

আপনার মেনুটি মেনু_নামের জন্য পৃথক মান ব্যবহার করে, এটি দ্বিতীয় ক্যোয়ারী থেকে নির্বাচিত নয় এবং এটি অ্যাডমিন / কনফিগার পৃষ্ঠায় প্রদর্শিত হয় না।


24

আপনি যদি এটির মতো করে থাকেন তবে প্যারেন্ট আইটেমের জন্য সিস্টেম mod মডেল কলব্যাকের সাহায্যে আপনি 'অ্যাডমিন / কনফিগারেশন / মাইমডিউল' দেখতে গেলে চমৎকার তালিকা পাতায় পাবেন

/**
 * Implements hook_menu().
 */
function MYMODULE_menu() {

  $items = [];

  $items['admin/config/mymodule'] = [
    'title'            => 'My configuration section',
    'description'      => 'This is the parent item',
    'position'         => 'left',
    'weight'           => -100,
    'page callback'    => 'system_admin_menu_block_page',
    'access arguments' => ['administer site configuration'],
    'file'             => 'system.admin.inc',
    'file path'        => drupal_get_path('module', 'system'),
  ];

  // Need at least one child item before your section will appear.
  $items['admin/config/mymodule/item'] = [
    'title'            => 'First item',
    'description'      => 'This is the first child item in the section',
    'page callback'    => 'mymodule_item_callback',
    'access arguments' => ['administer site configuration'],
  ];

  return $items;
}

3
ভুলে যাবেন না যে মেনু পরিবর্তনগুলি কার্যকর হওয়ার জন্য আপনাকে মডিউলটি অক্ষম করতে এবং সক্ষম করতে হবে।
jevon

5
@ জেভন: পরিবর্তনগুলি দেখার জন্য (মেনু) ক্যাশে সাফ করা যথেষ্ট।
বার্ট

কমান্ড লাইনে ড্র্যাশ ব্যবহার করে মেনু ক্যাশে সাফ করা যায় drush cc menu- রেফ: drupal.stackexchange.com/a/58621/1082
থেরোবিউন

3

'মেনু_নাম' অংশটি সরান, এটি প্রয়োজনীয় নয়।


1

কনফিগার পৃষ্ঠায় এটি নিয়ে আমারও সমস্যা হয়েছিল। 'অ্যাডমিন / কনফিগার / মডিউল' তে প্যারেন্ট লিঙ্ক এবং 'অ্যাডমিন / কনফিগার / মডিউল / পরিচালনা' তে একটি শিশু লিঙ্ক সহ আমি কনফিগার পৃষ্ঠায় লিঙ্কটি যুক্ত করতে সক্ষম হয়েছি এমন দুটি মেনু আইটেম ঘোষনা করা ছিল ।

  $items['admin/config/whh-maps'] = array(
    'title' => 'World Hiphop configuration',
    'description' => 'Allows administrators to configure maps for WHH.',
    'position' => 'left',
    'weight' => -30,
    'page callback' => 'drupal_get_form',
    'page arguments' => array('whh_maps_form'),
    'access arguments' => array('administer whh maps'),
    'file' => 'whh_maps.admin.inc',
  );
  $items['admin/config/whh-maps/manage'] = array(
    'title' => 'Manage countries',
    'description' => 'Allows admins to edit country information',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('whh_maps_form'),
    'access arguments' => array('administer whh maps'),
    'file' => 'whh_maps.admin.inc',
    'weight' => -10,
  ); 

1
$items['admin/config/user-interface/mymodule'] = array(
    'title' => 'My Module',
    'description' => 'description',
    'page callback' => 'drupal_get_form',
    'page arguments' => array('my_admin_function'),
    'access arguments' => array('administer site configuration'),
);

$items['admin/config/user-interface/mymodule/manage'] = array(
    'title' => 'My Module',
    'type' => MENU_DEFAULT_LOCAL_TASK,
    'description' => 'description',
    'weight' => -10,
);
return $items;

এটি আমার জন্য কাজ করেছে।
আমি আসলে প্রায় আধা ঘন্টার জন্য লড়াই করে যাচ্ছিলাম যতক্ষণ না বুঝেছিলাম আমি returning আইটেমগুলি ফিরিয়ে দিচ্ছি না .... আমি সবসময় এমনটিই করি বলে মনে হয়।


0
/**
 * Implements hook_menu().
 */
function notification_menu() {

  $items = [];

  $items['admin/customize'] = [
    'title'            => 'Send Comment notifications',
    'discription'      => 'Admin will send notification to user about updates',
    'type'             => MENU_NORMAL_ITEM,
    'page callback'    => 'drupal_get_form',
    'page arguments'   => ['notification_form'],
    'access arguments' => ['access adminstration page'],
    'access callback'  => TRUE,
  ];

  return $items;
}

/**
 * Custom form.
 */
function notification_form($form, &$form_state) {

  $form['send_mail_to'] = [
    '#title'         => 'Send Mail To',
    '#discription'   => 'To whom you want to send form',
    '#size'          => 40,
    '#type'          => 'textfield',
    '#required'      => TRUE,
    '#default_value' => variable_get('send_mail_to'),
  ];

  //here the admin can wite subject for the mail.
  $form['mail_subject'] = [
    '#title'         => 'Subject',
    '#discription'   => 'the purpous of this mail',
    '#type'          => 'textfield',
    '#size'          => 40,
    '#maxlenght'     => 120,
    '#required'      => TRUE,
    '#default_value' => variable_get('mail_subject'),
  ];

  $form['mail_body'] = [
    '#title'         => 'Body',
    '#discription'   => 'the body of your mail.',
    '#type'          => 'textarea',
    '#row'           => 10,
    '#columns'       => 40,
    '#required'      => TRUE,
    '#default_value' => variable_get('mail_body'),
  ];

  $form['mail_bcc'] = [
    '#title' => 'BCC this mail to all',
    '#type'  => 'checkbox',

  ];

  return system_settings_form($form);
}

1
এটি প্রশ্নের উত্তর দেয় না, কেননা এটি ওপেন প্রশাসক পৃষ্ঠায় তালিকাভুক্ত মডিউলটি কেন দেখছেন না; এছাড়াও, কোড-কেবল উত্তরগুলি খুব বেশি সহায়ক নয়। : (আপনি কিছু টাইপস আছে কোড চেক করুন।)
kiamlaluno
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.