今日はHTML5で扱えるmicrodataという技術を解説しながら、
 CakePHPのパンくず関数を利用してmicrodataのマークアップを実践します。
 
microdata属性とは
microdata属性とは、今まで文書構造を表現していたHTMLに意味付けをしてやる属性です。
 親となるタグにitemscope属性とitemtype属性を付与し、
 その中で使用するタグにitemprop属性を付与して意味付をしていきます。
 クローラなどのロボットが理解しづらい情報をmicrodataというフォーマットで記述する事で、
 サイトの内容を理解しやすくなるというSEO的に大きな効果があります。
 詳しくはGoogleさんのドキュメントが分かりやすいので以下を読んでください。
 Google microdataについて
microdata属性を導入すると、Googleの検索結果にレビューの☆が表示されたり、
 住所や名前などを目立つように表示してくれたりします。
大きいサイトではよくパンくずリストにmicrodataを導入して、クローラに
 「これはパンくずリストだよ!」と教えてやるようにしています。
microdataによるパンくずの書き方はまたもやGoogleさんにお任せします。
microdata でマークアップした HTML コードは、次のようになります:
<div itemscope itemtype=”http://data-vocabulary.org/Breadcrumb”>
<a href=”http://www.example.com/dresses” itemprop=”url”>
<span itemprop=”title”>ドレス</span>
</a>
</div>
<div itemscope itemtype=”http://data-vocabulary.org/Breadcrumb”>
<a href=”http://www.example.com/dresses/real” itemprop=”url”>
<span itemprop=”title”>ドレス</span> </a> ›
</div>
<div itemscope itemtype=”http://data-vocabulary.org/Breadcrumb”>
<a href=”http://www.example.com/clothes/dresses/real/green” itemprop=”url”>
<span itemprop=”title”>緑のドレス</span> </a>
</div>
このお手本に基づけば意外と簡単にできるSEO対策だったりします。
 microdata属性がどんなもんなのか、なんとなーくわかったところで?
 こいつをCakePHPのパンくず関数に導入してみました。
CakePHPのパンくず関数
CakePHPのHtmlHelperにはパンくずリストを生成する為のaddCrumb関数、getCrumbList関数が用意されています。
 使い方としてはaddCrumb関数にリンク文字列とURLを渡して、
 getCrumbList関数でulタグによるリストを自動生成するという感じ。
$this->Html->addCrumb('HOME', '/');
$this->Html->addCrumb('前の場所', array('controller' => 'Test', 'action' => 'index'));
$this->Html->addCrumb('現在の場所');
echo $this->Html->getCrumbList();これで出力されるHTMLは以下
<ul> <li class="first"><a href="/CakeTest/">HOME</a></li> <li><a href="/CakeTest/Test">前の場所</a></li> <li class="last">現在の場所</li> </ul>
ね、簡単でしょう?
今日はこいつにHTML5のmicrodata属性を出力する機能を付けてみます。
getCrumbList関数をmicrodata対応させる
gistに上げてみたのでこちらを参照してください。
 microdata属性対応版getCrumbList
導入方法としてはまずMyHtmlHelper.phpをapp/View/Helper/に作成します。
 ソースは以下
 
次にAppControllerで下記の記述を追加します。
class AppController extends Controller {
	public $helpers = array('Html' => array('className' => 'MyHtml'));
}
これでCakePHPがHtmlHelperを継承したMyHtmlHelperを参照するようになります。
 呼び方は通常の$this->Html->で呼び出すことができるので既存のコードの変更は必要ないです。すごい。
そしてViewにてさっきと同じように呼び出すと下記のHTMLが出力されます。
<ul> <li itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb" class="first"> <a href="/CakeTest/" itemprop="url"><span itemprop="title">HOME</span></a> </li> <li itemscope="" itemtype="http://data-vocabulary.org/Breadcrumb"> <a href="/CakeTest/Test" itemprop="url"><span itemprop="title">前の場所</span></a> </li> <li class="last">現在の場所</li> </ul>
spanタグが出力されていますが、spanは基本的に意味を持たないタグなので
 こいつにitemprop属性を付与し、これはtitleだよ!ということをクローラに伝えます。
構造化テストツールで確認してみました。
ここで注意が必要なのが、「現在いる場所はリンクにしない」という点です。
 microdataでも意味付けは行わず、「今のページの親まで」をmicrodataとリンクで意味付けします。
 これが正しいパンくずの構造です。
以上!CakePHPでmicrodataのパンくずリストを導入する方法でした。
 簡単にSEO対策ができるので試してみてくださいね。
 




コメント