Czy istnieje sposób na dodanie skrótu do menu w menu drupal, aby po prostu utworzyć pozycję menu, która przeskakuje do kotwicy lub identyfikatora na stronie?
Czy istnieje sposób na dodanie skrótu do menu w menu drupal, aby po prostu utworzyć pozycję menu, która przeskakuje do kotwicy lub identyfikatora na stronie?
Odpowiedzi:
Niestety, o ile mi wiadomo, Drupal nie może tego zrobić po wyjęciu z pudełka. Możesz jednak użyć modułu Specjalne pozycje menu , aby utworzyć nowy element menu i umieścić „nolink” w ustawieniach ścieżki.
l('linktext', '', array('fragment' => ' ', 'external' => TRUE));
odpowiedzi @ Sebastiana.
<span title="" class="nolink">...</span>
. Problemem jest tylko brak CSS. Po prostu skopiuj ul.menu a{}
CSS i wklej je ul.menu li span.nolink{}
. Dla mnie działa dobrze. Ale wyłącza strzałkę rozwijaną włączoną przez li.expanded
. :(
jQuery("span.nolink").wrap("<a href='#'></a>");
Postępuj zgodnie z tym, co zgłoszono w komentarzu do l()
dokumentacji .
Aby utworzyć link do nazwanej kotwicy (np. „#Namedanchor”), musisz użyć małego obejścia.
l('linktext', '', array('fragment' => 'namedanchor', 'external' => TRUE));
Aby utworzyć łącze tylko do mieszania (do „#”), musisz je dostosować do:
l('linktext', '', array('fragment' => ' ', 'external' => TRUE));
(Uwaga: fragment zawiera spację).
W Drupal 7 ustaw „HTML” na TRUE
, a następnie dodaj znak skrótu.
http://drupal.org/node/123103#comment-4955236
node / 16 # gohere
automatyczny adres URL zmieni go na podobny
about-us # gohere
<front>#gohere
. Ładny! :)
Spróbuj użyć modułu Void Menu :
Menu Void pozwala skonfigurować specjalne wartości dla tagów do użycia w systemie menu Drupal 7. Możesz dostosować do 10 różnych pustych tagów dowolną wartością i swobodnie korzystać z nich w systemie menu Drupal.
...
Jako dodatkowy bonus i ze względu na funkcjonalność tego modułu, możesz również używać rzeczywistych kotwic jako pozycji menu, które służą jedynie symbolom zastępczym. Dokonuje się tego za pomocą tagu void ustawionego na javascript: void (0); lub nawet prosty tag skrótu #. Zaletą korzystania z tego modułu zamiast special_menu_items jest to, że twoje menu nie będą wymagały żadnej dodatkowej stylizacji, aby uwzględnić dodane tagi zakresu używane przez special_menu_items, i będą ważne w W3C, ponieważ każda kotwica musi mieć atrybut href.
To bardzo miłe rozwiązanie!
Właśnie napotkałem ten sam problem. Musiałem programowo dodać elementy menu za pomocą łączy mieszających. Mój kod:
// 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);
Tylko ustawienie external
się TRUE
robi to za mnie. Testowane w Druapl 7.32.
l('Some Name', '#', array('external' => TRUE));
Działa także funkcja tłumaczenia 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';
}
}
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;
}
Możesz dodać link skrótu do menu, używając powyższego kodu.
/**
* 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;
}
}
zainstaluj specjalne pozycje menu i menu DHTML dla menu hierarchicznych, a następnie:
<void>
w celuteraz wróć do strony głównej, a zobaczysz, że element menu, który zmodyfikowaliśmy, kliknij, aby nigdzie nie iść