ブログ記事SEOプラグイン開発について3
前回、記事作成画面にカスタムフィールドを追加し、カスタムフィールドに入れた値をDBに挿入するところまで行いました。
ブログ記事SEOプラグイン開発について2
今回はDBに入れた値を公開側の記事毎ページのメタ情報に表示させることについて説明します。
プラグイン初期化時の公開側設定に、公開側ページを表示したときに動作するメソッドを追加します。
function init(){
if(CMSPlugin::activeCheck($this->getId())){
//管理画面側設定
if(!defined("_SITE_ROOT_")){
CMSPlugin::setEvent('onEntryUpdate',$this->getId(),array($this,"onEntryUpdate"));
CMSPlugin::setEvent('onEntryCreate',$this->getId(),array($this,"onEntryUpdate"));
CMSPlugin::addCustomFieldFunction($this->getId(),"Entry.Detail",array($this,"onCallCustomField"));
CMSPlugin::addCustomFieldFunction($this->getId(),"Blog.Entry", array($this, "onCallCustomField_inBlog"));
//公開側設定
}else{
//公開側のページを表示させたときに、メタデータを表示する
CMSPlugin::setEvent('onPageOutput',$this->getId(),array($this,"onPageOutput"));
}
}else{
CMSPlugin::setEvent('onActive',$this->getId(),array($this,"createTable"));
}
}
今回も、カテゴリー詳細表示プラグインと同様に、公開側のページを表示したときに動作するonPageOutputメソッドを作成します。
カテゴリー詳細表示プラグイン開発について
function onPageOutput($obj){
//ブログではない時は動作しません
if(false == ($obj instanceof CMSBlogPage)){
return;
}
//エントリー表示画面以外では動作しません
if($obj->mode != CMSBlogPage::MODE_ENTRY){
return;
}
$entry = $obj->entry;
if(is_null($entry))$entry = new Entry();
//データ取得
list($keyword,$description) = $this->getEntryInfo($entry->getId());
$obj->createAdd("entry_keyword","HTMLModel",array(
"soy2prefix" => "b_block",
"attr:name" => "keywords",
"attr:content" => $keyword
));
$obj->createAdd("entry_description","HTMLModel",array(
"soy2prefix" => "b_block",
"attr:name" => "description",
"attr:content" => $description
));
}
createAddメソッドはカテゴリー詳細表示プラグインでも使われたので、概要は省略します。
前回と異なる点は、
前回はテンプレートに
<span b_block:id="category_description"></span>
と記述したら、
<span>ここに文字が挿入される</span>
というように<span>タグで挟まれた箇所に文字列が挿入されたが、
今回は、
<meta name="keywords" content="入力した文字列">
のように<meta>タグの属性値として挿入されなければならない。
今回のソースコードを見ると
$obj->createAdd("entry_keyword","HTMLModel",array(
"soy2prefix" => "b_block",
"attr:name" => "keywords",
"attr:content" => $keyword
));
createAddメソッドの第二引数がHTMLModelになっており、
連想配列でのindexが attr:name と属性として表示するものになっている。
表示に必要な属性とその値を設定すれば、
<meta b_block:id="entry_keyword">
というタグをテンプレートで使用出来るようになります。
これでブログ記事SEOプラグインの説明は終了です。
2010.01.05 | Comments(0) | Trackback(0)
Comments
Trackbacks