web-gelistirme-sc.com

Menülere nasıl karma bağlantı eklerim?

Sayfadaki bir bağlantıya veya kimliğe atlayan bir menü öğesi oluşturmak için drupal menüsü altındaki menüye karma bir bağlantı eklemenin bir yolu var mı?

21
mohamad salama

Ne yazık ki bildiğim kadarıyla, Drupal kutunun dışında bunu yapamaz. Ancak, yeni bir menü öğesi oluşturmak için Özel menü öğeleri modülünü kullanabilirsiniz, ve yol ayarlarına "nolink" yazın.

15
user842

l() belgeleri için bir yorum bölümünde bildirilenleri izleyin.

Adlandırılmış bir bağlantıya bağlantı oluşturmak için (örn. "#Namedanchor"), küçük bir çözüm kullanmanız gerekir.

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

Yalnızca karma bir bağlantı oluşturmak için ("#" öğesine), bağlantıyı şunlara uyarlamanız gerekir:

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

(Parçanın bir boşluk içerdiğini unutmayın.)

Drupal 7 içinde, "HTML" yi TRUE olarak ayarlayın, ardından karma karakterini ekleyin.

15
Sebastian

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

düğüm/16 # gohere

otomatik url bunu gibi olacak

yaklaşık-us # gohere

13
squarecandy

Modül Boş Menü :

Geçersiz menü, Drupal 7 menü sisteminde kullanılmak üzere etiketlere özel değerler yapılandırmanıza olanak tanır. En fazla 10 farklı geçersiz etiketi istediğiniz herhangi bir değerle özelleştirebilir ve bunları Drupal menü sisteminde serbestçe kullanabilirsiniz.
...
Ek bir avantaj olarak ve bu modülün işlevselliği nedeniyle, gerçek ankrajları yer tutuculardan başka bir amaca hizmet etmeyen menü öğeleri olarak da kullanabilirsiniz. Bu, javascript olarak ayarlanmış bir void etiketi ile gerçekleştirilir: void (0); hatta basit bir karma etiketi #. Bunun için bu modülü special_menu_items üzerinden kullanmanın yararı, menülerinizin special_menu_items tarafından kullanılan ek span etiketlerini hesaba katmak için herhangi bir ek stil gerektirmeyeceği ve her çapanın bir href özelliğine sahip olması gerektiğinden W3C geçerli olmasıdır.

Çok güzel bir çözüm!

6
Andriyun

Az önce aynı problemle karşılaştı. Karma bağlantılarla menü öğelerini programlı olarak eklemem gerekiyordu. Kodum:

// 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

Sadece external değerini TRUE olarak ayarlamak benim için yapar. Druapl 7.32'de test edilmiştir.

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

1
timofey.com

Drupals çeviri işlevlerini kullanmak da işe yarar.

/**
 * 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.

hiyerarşik menüler için Özel menü öğelerini ve DHTML Menüsünü yükleyin, sonra:

  • x örneği kelime dağarcığınızı ekleyin ve teriminize ekleyin
  • sınıflandırma menüsü bölümünde ayarlanan x-örneğini değiştir'i tıklayın.
  • bloklara git menüyü bir bloka ayarla
  • menü yöneticisi değişikliğinde terimlerin otomatik olarak eklendiğini görürsünüz
  • bir menü öğesini değiştirip ardından bunu geç _ <void> hedefte

şimdi ana sayfanıza geri döndüğünüzde, tıkladığımız menü öğesinin hiçbir yere gitmeyenleri göreceksiniz

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;
}

Yukarıdaki kodu kullanarak menüye karma bağlantı ekleyebilirsiniz.

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