General

プラグインからスキン変数<%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クラス内にある。
    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』のみが表示されることを確認。

コメント

コメントはありません

コメント送信