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">
希望通りの出力になった。
これでこれから楽できる。