2

サイトの「すばやく簡単な」ブレッドクラム トレイルを作成しようとしています。私のサイトには 3 つのレベルしかないため、最終的な出力は次のようになります。

ホーム > 商品を探す(複数種類) > 商品詳細

カスタムブレッドクラムを作成しようとしました。

実際、私がやっていることは、ページ タイトルをキャプチャし、それを HREF を使用してページ URL に表示することです。これは、ホームから検索を実行するときにうまく機能します。

ホーム > 椅子を探す

ただし、検索を実行した後、詳細を表示したいアイテムをクリックすると (私のページは投稿を実行します)、詳細ページにアクセスすると、パンくずリストが表示されます。

ホーム > 椅子の詳細

私が望んでいたのは:

ホーム > 椅子を探す > 椅子の詳細

これを達成する方法はありますか?

現在のコード:

function createBreadcrumb() {

alert($(document).find("title").text());

    var $pageTitle = $(document).find("title").text();
    var $pageURL = $(location).attr('href');

    $('.breadcrumb').html(('<a href="/">Home </a> > ') + ('<a href="' + $pageURL + '">' + $pageTitle + '</a> '));
}

****ハリーの提案に従って更新: *

$(function() {
    /* create page breadcrumb on initial page load */
    createBreadcrumb();
});

function createBreadcrumb(oldPagePass) {

if (oldPagePass !== null && oldPagePass !== undefined) {

    var $pageTitle = $(document).find("title").text();
    var $pageURL = $(location).attr('href');

    $('.breadcrumb').html(oldAgePass + ('<a href="' + $pageURL + '">' + $pageTitle + '</a> '));
}  
else {
    alert($(document).find("title").text());

    var $pageTitle = $(document).find("title").text();
    var $pageURL = $(location).attr('href');

    $('.breadcrumb').html(('<a href="/">Home </a> > ') + ('<a href="' + $pageURL + '">' + $pageTitle + '</a> '));
  }    
}

.ajaxSuccess(function() {

var $pageTitle = $(document).find("title").text();
var $pageURL = $(location).attr('href');

var $oldPage = $('.breadcrumb').html(('<a href="/">Home </a> > ') + ('<a href="' + $pageURL + '">' + $pageTitle + '</a> '));

createBreadcrumb($oldPage);
});

コードの更新:

jQuery 関数

.on('click', '.searchResult', function() {
var row = $(this);
$('#resultForm > *').filter(':input').each(function(index, el) {
    var name = $(el).attr('name').slice(8).toLowerCase();
    var data = row.data(name);
    if (data !== 'undefined')
        $(el).val(data);
});

$('#resultForm').submit();
})

検索ページ フォーム タグ:

<form:form method="post" id="resultForm"> </form:form>
4

1 に答える 1

1

これには JS ベースのアプローチをお勧めしませんが、このオプションのみに関心がある場合は、次のアルゴリズム/疑似コードが役立ちます。

仮定:あなたのページは厳密なホーム > 検索 > 詳細構造に従っており、詳細ページはどこからでも呼び出すことはできませんが、対応する検索ページです)

ですかPage Type == Home?はいの場合breacrumb = "Home" // これは、ホームページの場合、ブレッドクラムは常にホームのみであり、同じページへのリンクになるためアンカーは必要ないためです。

ですかPage Type == Search?はいの場合breadcrumb = "<a href='home.htm'>Home</a>" + "Current Page Title" // これは、検索ページが常に第 2 レベルであり、第 1 レベルが常にホームであるためです。実際には現在のページであるため、2 番目のレベルにはリンクがないことに注意してください。

ですかPage Type == Details?はいの場合、breadcrumb = "<a href='home.htm'>Home</a>" + <a href='prev_page_url'>Previous Page Title</a> + "Current Page Title" //これは、前のページがどのタイプの検索ページであったかがわからないためです。それは椅子の検索、テーブルの検索、XX の検索のいずれかです。上記で説明した理由により、第 3 レベルにはリンクがないことに注意してください。

したがって、基本的にはすべてのページにページ タイプを割り当てる必要があり、それに基づいてパンくずリストに何を表示するかを決定します。

それでは、サンプルを見てみましょう。

  1. ユーザーはホームページにいます。Page Type = Homeなので、パンくずリスト = Home .
  2. ユーザーがSearch for Chairs をクリックします。Search Chairs ページでは、Page Type = Searchであるため、ブレッドクラムはHome > Search Chairsになります。
  3. ユーザーがView Detailsをクリックします。Page Type = Detailsであるため、breadcrumb = Home > Search Chairs (前のページから) > View Chair Details .
  4. ユーザーがSearch for Tablesへのリンクをクリックします。ページ タイプ = 検索パンくずリスト = ホーム > 検索テーブル。前のページのブレッドクラムは無視されます。
  5. ユーザーがView Detailsをクリックします。Page Type = Detailsであるため、breadcrumb = Home > Search Tables (前のページから) > View Table Details
  6. ユーザーがホームリンクをクリックします。Page Type = Home なので、パンくずリスト = Homeです。前のページのブレッドクラムは無視されます。

これにより、Sumurai8 がこのスレッドで言及した問題も解決されるはずです。

コード サンプルは、ここここで入手できます。

于 2013-07-29T13:09:51.233 に答える