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ı?
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ı?
Yanıtlar:
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.
l('linktext', '', array('fragment' => ' ', 'external' => TRUE));
Sebastian'ın tepki @ başına.
<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
. :(
jQuery("span.nolink").wrap("<a href='#'></a>");
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.
http://drupal.org/node/123103#comment-4955236
Düğüm / 16 # gohere
otomatik url bunu gibi olacak
yaklaşık-us # gohere
<front>#gohere
. Güzel! :)
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!
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);
Sadece benim external
için TRUE
yapıyor. Druapl 7.32'de test edilmiştir.
l('Some Name', '#', array('external' => TRUE));
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';
}
}
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.
/**
* 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;
}
}
hiyerarşik menüler için Özel menü öğelerini ve DHTML Menüsünü yükleyin, sonra:
<void>
hedefte geçŞimdi ana sayfanıza geri döndüğünüzde, tıkladığımız menü öğesinin hiçbir yere gitmeyenleri göreceksiniz