Использование якорей в меню

01 Сен 2008
Опубликовано VladSavitsky

Решение

Обратите внимание
Друпал выводит strict xhtml 1.1 и якоря вида <a name="anchor"></a> не работают.

Этот тег заменяетя тегом id в xhtml 1.1, который может быть использован для любого тега.
Например, <p id="anchor"></p> и на якорь можно сослаться как обычно: example.com#anchor

Варианты

  • Указать полный URL
  • Переопределить функцию вывода ссылок в меню

Указать полный URL

Якоря будут работать в ссылках меню, если указать полный URL (http://www.example.com/example#anchor), а не /example#anchor
Но полный путь делает сайт менее расширяемым и такое решение не всегда можно применить.

Переопределить функцию вывода ссылок в меню

Нужно переопределить функцию - в template.php вашей темы добавить:

function phptemplate_menu_item_link($item, $link_item) {
  // Convert anchors in path to proper fragment
  $path = explode('#', $link_item['path'], 2);
  $fragment = !empty($path[1]) ? $path[1] : NULL;
  $path = $path[0];
  return l(
            $item['title'],
            $path,
            !empty($item['description']) ? array('title' => $item['description']) : array(),
            !empty($item['query']) ? $item['query'] : NULL,
            $fragment,
            FALSE,
            FALSE
          );
}

Использованные материалы

Using named anchors with menus

Полезные ссылки

Allow named anchor links (#) in menu path

 
 
 

RSS-лента новостей

Dries Buytaert по-русски
]]>Русский поиск Drupal]]>

Перенос сайта из Joomla в Drupal
Перенос сайта из WordPress в Drupal

]]> Drupal - это бесплатная система управления контентом с открытым исходным кодом ]]>