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">	

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

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