it-swarm.asia

كيف أضيف رابط تجزئة في القوائم؟

هل هناك طريقة لإضافة رابط مجزأ في القائمة تحت drupal لإنشاء عنصر قائمة ينتقل إلى نقطة ارتساء أو معرف على الصفحة؟

21
mohamad salama

للأسف على حد علمي ، Drupal القيام بذلك خارج الصندوق. ومع ذلك ، يمكنك استخدام عناصر القائمة الخاصة لإنشاء عنصر قائمة جديد ، ووضع "nolink" في إعدادات المسار.

15
user842

اتبع ما ورد في تعليق على l() التوثيق .

لإنشاء رابط إلى نقطة ربط مسماة (مثل "#nameanchor") ، ستحتاج إلى استخدام حل بديل صغير.

l('linktext', '', array('fragment' => 'namedanchor', 'external' => TRUE));

لإنشاء رابط التجزئة فقط (إلى "#") ، ستحتاج إلى تكييفه مع:

l('linktext', '', array('fragment' => ' ', 'external' => TRUE));

(لاحظ أن الجزء يحتوي على مسافة.)

في Drupal 7 ، اضبط "HTML" على TRUE ، ثم ألحق حرف التجزئة.

15
Sebastian

http://drupal.org/node/123103#comment-4955236

العقدة/16 # gohere

سيغير عنوان url التلقائي ليكون مثل

معلومات عنا # gohere

13
squarecandy

حاول استخدام الوحدة النمطية قائمة Void :

تتيح لك قائمة Void تكوين قيم خاصة للعلامات لاستخدامها في نظام القائمة Drupal 7. يمكنك تخصيص ما يصل إلى 10 علامات باطلة مختلفة بأي قيمة تريدها واستخدامها بحرية داخل نظام القائمة Drupal.
...
كمكافأة إضافية ، وبسبب وظائف هذه الوحدة ، يمكنك أيضًا استخدام المراسي الفعلية كعناصر قائمة لا تخدم أي غرض آخر غير العناصر النائبة. يتم تحقيق ذلك بعلامة void تم تعيينها على javascript: void (0)؛ أو حتى علامة تجزئة بسيطة #. الفائدة من استخدام هذه الوحدة عبر special_menu_items لهذا الأمر هي أن قوائمك لن تتطلب أي نمط إضافي لمراعاة علامات الامتداد المضافة المستخدمة من قبل special_menu_items ، وستكون W3C صالحة لأن كل مرساة يجب أن تحتوي على سمة href.

إنه حل لطيف للغاية!

6
Andriyun

واجهت نفس المشكلة للتو. كنت بحاجة إلى إضافة عناصر قائمة بروابط تجزئة برمجياً. رمز بلدي:

// the URL with hash in it is in the form  'normal_part_of_url'#'hash_part_of_url'
$item = array( 
  'link_path' => %normal_part_of_url%,
  'link_title' => %your_link_title%,
  'menu_name' => %menu_where_to_add_links%,
  'options' => array('fragment'=>%hash_part_of_url%)
);
menu_link_save($item);
2
EDWH

مجرد ضبط external على TRUE هل لي. تم الاختبار في دروبل 7.32.

l('Some Name', '#', array('external' => TRUE));

1
timofey.com

استخدام وظائف ترجمة دروبالز يعمل أيضًا.

/**
 * Implements hook_menu().
 *
 * Defines a valid link to use when creating menu items.
 */
function greenacorn_menu() {
  $items['<main-content>'] = array(
    'page callback' => 'drupal_not_found',
    'access callback' => TRUE,
    'type' => MENU_CALLBACK,
  );

  return $items;
}

/**
 * Implements hook_menu_link_alter().
 *
 * Flags the link to be altered at runtime.
 *
 * Note: Changes here would be saved back to the database.
 */
function greenacorn_menu_link_alter(&$item, $menu) {
  if ($item['link_path'] == '<main-content>') {
    $item['options']['alter'] = TRUE;
  }
}

/**
 * Implements hook_translated_menu_link_alter().
 *
 * Refactors the link to go to the fragment #main-content.
 */
function greenacorn_translated_menu_link_alter(&$item, $map) {
  if ($item['link_path'] == '<main-content>') {
    $item['href'] = '';
    $item['localized_options']['fragment'] = 'main-content';
  }
}
0
Alan D.

تثبيت عناصر قائمة خاصة وقائمة DHTML للقوائم الهرمية ثم:

  • أضف مفردات X الخاصة بك وأضف إليها شروطك
  • انقر فوق تعديل X-example من قسم قائمة الموقع في قائمة التصنيف
  • اذهب إلى الكتل واضبط القائمة على كتلة
  • في تعديل مسؤول القائمة ، ترى المصطلحات المضافة تلقائيًا
  • انقر فوق تعديل عنصر قائمة ثم تجاوز هذا <void> في الهدف

الآن عد إلى صفحتك الرئيسية وسترى أن عنصر القائمة الذي قمنا بتعديله في النقرات لن يذهب إلى أي مكان

0
elaz
function test_menu() {
  $items = array();
  $items['sample'] = array(
   'title' => t('Sample page'),
   'type' => MENU_NORMAL_ITEM,
    'menu_name' => 'main-menu',
    'page callback' => 'samplepage',
    'access callback' => TRUE,
    'options' => array('fragment' => 'sampleHash'),
  );
  return $items;
}

يمكنك إضافة رابط التجزئة إلى القائمة باستخدام الرمز أعلاه.

0
Guru
/**
 * Implements hook_module_implements_alter().
 */
function MODULE_module_implements_alter(&$implementations, $hook) {
  if ($hook == 'url_outbound_alter') {
    $stored = $implementations['MODULE'];
    unset($implementations['MODULE']);
    $implementations['MODULE'] = $stored;
  }
}

/**
 * Implements hook_url_outbound_alter().
 */
function MODULE_url_outbound_alter(&$path, &$options, $original_path) {
  if (strpos($path, '#') !== FALSE) {
    $fragment = substr($path, strpos($path, "#") + 1);
    $path = str_replace('#' . $fragment, '', $path);
    $options['fragment'] = $fragment;
  }
}
0
ccx105