it-swarm-ko.tech

메뉴에 해시 링크를 어떻게 추가합니까?

drupal 메뉴 아래의 메뉴에 해시 링크를 추가하여 페이지의 앵커 또는 ID로 이동하는 메뉴 항목을 만드는 방법이 있습니까?

21
mohamad salama

불행히도 내가 아는 한 Drupal이 작업을 즉시 수행 할 수는 없지만 특별 메뉴 항목 모듈을 사용하여 새 메뉴 항목을 만들 수 있습니다. 경로 설정에 "nolink"를 넣으십시오.

15
user842

l() documentation에 대한 주석 에보고 된 내용을 따르십시오.

명명 된 앵커 (예 : "#namedanchor")에 대한 링크를 만들려면 간단한 해결 방법을 사용해야합니다.

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

"#"에 대한 해시 전용 링크를 만들려면 다음에 맞게 조정해야합니다.

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

조각에는 공백이 포함되어 있습니다.

Drupal 7에서 "HTML"을 TRUE로 설정 한 다음 해시 문자를 추가하십시오.

15
Sebastian

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

node/16 # gohere

자동 URL은 다음과 같이 변경됩니다.

about-us # gohere

13
squarecandy

모듈을 사용하십시오 Void Men :

무효 메뉴를 사용하면 Drupal 7 메뉴 시스템에서 사용할 특수 값을 태그로 구성 할 수 있습니다. 원하는 값으로 최대 10 개의 서로 다른 void 태그를 사용자 정의하고 Drupal 메뉴 시스템 내에서 자유롭게 사용할 수 있습니다.
...
추가 보너스로이 모듈의 기능으로 인해 실제 앵커를 자리 표시 자 이외의 다른 용도로 사용하지 않는 메뉴 항목으로 사용할 수도 있습니다. 이것은 javascript로 설정된 void 태그로 수행됩니다. void (0); 또는 간단한 해시 태그 #. special_menu_items에 비해이 모듈을 사용하는 이점은 special_menu_items에서 사용하는 추가 범위 태그를 설명하기 위해 메뉴에 추가 스타일링이 필요하지 않으며 모든 앵커에 href 속성이 있어야하므로 W3C에 유효하다는 것입니다.

아주 좋은 해결책입니다!

6
Andriyun

같은 문제가 발생했습니다. 프로그래밍 방식으로 해시 링크가있는 메뉴 항목을 추가해야했습니다. 내 코드 :

// 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);
2
EDWH

externalTRUE로 설정하면됩니다. Druapl 7.32에서 테스트되었습니다.

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

1
timofey.com

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
Alan D.

특별 메뉴 항목 및 계층 메뉴를위한 DHTML 메뉴 설치 :

  • x 예제 어휘를 추가하고 용어에 추가하십시오
  • 분류 메뉴 섹션 설정 메뉴 위치보다 x 예제 수정을 클릭하십시오.
  • 블록으로 이동 메뉴를 블록으로 설정
  • 메뉴 관리자 수정에서 자동으로 추가 된 용어가 표시됩니다
  • 메뉴 항목 수정을 클릭 한 다음 대상에서이 <void>를지나

이제 홈페이지로 돌아 가면 클릭으로 수정 한 메뉴 항목이 아무데도 가지 않는 것을 볼 수 있습니다

0
elaz
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;
}

위 코드를 사용하여 메뉴에 해시 링크를 추가 할 수 있습니다.

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