plugins:np_match

NP_match.php

このプラグインを用いると、Skin への記述に用いる if 文において、Nucleus のコアでは提供されていない条件分岐を行うことができます。NP_ExtendedIfの後継プラグインです。

注:このプラグインは、Nucleus 3.3 以降で有効です。Nucleus 3.24 以前では、NP_ExtendedIf を用いてください。

General Plugin info
作者: Katsumi
最新のバージョン: ver 0.2.5
入手先: 下記ソースコードを参照
ソース: プラグインのソースコード
動作サンプル:
フォーラム参照先: http://japan.nucleuscms.org/bb/viewtopic.php?t=3176
セキュリティチェック:  

インストール方法

  1. NP_match.php という名のファイルを作成し、エディタを用いてプラグインのソースコード をコピー&ペーストする(このとき、最初の <?php と最後の ?> の前後に、余分な改行が入らないように注意)。
  2. nucleus/plugins/ ディレクトリに、作成されたファイルをアップロードする
  3. 管理画面からプラグインをインストールする

このプラグインの使い方

スキン変数として、<%if(match,xxxx=xxxx)%>のように記述し、条件分岐を行います。

スキンへの記述

構文

  • 基本的に、
    <%if(match,xxx=yyy[,condition[|condition[|condition ... ]]])%>

    のように記述します。

  • xxx としては、URL指定($_GET)、グローバル変数($GLOBALS)、サーバ変数($_SERVER)が対象です。xxx の内容が yyy と等しくなると、条件分岐が起こります。
  • condition の部分は、以下のように記述します。
    method=zzz (もしくは、単に zzz)
    decode=zzz
    data=zzz
    • method として、str(string), int(integer), float(double, real) を指定すると、それぞれ文字列型、整数型、浮動小数点型として評価します。preg(preg_match), ereg, eregi を指定した場合、正規表現にマッチするかどうかで分岐します。デフォルトでは、文字列として評価します。文字列型、整数型、浮動小数点型として比較した場合、条件式として『=』『!=』『<=』『>=』『<』『>』が使用できます。正規表現マッチのときは、『=』だけです(他のものを用いてもエラーになりませんが、『=』と同じ動作です)。
    • method として、isset を指定すると、xxxがセットされているかどうかが評価の対象となります(PHPのisset関数と同等)。この場合、yyyの部分は無視されます(空でもかまいません)。
    • decode としては、rawurldecode か urldecode が選択できます。評価したい文字列(もしくは正規表現)に、『,』『<%』『%>』が含まれているときに、これらの方法でデコードすると効果的です。
    • data として、get, globals, server を指定すると、それぞれURL指定($_GET)、グローバル変数($GLOBALS)、サーバ変数($_SERVER)のみを調査するようになります(デフォルトでは、$_SERVER, $GLOBALS, $_GET の順ですべて調査)。

いろいろな条件分岐

  • 単一のアイテムを選択しているときのみ実行する場合
    <%if(match,itemid=256)%>
    (ここに表示したい内容を挿入)
    <%endif%>

    の様に記述します(アイテムidが256の時)。

  • 複数のアイテムを指定したい場合
    <%if(match,itemid=^(64|128|256)$,ereg)%>
    (ここに表示したい内容を挿入)
    <%endif%>

    (↑アイテムid, 64, 128, 256の3つを指定する場合)

    <%if(match,itemid>=100,int)%>
    <%if(match,itemid<=199,int)%>
    (ここに表示したい内容を挿入)
    <%endif%><%endif%>

    (↑アイテムid, 100から199までを指定する場合)

    <%if(match,itemid=/^1[0-9]{2}$/,preg)%>
    (ここに表示したい内容を挿入)
    <%endif%>

    (↑アイテムid, 100から199までを指定する別の方法)  カテゴリー、サブカテゴリー指定の場合は、上記の『itemid』をそれぞれ『catid』もしくは『subcatid』と変更してください。

  • ブログのトップページなど、一部のページを表示しているときのみ実行する場合
    <%if(match,REQUEST_URI=/blog/)%>
    (ここに表示したい内容を挿入)
    <%endif%>

    (URLが『http://www.exsample.com/blog/』の時)

  • URLに『?extendedif=xxx』が指定されているとき
    <%if(match,extendedif=xxx)%>
    (ここに表示したい内容を挿入)
    <%endif%>

デフォルト設定変更

  • 『method』『decode』『data』のデフォルト値(デフォルトではそれぞれ『str』『』『』)を変えたいときは、ソースコードを改変するか、スキン変数として次のように記述してください。
    <%match(default,[condition[|condition[|condition ... ]]])%>

テンプレートへの記述

  • 無し

オプション

  • 無し

Tipsと裏技

  • ソースコードの10行目辺り、
    var $conf=array('method'=>'str', 'decode'=>'', 'data'=>'');

    を変更することで、デフォルト条件を変えることが出来ます。

  • ソースコードの11行目辺り、
    var $securemode=false;

    var $securemode=true;

    に変更すると、NP_match において何かシンタックスエラーを起こしているときに、ブログの表示を停止します。

希望事項

バグ

開発履歴

  • Version 0.2.3 リリース (2007-05-04)
    1. 最初の公開バージョン
  • Version 0.2.4 リリース (2007-05-15)
    1. ereg/eregi 使用時のバグ修正
    2. 条件式『!=』使用時のバグ修正
    3. 文字列に『=』を含む場合に対応
  • Version 0.2.5 リリース(2007-06-12)
    1. isset 構文を追加。
    2. 空の文字列かどうかの比較が可能に
    3. $_SERVER, $GLOBALS, $_GET の検索順位を変更
 
plugins/np_match.txt · 最終更新: 2011/03/23 21:28 (外部編集)