Breadcrumb NavXT で独自の項目を追加する

独自のページが有る場合、 Breadcrumb NavXT 導入時に、パンくずリストにそのページを追加する方法を調べました。

Breadcrumb NavXT には、アクションフックが二つ用意されています。

bcn_before_fill は、パンくずリスト生成前、 bcn_after_fillは、パンくずリスト生成後のアクションフックです。
パンくずリストを追加することを考えますので、bcn_after_fillを使います。

以下の例は、とあるページ(投稿ページ、固定ページなど)にitemnameというクエリパラメータがついていたら、そのページ下層の独自ページとする。
という前提です。(例 http://test.com/?p=123&itemname=あいうえお)

フックで受け取った変数$bcnObjにパンくずの情報が入っています。
$bcnObj->opt にBreadcrumb NavXTの設定ページした情報が入っています。
$bcnObj->trail に表示するパンくずが配列で入っています。

$bcnObj->trail[0] が一番右側で、 ホーム > 親ページ > 投稿ページ のようなパンくずリストの場合、 $bcnObj->trail[2] > $bcnObj->trail[1] > $bcnObj->trail[0] という感じになっています。
そこで、一番右にパンくずを追加したいのなら、[0]のところにもう一つ挿入すればいいということになります。

ホーム > 親ページ > 投稿ページ > あいうえお

$bcnObj->trail[3] > $bcnObj->trail[2] > $bcnObj->trail[1] > $bcnObj->trail[0]

なので、$bcnObj->trail[0] からクローンを取り出して、(※1) タイトルを設定して、(※2 例ではクエリパラメータをそのまま突っ込んでます。) 内容を書き換えて、マージするようにしてみました。(※7)

設定で、「現在のページを示す項目にリンクを張る」がONの場合(※3)は、独自ページのところにもリンクを追加したいので、set_urlメソッドで独自ページのリンクを追加します。(※4)

その一方、「現在のページを示す項目にリンクを張る」がOFFの場合は、本来の現在のページにはリンクがついていないので追加します。(※5)

set_template関数でパンくずのテンプレートを設定しますが、$bcnObj->opt[‘Hpost_post_template’] はBreadcrumb NavXTの設定にある、投稿タイプの投稿テンプレートです。(※6) (その他のテンプレートは、プラグインのclass.bcn_breadcrumb_trail.php にありますが、設定ページのソースコード(HTML)を覗いても大体わかります。)

参考: http://notnil-creative.com/blog/archives/981 http://tenman.info/labo/snip/archives/3761

 

タイトルとURLをコピーしました