問題 × 解決策

PHPでパンくずリストを出力させたい

  • 2020年01月20日
  • PHPSEO

問題

PHPでパンくずリストを出力させたい。

解決策

トップページから今のページまでを順に配列に格納し、その配列をforeachで回して出力させる。

 

パンくずリストをPHP側で管理する。

パンくずリストは、「今いるページがサイトのどの位置にいるのか」を示すものです。
これをPHP側で管理し、出力するようにする一例をご紹介します。

パンくずリストのための配列データの作成

パンくずリストのための配列データを作成します(仮「$breadcrumb」)。
トップページの記載を省き、トップページから現在のページまでを順々に辿っていきます。

$breadcrumb[パンくずリストの順番(トップページを1として算出)][ページ情報] 

記述例

<?php
$breadcrumb = array();
$breadcrumb[2]['slug'] = "親ページのスラッグ";
$breadcrumb[2]['label'] = "親ページのページ名";
$breadcrumb[2]['link'] = "親ページのページURL";
$breadcrumb[3]['slug'] = "現在ページのスラッグ";
$breadcrumb[3]['label'] = "現在ページのページ名";
$breadcrumb[3]['link'] = "現在ページのページURL";
?>

パンくずリストの出力例

パンくずリストの出力の記述例です。
「foreach」で先程の配列データ「$breadcrumb」を展開します。

<section id="breadcrumb" class="section controller">
	<div class="controller-inner clearfix">
		<ol itemscope itemtype="http://schema.org/BreadcrumbList" class="breadcrumb-list">
			<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="home">
				<a itemscope itemtype="http://schema.org/Thing" itemprop="item" href="<?php echo $home_path; ?>"">
					<span itemprop="name">HOME</span>
				</a>
				<meta itemprop="position" content="1"../>
			</li>
			<?php 
			foreach($breadcrumb as $nums => $item):
			if($item !== end($breadcrumb)):
			// 現在のページの番(最後)でないならば
			?>
			<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
				<a itemscope itemtype="http://schema.org/Thing" itemprop="item" href="<?php echo $item['link']; ?>" itemid="<?php echo $item['link']; ?>">
					<span itemprop="name"><?php echo  $item['label']; ?></span>
				</a>
				<meta itemprop="position" content="<?php echo $nums; ?>"../>
			</li>
			<?php 
			else: 
			// 現在のページの番(最後)ならば
			?>
			<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="on">
				<span itemscope itemtype="http://schema.org/Thing" itemprop="item">
					<span itemprop="name"><?php echo $item['label']; ?></span>
				</span>
				<meta itemprop="position" content="<?php echo $nums; ?>"../>
			</li>
			<?php endif; ?>
			<?php endforeach; ?>
		</ol>
	</div><!-- controller-inner -->
</section><!-- breadcrumb -->

データを出力していく流れ

  • トップページの記述を先に行う。

配列データ「$breadcrumb」を「foreach」で繰り返し処理

  • 現在のページの番(最後)でない場合、aタグで出力します。
  • 現在のページの番(最後)の場合、spanタグで出力します。

コメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

6 + 18 =

「問題 × 解決策」
月別アーカイブ一覧

「問題 × 解決策」
月別アーカイブ一覧