it-swarm.asia

كيف وأين يمكنني إضافة قائمة برمجياً إلى قائمة التنقل؟

أريد إضافة عناصر القائمة إلى قائمة التنقل ديناميكيًا ، اعتمادًا على حالات معينة (على سبيل المثال: تسجيل دخول المستخدم ، وما إلى ذلك). أفترض أنني أفعل ذلك في theme_preprocess ، ولكن لا يمكنني العثور على var to Tweak.

هل أبحث في المكان الخطأ؟ أين هو أفضل مكان للقيام بذلك ، وما هي أفضل طريقة؟

6
Justin

أقترح التحقق من hook_menu () . على سبيل المثال ، يجب أن يدرج التنفيذ التالي لـ hook_menu() إما في وحدة نمطية أو template.php عنصر قائمة في قائمة التنقل للمستخدمين المجهولين. ألق نظرة على وحدة المستخدم للحصول على بعض الأمثلة الجيدة لكيفية تنفيذ hook_menu() لأدوار المستخدم المختلفة.

function MODULE_menu() {
   $items = array();
   $items['the/menu/path'] = array(
   'access callback' => 'user_is_anonymous',  //or 'user_is_logged_in' to check if logged in
   'type' => MENU_NORMAL_ITEM,
   'menu_name' => 'navigation',
   'title' => t('Title of Menu Item'),
  );
  return $items;
}
5
joedivic

أعتقد أنه يمكنك إنشاؤه باستخدام menu_link_save().

$item = array(
  'link_path' => 'my_path',
  'link_title' => 'title',
  'menu_name' => 'header-top-menu', // Menu machine name, for example: main-menu
  'weight' => 0,
  'language' => $node->language,
  'plid' => 0, // Parent menu item, 0 if menu item is on top level
  'module' => 'menu',
);
menu_link_save($item);

يمكنك استخدام الكود الذي أعرضه في تطبيق hook_update_N().

انظر أيضًا تحديث ارتباط قائمة Drupal 7 من خلال update.php .

6
Bhanu Prakash Ryaga