回答:
残念ながら、私が知る限り、Drupalはこれをすぐに実行することはできません。ただし、特別なメニュー項目モジュールを使用して新しいメニュー項目を作成し、パス設定に「nolink」を配置できます。
l('linktext', '', array('fragment' => ' ', 'external' => TRUE));
@ Sebastianの応答に従って利用してください。
<span title="" class="nolink">...</span>
ます。問題はCSSの欠如に他なりません。ul.menu a{}
CSSをコピーして貼り付けますul.menu li span.nolink{}
。それは私のためにうまく機能しています。ただし、によって有効にされたドロップダウン矢印は無効になりましたli.expanded
。:(
jQuery("span.nolink").wrap("<a href='#'></a>");
名前付きアンカー(「#namedanchor」など)へのリンクを作成するには、簡単な回避策を使用する必要があります。
l('linktext', '', array('fragment' => 'namedanchor', 'external' => TRUE));
「#」へのハッシュ専用リンクを作成するには、以下に適応する必要があります。
l('linktext', '', array('fragment' => ' ', 'external' => TRUE));
(フラグメントにはスペースが含まれていることに注意してください。)
Drupal 7では、「HTML」をに設定しTRUE
、ハッシュ文字を追加します。
http://drupal.org/node/123103#comment-4955236
node / 16#gohere
自動URLはそれを次のように変更します
about-us#gohere
<front>#gohere
ます。いいね!:)
モジュールVoid Menuを使用してみてください:
Voidメニューを使用すると、Drupal 7メニューシステムで使用するタグに特別な値を設定できます。任意の値で最大10個の異なるvoidタグをカスタマイズし、Drupalメニューシステム内で自由に使用できます。
...
追加のボーナスとして、またこのモジュールの機能により、実際のアンカーをプレースホルダー以外の目的に使用しないメニュー項目として使用することもできます。これは、javascriptに設定されたvoidタグで実現されます。void(0); または単純なハッシュタグ#さえも。このためにspecial_menu_itemsよりもこのモジュールを使用する利点は、special_menu_itemsによって使用される追加のspanタグを考慮するためにメニューに追加のスタイリングを必要とせず、すべてのアンカーにhref属性が必要であるためW3Cが有効になることです
それはとてもいい解決策です!
同じ問題が発生しました。プログラムでハッシュリンクを使用してメニュー項目を追加する必要がありました。私のコード:
// 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);
ただ、設定external
にTRUE
私のためにそれを行います。Druapl 7.32でテスト済み。
l('Some Name', '#', array('external' => TRUE));
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;
}
上記のコードを使用して、メニューにハッシュリンクを追加できます。
/**
* 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;
}
}
次に、階層メニュー用の特別なメニュー項目とDHTMLメニューをインストールします。
<void>
、ターゲットでこれを過ぎます今、あなたのホームページに戻ると、クリックして変更したメニュー項目がどこにも行かないものが表示されます