ページに 5 つのタブ システムがあるページがあります。各タブには左側のナビゲーション リストにリンクがあり、特定のタブを開いた状態でページに直接リンクするか、任意のタブ自体をクリックしてコンテンツを表示/非表示にすることができます。
これを行うには、location.hash を使用し、次のように各タブ ID を URL に追加します。
http://localhost:8082/departments/site-facilities/enviroment/iso-14001#impactAreas
誰かがちょうどヒットすることができます:
http://localhost:8082/departments/site-facilities/environment
..タブ システムを参照して、URL にハッシュを追加する iso-14001 タブをクリックするか、その URL を上に入力するか、左側のナビゲーション バーのリンクをクリックします。
Drupal で抱えている問題は、基本的な html リスト (これは追加のリストであり、プライマリ メニューやセカンダリ メニューではありません) で、次のような a hrefs リンクに入力したことです。
< a href="/departments/site-facilities/environment/iso-14001#impactAreas">link here</a>
サイト内の他の場所で機能します。ただし、ユーザーがタブ付きの実際のページにアクセスすると、左側のリストのナビゲーション リンクをクリックすると、ブラウザーの URL は次のようになります。
http://localhost:8082/departments/site-facilities/departments/site-facilities/environment/iso-14001#impactAreas
つまり、Drupal が新しいページのリロードを認識せず、href の場所を既存の URL に追加しているだけのようです。
これがphpのものでハッシュである場合、別のjqueryなどが必要な場合、理由はわかりません.
ここに私がまとめた基本的なjqueryがあります:
function setupSubNav(){
pathName = window.location.href;
$('.hiddenSection').css('display','none');
pathArray = pathName.split('#');
param = pathArray[pathArray.length-1];
if(pathArray.length>1){
showSection(param,$('.' + param + 'Trigger'));
}
else
{
if ($('body.fervens-a .pageTabs li')) {
var sectionName = $($('body.fervens-a .pageTabs li')[0]).attr('class').split('Trigger')[0];
showSection(sectionName, $($('body.fervens-a .pageTabs li')[0]));
}
}
$('body.fervens-a .pageTabs li').click(function(){
if (!($(this).hasClass('current'))) {
var sectionName = $(this).attr('class').split('Trigger')[0];
showSection(sectionName, $(this));
}
});
}
function showSection(sectionName,$navObj) {
if (sectionName != 'iso14001' && sectionName != 'environmentalPolicy' && sectionName != 'impactAreas' && sectionName != 'goals2013' && sectionName != 'isoDocs') {
sectionName = 'iso14001';
$navObj = $($('body.fervens-a .pageTabs li')[0]);
}
$('body.fervens-a .pageTabs li').removeClass('current');
$navObj.addClass('current');
$('.hiddenSection').css('display','none');
$('#' + sectionName + 'Content').css('display','block');
window.location.hash = sectionName;
}
window.location に既にハッシュがあるかどうかをどうにかしてチェックし、そうであれば、新しいものを追加する前にそれを削除する必要がありますか? 正しく聞こえませんが、なぜこれが機能しないのかがわかりません。
以前 Schwab ミニサイト用に書いた以前のコードを使用し、ハッシュを追加しただけですが、そこはすべて html でしたが、これは Drupal であり、php であるため、他に何が欠けているのか疑問に思っています。
ありがとう