POPSブログ

BaserCMSブログに機能を付加する/4

16

  Category:  basercms2012/02/07 pops 

記事中のタグで指定したIDの内容を取得する命令を利用して、BaserCMSブログに機能を付加する実験です。


記事中のタグで指定したIDの内容を取得する命令を利用する


BaserCMSのBlogHelper取得系命令記事中のタグで指定したIDの内容を取得するの話しです。

jQueryを使っても同じことは簡単にできますが、jQueryはページの画面が表示終了してからの処理ですから、出来ないこともあります。記事の中でPHPが使用できないのも不便ですが、これは危険でもあります。
但し、「IDの内容を取得」の機能は、色々と使えそうな命令のようです。


【参考】basercms.net/reference: 記事中のタグで指定したIDの内容を取得する



[getHtmlById] 記事中のタグで指定したIDの内容を取得する
BlogHelper 取得系命令
blog->getHtmlById($post, $id)

引数名 説明 初期値 
$post ブログ記事のデータを指定します。ブログ記事を出力するループ内では「$post」と記述すれば動作します。
$id タグのID属性名

ブログ記事内から「関連記事の検索表示」を指定する実験

ブログ記事内から「検索表示」させるための「タグ名」を指定して「関連記事の検索表示」をさせるものです。
TAGKEYと言うタグ名があり、記事の最後に、<div id="tagkey">TAGKEY</div> と書き込みます。
勿論、記事表示終了後、single.ctp の部分にこれを判定、処理する「スクリプト」を書いて置きます。ID名などは自由です。


使用に当たりの注意点

ブログ記事がEditerによりインデントなど処理されますと、余計なものが入り判別が不安定になりますので、不要なものを取り除くことが大事です。
下のものは「例」であって、私が使用しているものではありません。

注意、 修正箇所をメモする、ルートをメモする、またはテーマの中にコピーしておくなどの対処が必要です。
baser/plugins/views/blog/default/single.ctp


ブログ記にの中に書き込む

例、TAGKEYと言うタグ名を指定して記事の後にリンクを貼るとする
実際にはCSSで非表示にしますが、
<div id="tagkey">TAGKEY</div>

と記事に命令を書いておいても、下のように整形されてしまう
<div id="tagkey">
		TAGKEY</div>
TAGKEYの前に余計なものが入りTAGKEYの判定が不安定になる

---------------------------------------------------------------
ブログsingle.ctpの修正

本来これで検索結果が表示されるが不安定だ
<?php if($blog->getHtmlById($post, 'tagkey')): ?>
<p style="margin-left:20px;">[ 関連記事 ]</p>
<?php $baser->blogPosts('pops', 5, array('tag' => $blog->getHtmlById($post, 'tagkey'))); ?>
<hr />
<?php endif ?>
---------------------------------------------------------------

余計なものを取り除く処理をしないとだめだ
<?php if($blog->getHtmlById($post, 'tagkey')): ?>
<p style="margin-left:20px;">[ 関連記事 ]</p>
<?php
$tagkey=$blog->getHtmlById($post, 'tagkey');
$tagkey=ereg_replace("[\n|\r|\nr|\t]","",$tagkey);
$baser->blogPosts('pops', 5, array('tag' => $tagkey));
?>
<hr />
<?php endif ?>
---------------------------------------------------------------

余計なものを取り除く処理、必要なものだけにしても良い
$tagkey=ereg_replace("[\n|\r|\nr|\t]","",$tagkey);

上の例では「タグの名前」を特別なものにしないと、関連のない記事も拾ってきますので、一例と思ってください。


アイデア次第の自動処理制御

ブログ記事の中ではPHPコード(またはCakePHPコード)を使用することは出来ませんが、[getHtmlById]を使用すれば、ブログ記事に何らかの「暗号」を書いて置き、それによりPHP処理をさせる「引き金」を仕組むことは可能です。
ブログ記事表示直後に「タグで指定したIDの内容」を読み取り、それに応じた処理をさせれば良いことになります。複雑な処理をすれば表示の精度はあがります。
今後プラグインなど出てくとは思いますが、それまでの間の手段として活用できそうです。

  • 関連記事を表示させるための「タグ名」を書いて置きそれで「題目」を表示させる。
  • コメント欄の「表示」「非表示」を制御する。
  • 何らかの指定の画像、またはコンテンツの表示を制御する。
  • ブログ記事でPHPコードを書けない処理を指定する「キー」に使用するとか、、。
  • アイデア次第です。jQueryを使って表示場所の移動も可能です。

多少PHP処理することが出来ることと、ある程度「書き方の規則」を作っておくことが必要になります。
CTPに色々書いても、以外と処理が早く、ページの表示速度に大きく影響は無いように感じます。

最大の欠点は書くのを忘れると何も処理しない、表示しないと言うことです。ああ面倒だ。



[ この記事のURL ]


タグ:series , basercms , php

[ BaserCMSブログに機能を付加する シリーズ記事 ]

BaserCMSブログに機能を付加する/62012.02.10
BaserCMSブログに機能を付加する/52012.02.08
BaserCMSブログに機能を付加する/42012.02.07
BaserCMSブログに機能を付加する/32012.02.06
BaserCMSブログに機能を付加する/22012.02.05
BaserCMSブログに機能を付加する/12012.02.04

 

ブログ記事一覧

年別アーカイブ一覧



[1]