it-swarm-id.com

Bagaimana cara menambahkan tautan hash di menu?

Apakah ada cara untuk menambahkan tautan hash dalam menu di bawah drupal menu untuk hanya membuat item menu yang melompat ke jangkar atau id pada halaman?

21
mohamad salama

Sayangnya sejauh yang saya ketahui, Drupal tidak dapat melakukan ini di luar kotak. Namun, Anda dapat menggunakan modul item menu spesial untuk membuat item menu baru, dan tempatkan "nolink" di pengaturan jalur.

15
user842

Ikuti apa yang dilaporkan dalam komentar untuk l() dokumentasi .

Untuk membuat tautan ke jangkar bernama (mis. "#Namedanchor"), Anda perlu menggunakan sedikit kerja-sekitar.

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

Untuk membuat tautan khusus-hash (ke "#"), Anda perlu menyesuaikannya dengan:

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

(Perhatikan bahwa fragmen berisi ruang.)

Dalam Drupal 7, atur "HTML" ke TRUE, lalu tambahkan karakter hash.

15
Sebastian

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

node/16 # gohere

url otomatis akan mengubahnya menjadi seperti

tentang-kita # kemana-mana

13
squarecandy

Coba gunakan modul Void Men :

Menu Void memungkinkan Anda untuk mengonfigurasi nilai-nilai khusus pada tag untuk digunakan dalam sistem menu Drupal 7. Anda dapat menyesuaikan hingga 10 tag void yang berbeda dengan nilai apa pun yang Anda inginkan dan menggunakannya secara bebas di dalam sistem menu Drupal.
...
Sebagai bonus tambahan, dan karena fungsionalitas modul ini, Anda juga dapat menggunakan jangkar aktual sebagai item menu yang tidak memiliki tujuan lain selain placeholder. Ini dilakukan dengan tag void yang diatur ke javascript: void (0); atau bahkan tag hash sederhana #. Keuntungan menggunakan modul ini daripada special_menu_items untuk ini adalah bahwa menu Anda tidak akan memerlukan tambahan gaya untuk memperhitungkan tag rentang tambahan yang digunakan oleh special_menu_items, dan akan menjadi W3C valid karena setiap jangkar harus memiliki atribut href.

Ini solusi yang sangat bagus!

6
Andriyun

Baru saja menemui masalah yang sama. Saya perlu menambahkan item menu dengan hash-link secara terprogram. Kode saya:

// 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

Hanya dengan mengatur external ke TRUE melakukannya untuk saya. Diuji dalam Druapl 7.32.

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

1
timofey.com

Menggunakan fungsi terjemahan Drupals juga berfungsi.

/**
 * 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.

instal item menu Khusus dan Menu DHTML untuk menu hierarkis maka:

  • tambahkan kosakata x-contoh Anda dan tambahkan ke dalamnya istilah Anda
  • klik ubah x-contoh daripada di bagian menu taksonomi set lokasi menu
  • pergi ke blok atur menu ke blok
  • di menu admin modifikasi Anda melihat istilah ditambahkan secara otomatis
  • klik pada modifikasi item menu lalu lewati ini <void> dalam target

sekarang kembali ke halaman rumah Anda dan Anda akan melihat bahwa item menu yang telah kami modifikasi di klik itu tidak pergi ke mana pun

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

Anda dapat menambahkan tautan hash ke menu menggunakan kode di atas.

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