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


21

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ı?


Başlangıçta Mutlak url kullanırsanız işe yarayacaktır. Beğen alanadiniz.com/alani#someother
hzak

Yanıtlar:


15

Ne yazık ki farkında olduğum kadarıyla, Drupal bunu kutudan çıkaramaz. Ancak, yeni bir menü öğesi oluşturmak için Özel menü öğeleri modülünü kullanabilir ve yol ayarlarına "nolink" yerleştirebilirsiniz.


ne yazık ki bu modül sürüm 6 için ve hiç kimse için 7 ancak değiştirilebilir. yine de teşekkürler .
mohamad salama

1
Aksine faydalanmak l('linktext', '', array('fragment' => ' ', 'external' => TRUE));Sebastian'ın tepki @ başına.
Duncanmoo

"Özel menü öğeleri" ekler a <span title="" class="nolink">...</span>. Sorun CSS eksikliğinden başka bir şey değildir. Sadece ul.menu a{}CSS'yi kopyalayıp yapıştırın ul.menu li span.nolink{}. Benim için iyi çalışıyor. Ancak, tarafından etkinleştirilen açılır oku devre dışı bıraktı li.expanded. :(
Mayeenul İslam

Çok geç göndermek için üzgünüm, ama ben sadece bu konuya rastladı. Css değiştirmek yerine, nolink bir karma etiketi ile bir karma etiketi sarmak için küçük bir js kullanabilirsiniz. JQuery ile, bu olurdujQuery("span.nolink").wrap("<a href='#'></a>");
Goldentoa11

15

Belgeler için bir yorumdal() 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ı aşağıdaki gibi uyarlamanız gerekir:

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

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

 

Drupal 7'de "HTML" olarak ayarlayın TRUE, ardından karma karakterini ekleyin.


13

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

Düğüm / 16 # gohere

otomatik url bunu gibi olacak

yaklaşık-us # gohere


1
Bulunduğunuz sayfada kalmaya ne dersiniz? Örneğin, hangi sayfada olursanız olun sizi gezinme divına götürmek için Gezintiye Atla bağlantısını almaya mı çalışıyorsunuz? @shanabus
kine456

2
Bunu yapmanın en iyi yolu, modül veya eklenti gerekmez!
Andreas Daoutis

Hatta ile çalışır <front>#gohere. Güzel! :)
Huelfe

6

Void Menu modülünü kullanmayı deneyin :

Geçersiz menü, Drupal 7 menü sisteminde kullanmak üzere etiketlere özel değerler yapılandırmanızı sağlar. En fazla 10 farklı geçersiz etiketi istediğiniz herhangi bir değerle özelleştirebilir ve bunları Drupal menü sistemi içinde özgürce kullanabilirsiniz.
...
Ek bir avantaj olarak ve bu modülün işlevselliği nedeniyle, gerçek tutturucuları 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ği için W3C geçerli olmasıdır.

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


2

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

1

Sadece benim externaliçin TRUEyapıyor. Druapl 7.32'de test edilmiştir.

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


0

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

Lütfen "salt kod" yanıtları göndermeyin. Bu sorunu çözse de, okuyucuya sorunu neden çözdüğünü veya buradaki alternatiflerle karşılaştırıldığında ne sağladığını açıklamaz .
Shawn Conn

0

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ştir seçeneğini tıklayın, ardından bunu <void>hedefte geç

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


Drupal Q&A'ya hoş geldiniz. Bir resmi yapıştırmak yerine Özel menü öğelerinin nasıl kullanılacağını açıklamak daha yararlı olacaktır. Cevabınızı geliştirmeyi düşünebilirsiniz. Teşekkür ederim.
Kojo

1
sanırım şimdi sorun yok
elaz
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.