SEO上、カノニカルタグは重要だと言われているが、

ページを作る度に<link rel="canonical" href="***">を<head>内に追加していくのはだるいし、URLを間違えて登録するといった負の温床を作り出してしまう。


というわけで、

パーツモジュールでカノニカルタグを作ってみた。

(プラグインで作れよというツッコミはなしね)





モジュールの画面でカノニカルタグを作成した。

SOY CMSでどのページでも使えるブログのサイドバーを作ってみた


このページはルート設定の上、ブログページがトップページになるので、それをベースに


$url = "";
switch(get_class($htmlObj)){
case "CMSBlogPage":
$url .= $htmlObj->pageUrl;
//記事毎ページ
if($htmlObj->mode == "_entry_"){
$url .= $htmlObj->page->getEntryPageUri() . "/" . rawurlencode($htmlObj->entry->getAlias());
//カテゴリーページ
}elseif($htmlObj->mode == "_category_"){
$url .= $htmlObj->page->getCategoryPageUri() . "/" . rawurlencode($htmlObj->label->getCaption());
//月別アーカイブページ
}elseif($htmlObj->mode == "_month_"){
$url .= $htmlObj->page->getMonthPageUri() . "/" . $htmlObj->year . "/" . sprintf("%02d",$htmlObj->month);
}
//ブログのトップページの処理はなし
break;

//ブログページ以外の処理は、ページ毎に決めたURIを末尾に付けるだけ
case "CMSApplicationPage":
default:
$url .= "/" . $htmlObj->page->getUri();
}
echo "<link rel=\"canonical\" href=\"" . $url . "\">";

ブログページとそれ以外のページに分けた上、ブログページでは、ページで設定したURIを気にせず、ページのモード毎に$htmlObjから値を取り出し追加していった。


このモジュールを全ページに設置し、どこか適当なページのカノニカルタグを確認してみたら、


<link rel="canonical" href="/category/GnuCash">

希望通りの出力になった。

これでこれから楽できる。