Есть ли способ добавить хешированную ссылку в меню в меню drupal, чтобы просто создать пункт меню, который переключается на якорь или идентификатор на странице?
К сожалению, насколько мне известно, Drupal не может сделать это из коробки. Однако вы можете использовать модуль « Специальные пункты меню », чтобы создать новый пункт меню, и поместить «nolink» в настройках пути.
«Специальные пункты меню» добавляет <span title="" class="nolink">...</span>. Проблема не что иное, как отсутствие CSS. Просто скопируйте ul.menu a{}CSS и вставьте их ul.menu li span.nolink{}. Это работает нормально для меня. Но он отключил стрелку раскрывающегося списка, активированную li.expanded. :(
Mayeenul Islam
Извините, что опубликовал так поздно, но я просто наткнулся на эту тему. Вместо того, чтобы изменять css, вы можете использовать маленькие js, чтобы обернуть nolink в тег привязки с помощью хеша. С jQuery это было быjQuery("span.nolink").wrap("<a href='#'></a>");
Как насчет того, чтобы оставаться на странице, на которой вы находитесь? Например, пытаясь получить ссылку Skip to Navigation, чтобы перейти к разделу навигации независимо от того, на какой странице вы находитесь? @shanabus
kine456
2
Лучший способ сделать это, не требуется модуль или плагин!
Пустое меню позволяет вам настраивать специальные значения для тегов для использования в системе меню Drupal 7. Вы можете настроить до 10 различных пустых тегов с любым желаемым значением и свободно использовать их в системе меню Drupal.
...
В качестве дополнительного бонуса и благодаря функциональности этого модуля вы также можете использовать фактические привязки в качестве пунктов меню, которые не служат никакой другой цели, кроме заполнителей. Это достигается с помощью тега void, для которого установлено значение javascript: void (0); или даже простой хэш-тег #. Преимущество использования этого модуля перед special_menu_items для этого заключается в том, что ваши меню не требуют каких-либо дополнительных стилей для учета добавленных тегов span, используемых special_menu_items, и будут действительными в W3C, поскольку каждый якорь должен иметь атрибут href.
Просто столкнулся с той же проблемой. Мне нужно было программно добавлять пункты меню с хэш-ссылками. Мой код:
// 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);
Использование функций перевода Drupals также работает.
/**
* 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
установите специальные пункты меню и DHTML-меню для иерархических меню, затем:
добавьте свой словарный запас для примера x и добавьте к нему свои термины
нажмите изменить х-пример, чем в разделе меню таксономии установить расположение меню
перейти к блокам установить меню в блок
в меню админ модификации вы видите автоматически добавленные термины
нажмите на изменить пункт меню, а затем <void>в целевой
Теперь вернитесь на свою домашнюю страницу, и вы увидите, что те пункты меню, которые мы изменили при нажатии, никуда не уходят
Добро пожаловать в Drupal Q & A. Было бы более полезно объяснить, как использовать специальные пункты меню, а не просто вставлять картинку. Вы можете рассмотреть возможность усиления вашего ответа. Спасибо.
Ответы:
К сожалению, насколько мне известно, Drupal не может сделать это из коробки. Однако вы можете использовать модуль « Специальные пункты меню », чтобы создать новый пункт меню, и поместить «nolink» в настройках пути.
источник
l('linktext', '', array('fragment' => ' ', 'external' => TRUE));
согласно ответу @ Себастьяна.<span title="" class="nolink">...</span>
. Проблема не что иное, как отсутствие CSS. Просто скопируйтеul.menu a{}
CSS и вставьте ихul.menu li span.nolink{}
. Это работает нормально для меня. Но он отключил стрелку раскрывающегося списка, активированнуюli.expanded
. :(jQuery("span.nolink").wrap("<a href='#'></a>");
Следуйте тому, что сообщается в комментарии к
l()
документации .В Drupal 7 установите HTML
TRUE
, затем добавьте символ хеша.источник
http://drupal.org/node/123103#comment-4955236
источник
<front>#gohere
. Ницца! :)Попробуйте использовать модуль Void Menu :
Это очень хорошее решение!
источник
Просто столкнулся с той же проблемой. Мне нужно было программно добавлять пункты меню с хэш-ссылками. Мой код:
источник
Просто установка ,
external
чтобыTRUE
это делает для меня. Проверено в Druapl 7.32.l('Some Name', '#', array('external' => TRUE));
источник
Использование функций перевода Drupals также работает.
источник
Вы можете добавить хеш-ссылку в меню, используя приведенный выше код.
источник
источник
установите специальные пункты меню и DHTML-меню для иерархических меню, затем:
<void>
в целевойисточник