masaakibの日記

2008-06-13

[]single.phpパンくずリスト

single.phpで、

(prefix) » カテゴリー1 » カテゴリー2 » カテゴリー3 » 件名

というようなパンくずを出したい。

パンくずリスト作成のために、Breadcrumb Navigation XTを使用。

カテゴリーの階層が2階層以上で、最下層のカテゴリーをあてた投稿記事では、

	$mybreadcrumb->opt['singleblogpost_category_display'] = true;

としても、single.phpでは、最下層のカテゴリーへのリンクしか出ない。

(prefix) » カテゴリー3 » 件名

という具合。

category.phpでは、階層構造がすべて表示される。

	//Display a prefix(prefixの記述)

のあとに、

	if(is_single()) {
		echo(get_category_parents($cat, true, " » "));
	}

を追加。

separatorだけ出てくる。

(prefix) » » カテゴリー3 » 件名

is_singleをはずした場合、category.phpでは親カテゴリーも出てくる。

$catの部分に実際のカテゴリーidを入れたところ、そのカテゴリ名を含め、すべての親カテゴリーが表示。

(prefix) カテゴリー1 » カテゴリー2 » カテゴリー3 » » カテゴリー3 » 件名

	$cat_now = get_the_category();
	$cat_now = $cat_now[0];

で、現在の記事のカテゴリー情報を取得し、

	$parent_id = $cat_now->category_parent;

で親カテゴリーの情報を取得。

	echo (get_category_parents($parent_id, true, " » "));

で表示された。

が、get_category_parentsでは、separatorが後ろにつくのに対し、

Breadcrumb Navigation XTでは、separatorが前につくので、

prefixとのつなぎ目にはseparatorが出ず、

Breadcrumb Navigation XTのつなぎ目に、separetorが2つ出てしまう。

(prefix)カテゴリー1 » カテゴリー2 » » カテゴリー3 » 件名

single.phpでは、Breadcrumb Navigation XTを使わないことにする。

	<?php
		if (class_exists('breadcrumb_navigation_xt')) {
			//Display a prefix
			//(prefixの記述)
			if(is_single()) {
				$cat_now = get_the_category();
				$cat_now = $cat_now[0];
				echo("&raquo; ".get_category_parents($cat_now, true, " &raquo; "));
				single_post_title();
			} else {
			//new bredcrumb object
				...
			}
		}
	?>

参考にさせていただいたサイト:

ISプランニング | 個別記事のテンプレート完成

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/masaakib/20080613/1213336016