plugins:np_match

差分

この文書の現在のバージョンと選択したバージョンの差分を表示します。

この比較画面にリンクする

plugins:np_match [2011/03/23 21:28] (現在)
ライン 1: ライン 1:
 +====== NP_match.php ======
  
 +このプラグインを用いると、Skin への記述に用いる if 文において、Nucleus のコアでは提供されていない条件分岐を行うことができます。[[plugins:​extendedif|NP_ExtendedIf]]の後継プラグインです。
 +
 +**注:このプラグインは、Nucleus 3.3 以降で有効です。Nucleus 3.24 以前では、NP_ExtendedIf を用いてください。**
 +
 +^General Plugin info ^^
 +^作者: | [[plugins:​authors:​katsumi|Katsumi]] |
 +^最新のバージョン:​ | ver 0.2.5 |
 +^入手先: |下記ソースコードを参照|
 +^ソース: | [[plugins:​np_match:​np_match_code|プラグインのソースコード]] |
 +^動作サンプル:​ | |
 +^フォーラム参照先:​ | http://​japan.nucleuscms.org/​bb/​viewtopic.php?​t=3176 |
 +^セキュリティチェック:​ | |
 +
 +
 +
 +
 +
 +=====インストール方法=====
 +  - NP_match.php という名のファイルを作成し、エディタを用いて[[plugins:​np_match:​np_match_code|プラグインのソースコード]] をコピー&ペーストする(このとき、最初の <?php と最後の ?> の前後に、余分な改行が入らないように注意)。
 +  - nucleus/​plugins/​ ディレクトリに、作成されたファイルをアップロードする
 +  - 管理画面からプラグインをインストールする
 +
 +=====このプラグインの使い方=====
 +スキン変数として、<​%if(match,​xxxx=xxxx)%>​のように記述し、条件分岐を行います。
 +
 +=====スキンへの記述=====
 +
 +==== 構文 ====
 +
 +    * 基本的に、<​code><​%if(match,​xxx=yyy[,​condition[|condition[|condition ... ]]])%></​code>​のように記述します。
 +    * xxx としては、URL指定($_GET)、グローバル変数($GLOBALS)、サーバ変数($_SERVER)が対象です。xxx の内容が yyy と等しくなると、条件分岐が起こります。
 +    * condition の部分は、以下のように記述します。<​code>​method=zzz (もしくは、単に zzz)
 +decode=zzz
 +data=zzz</​code>​
 +      * 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 の順ですべて調査)。
 +
 +==== いろいろな条件分岐 ====
 +
 +    * 単一のアイテムを選択しているときのみ実行する場合<​code><​%if(match,​itemid=256)%>​
 +(ここに表示したい内容を挿入)
 +<​%endif%></​code>​の様に記述します(アイテムidが256の時)。
 +    * 複数のアイテムを指定したい場合<​code><​%if(match,​itemid=^(64|128|256)$,​ereg)%>​
 +(ここに表示したい内容を挿入)
 +<​%endif%></​code>​(↑アイテムid,​ 64, 128, 256の3つを指定する場合)<​code><​%if(match,​itemid>​=100,​int)%>​
 +<​%if(match,​itemid<​=199,​int)%>​
 +(ここに表示したい内容を挿入)
 +<​%endif%><​%endif%></​code>​(↑アイテムid,​ 100から199までを指定する場合)<​code><​%if(match,​itemid=/​^1[0-9]{2}$/,​preg)%>​
 +(ここに表示したい内容を挿入)
 +<​%endif%></​code>​(↑アイテムid,​ 100から199までを指定する別の方法)  カテゴリー、サブカテゴリー指定の場合は、上記の『itemid』をそれぞれ『catid』もしくは『subcatid』と変更してください。
 +    * ブログのトップページなど、一部のページを表示しているときのみ実行する場合<​code><​%if(match,​REQUEST_URI=/​blog/​)%>​
 +(ここに表示したい内容を挿入)
 +<​%endif%></​code>​(URLが『http:​//www.exsample.com/blog/』の時)
 +    * URLに『?​extendedif=xxx』が指定されているとき<​code><​%if(match,​extendedif=xxx)%>​
 +(ここに表示したい内容を挿入)
 +<​%endif%></​code>​
 +
 +==== デフォルト設定変更 ====
 +
 +    * 『method』『decode』『data』のデフォルト値(デフォルトではそれぞれ『str』『』『』)を変えたいときは、ソースコードを改変するか、スキン変数として次のように記述してください。<​code><​%match(default,​[condition[|condition[|condition ... ]]])%></​code>​
 +
 +=====テンプレートへの記述=====
 +  * 無し
 +=====オプション=====
 +  * 無し
 +
 +=====Tipsと裏技=====
 +  * ソースコードの10行目辺り、<​code>​var $conf=array('​method'​=>'​str',​ '​decode'​=>'',​ '​data'​=>''​);</​code>​を変更することで、デフォルト条件を変えることが出来ます。
 +  * ソースコードの11行目辺り、<​code>​var $securemode=false;</​code>​を<​code>​var $securemode=true;</​code>​に変更すると、NP_match において何かシンタックスエラーを起こしているときに、ブログの表示を停止します。
 +
 +=====希望事項=====
 +
 +=====バグ=====
 +
 +=====開発履歴=====
 +  * Version 0.2.3 リリース (2007-05-04)
 +    - 最初の公開バージョン
 +  * Version 0.2.4 リリース (2007-05-15)
 +    - ereg/eregi 使用時のバグ修正
 +    - 条件式『!=』使用時のバグ修正
 +    - 文字列に『=』を含む場合に対応
 +  * Version 0.2.5 リリース(2007-06-12)
 +    - isset 構文を追加。
 +    - 空の文字列かどうかの比較が可能に
 +    - $_SERVER, $GLOBALS, $_GET の検索順位を変更
 
plugins/np_match.txt · 最終更新: 2011/03/23 21:28 (外部編集)