問題
解決策
パンくずリストを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タグで出力します。
コメント