プラグインからスキン変数<%if%>を制御したいナ2
2006年4月2日
ヘルプページより
blogsetting:blog設定のname項目の値がvalueと一致しているか調べる(nameはSQLテーブルnucleus_blogにあるカラム名)
SQLテーブルnucleus_blogにあるカラム名は、次のものが相当。
bnumber bname bshortname bdesc bcomments bmaxcomments btimeoffset bnotify burl bupdate bdefskin bpublic bsendping bconvertbreaks bdefcat bnotifytype ballowpast bincludesearch
使用方法の例としては、『<if(blogsetting,bnumber,1)%>』。
これの判定ルーチンは、Nucleus3.22 では SKIN.php のACTIONSクラス内にある。
BLOG::getSetting() はどうなっているかというと、
この仕様は、Nucleus2.0から変わっていない。これは使えそう。グローバル $blog で、$blog->setSetting()関数を用いて値をセットすれば、そのまま<%if%>文で使えるわけである。
(動作確認)
スキンで、
と記述し、NP_gzCache.php内で
と記述すると、『1st trial』のみが表示されることを確認。
blogsetting:blog設定のname項目の値がvalueと一致しているか調べる(nameはSQLテーブルnucleus_blogにあるカラム名)
SQLテーブルnucleus_blogにあるカラム名は、次のものが相当。
bnumber bname bshortname bdesc bcomments bmaxcomments btimeoffset bnotify burl bupdate bdefskin bpublic bsendping bconvertbreaks bdefcat bnotifytype ballowpast bincludesearch
使用方法の例としては、『<if(blogsetting,bnumber,1)%>』。
これの判定ルーチンは、Nucleus3.22 では SKIN.php のACTIONSクラス内にある。
global $catid, $blog..... ........ case 'blogsetting': $condition = ($blog && ($blog->getSetting($name) == $value)); break;
BLOG::getSetting() はどうなっているかというと、
function getSetting($key) { return $this->settings[$key]; } function setSetting($key,$value) { $this->settings[$key] = $value; }
この仕様は、Nucleus2.0から変わっていない。これは使えそう。グローバル $blog で、$blog->setSetting()関数を用いて値をセットすれば、そのまま<%if%>文で使えるわけである。
(動作確認)
スキンで、
<%gzCache()%> <%if(blogsetting,gzCache)%> 1st trial. <%endif%> <%gzCache()%> <%if(blogsetting,gzCache)%> 2nd trial. <%endif%>
と記述し、NP_gzCache.php内で
function doSkinVar($skinType,$type) { global $blog; $blog->setSetting('gzCache',''); if ($this->firstdone) $blog->setSetting('gzCache','true'); $this->firstdone=true; }
と記述すると、『1st trial』のみが表示されることを確認。