plugins:advancedvariablegetoption

差分

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

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

plugins:advancedvariablegetoption [2011/03/23 21:28] (現在)
ライン 1: ライン 1:
 +====== NP_AdvancedVariableGetOption.php ======
 +
 +NP_AdvancedVariableGetOptionはスキン変数<​%if%>​のためのプラグインです。
 +
 +:!: **このプラグインには不具合が潜在している可能性があります** :!:
 +
 +[[http://​niku.suku.name/​item/​128|NP_VariablegetOption]]、[[plugins:​ifcategorynameis|NP_IfCategoryNameIs]]、[[plugins:​nolinknodisplay|NP_NoLinkNoDisplay]]の後継に当たります。
 +
 +NP_VariableGetOptionに、テンプレートで使える擬似的なIf機能と他二つのプラグインの機能を追加したものです。
 +
 +^General Plugin info ^^
 +^作者 | [[plugins:​authors:​nkjg|NKJG]] |
 +^最新のバージョン | 0.0.1 |
 +^入手先 |[[http://​niku.suku.name/​item/​339|作者のページ]]|
 +
 +=====インストール方法=====
 +  - Zipファイルを展開して、中身をサーバーのプラグインディレクトリにアップロードする
 +  - 管理画面からプラグインをインストールする
 +  - スキン・テンプレートに記述を追加する
 +
 +=====このプラグインの使い方=====
 +このプラグインは自身のオプション情報を持ち、そのオプション情報を管理することができるのみです。スキン・テンプレート以外には影響を及ぼしません。
 +
 +このプラグインでできることはおおきく分けて以下のとおりです。
 +
 +  * オプションの値のセット
 +  * オプションの値の操作
 +  * オプションの値を使った擬似的なIf構文
 +
 +これらの操作は全てスキン・テンプレートへの記述で実現します。
 +
 +=====スキン/​テンプレートへの記述=====
 +
 +このプラグインのスキン変数・テンプレート変数は以下のようになります。
 +
 +  <​%AdvancedVariableGetOption(mode,​ scope, value)%>
 +
 +**scope**で指定されたオプションに対し、**value**で指定された値を使って、**mode**で指定された動作をおこなうのが基本になります。
 +
 +==== オプションの値のセット ====
 +
 +スキン変数でオプションに値をセットするには、2つの方法があります。
 +
 +=== 直接指定 ===
 +
 +  <​%AdvancedVariableGetOption(set,​ testScope, testValue)%>​
 +
 +以上のように、modeを**set**にすることで、値をオプションに直接セットすることができます。
 +
 +この例の場合は**testScope**というオプションに**testValue**という値がセットされます。
 +
 +== 乱数の直接指定 ==
 +
 +  <​%AdvancedVariableGetOption(setrandom,​ testScope, 12)%>
 +
 +以上のように、modeを**setrandom**にすることで、1からvalueで指定された値までの乱数がオプションにセットされます。
 +
 +この例の場合は**testScope**というオプションに1以上12以下の乱数がセットされます。
 +
 +=== 範囲指定 ===
 +
 +  <​%AdvancedVariableGetOption(startset,​ testScope)%>​
 +  この部分がオプションにセットされますよ
 +  この部分もオプションにセットされますよ
 +  <​%AdvancedVariableGetOption(endset)%>​
 +
 +以上のようにmodeが**startset**である変数と**endset**である変数で文字列を挟むと、その挟まれた文字列がオプションにセットされます。
 +
 +**startset**側の文字列にscopeは必要ですが、**endset**側では省略可能です。
 +
 +指定に使用された範囲はスキン中に表示されません。
 +
 +==== オプションの値の追記 ====
 +
 +すでにセットされたオプションに新しい値を追記することができます。
 +
 +modeの指定中、setの部分をaddに変更すると追記指定になります。
 +
 +  * add
 +  * addrandom
 +  * startadd
 +  * endadd
 +
 +==== オプションの値の操作 ====
 +
 +=== オプションの値を表示する ===
 +
 +  <​%AdvancedVariableGetOption(output,​ testScope)%>​
 +
 +以上のようにmodeに**output**を指定するとセットされたオプションの値を表示することができるようになります。
 +
 +=== オプションの値を反転する ===
 +
 +  <​%AdvancedVariableGetOption(invert,​ testScope)%>​
 +
 +以上のようにmodeに**invert**を指定すると、対象のオプションに、"​no"​以外の値がセットされている場合は新しく"​no"​が、それ以外の場合は"​yes"​がセットされます。
 +
 +==== 擬似If文 ====
 +
 +スキン変数Ifが使えないテンプレートや、コメントテンプレートにおいて似たような機能を実現するための擬似的な機能が存在します。
 +
 +用意されたmodeの値は以下のとおりです。
 +
 +  * if
 +  * ifnot
 +  * elseif
 +  * elseifnot
 +  * else
 +  * endif
 +
 +例 :
 +
 +  <!-- testScope に testValueをセットする --> ​
 +  <​%AdvancedVariableGetOption(set,​ testScope, testValue)%>​
 +  ​
 +  <​%AdvancedVariableGetOption(if,​ testScope, notTest)%>​
 +  ​
 +  <!-- testValue の値が notTest ならここを表示する -->
 +  <!-- 条件に一致しないのでここは表示されない -->
 +  ​
 +  <​%AdvancedVariableGetOption(elseif,​ testScope)%>​
 +  ​
 +  <!-- 上の条件が正しくないときで、かつ testScope に'​no'​でない値がセットされているならここを表示する -->
 +  <!-- この部分は表示の対象になる -->
 +  ​
 +  <!-- 必ず endif すること -->
 +  <​%AdvancedVariableGetOption(endif)%>​
 +
 +ifの式はscope(2番目のパラメータ)とvalue(3番目のパラメータ)で表現されます。
 +
 +  * valueが指定されている場合は、オプションscopeの値がvalueと一致していれば真になります。
 +  * valueが指定されていない場合は、オプションscopeに、"​no"​でない値がセットされていれば真になります。
 +
 +=== 擬似if構文でのみ使用可能な条件 ===
 +
 +valueに**special-withlink**を指定すると、オプションの値にHTMLリンクが含まれていれば真、そうでなければ偽、という構文になります。
 +
 +Nucleus標準のIf構文では使用できません。
 +
 +=== 擬似if構文でのみ使用可能なオプション名 ===
 +
 +scopeに**current**を指定すると、オプションの値を参照する代わりに、該当するifなどの構文の範囲を参照します。
 +
 +==== Nucleus標準のIf構文 ====
 +
 +スキンでは、Nucleus標準のif構文で使用することができます。
 +
 +このプラグインによる擬似構文を使うよりパフォーマンスがいいので、スキン変数では標準のIf機能の使用を推奨します。
 +
 +==== 特殊なオプション ====
 +
 +スキン変数で指定しなくても、自動でセットされるオプションがいくつか存在します。
 +
 +=== GETのパラメータ ===
 +
 + ​http://​example.com/?​scope=value
 +
 +GETのパラメータとして渡された値は、全て自動でオプションにセットされます。
 +
 +ただし、**abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,​./​%_-**以外の文字はセット前に削除されます。
 +
 +=== PATH_INFO ===
 +
 +FancyURLモードが有効の場合はPATH_INFOのパスについても自動でオプションが設定されます。
 +
 + /​item/​11/​category/​6
 +
 +というパスの場合は、
 +
 +^オプションの名前^オプションの値^
 +|item|11|
 +|11|category|
 +|category|6|
 +|6|yes|
 +
 +のように値がセットされます(パスの最後にあたるオプションには"​yes"​がセットされます)。
 +
 +=== "​item-author"​ ===
 +
 +テンプレート、コメントテンプレートに変数を書いたときに有効になります。
 +
 +アイテムの作者名(shortname)がセットされます。
 +
 +=== "​item-category"​ ===
 +
 +テンプレート、コメントテンプレートに変数を書いたときに有効になります。
 +
 +アイテムのカテゴリー名がセットされます。
 +
 +=== "​comment-author"​ ===
 +
 +コメントテンプレートに変数を書いたときに有効になります。
 +
 +コメントの投稿者名(メンバーの場合はshortname)がセットされます。
 +
 +=== "​comment-memberid"​ ===
 +
 +コメントテンプレートに変数を書いたときに有効になります。
 +
 +コメントの投稿者のメンバーID(非メンバーの場合は0)がセットされます。
 +
 +=== "​yes"​ ===
 +
 +常に"​yes"​がセットされています(上書き不可)。
 +
 +=== "​no"​ ===
 +
 +常に"​no"​がセットされています(上書き不可)。
 +
 +==== 特殊なオプションの値 ====
 +
 +valueに**scope-**で始まる文字列を指定すると、指定された文字列ではなく、**scope-**に続く文字列を名に持ったオプションの値を参照します。
 +
 +
 +==== 例文 ====
 +
 +=== 指定されたアイテムを表示している場合のみスキン中のある範囲を表示する(FancyURL以外) ===
 +
 +スキン変数Ifが使用できます。
 +
 +  <​%If(hasplugin,​ AdvancedVariableGetOption,​ itemid=4126)%>​
 +  <!-- GETのパラメータで、itemidが4126に指定されている場合のみここが表示される -->
 +  <​%Endif%>​
 +
 +=== 指定された範囲にHTMLリンクが存在しない場合、その範囲を表示しない ===
 +
 +[[plugins:​NoLinkNoDisplay|NP_NoLinkNoDisplay]](公開停止)の機能に相当します。
 +
 +  <​%AdvancedVariableGetOption(if,​ current, special-withlink)%>​
 +  ​
 +  <!-- ここにHTMLリンクがある場合のみここは表示される -->
 +  <!-- 条件に一致しないのでここは表示されない -->
 +  ​
 +  <​%AdvancedVariableGetOption(endif)%>​
 +
 +=== アイテムのカテゴリーが指定されたものと一致した場合のみ、ある範囲を表示する ===
 +
 +[[plugins:​IfCategoryNameIs|IfCategoryNameIs]](公開停止)の機能に相当します。
 +
 +テンプレートに記述してください
 +
 +  <​%AdvancedVariableGetOption(if,​ item-category,​ General)%>​
 +  ​
 +  このアイテムはGeneralカテゴリーに属しています。
 +  ​
 +  <​%AdvancedVariableGetOption(endif)%>​
 +
 +=== メンバーからのコメントだった場合のみ、ある範囲を表示する ===
 +
 +コメントテンプレートに記述してください
 +
 +  <​%AdvancedVariableGetOption(ifnot,​ comment-memberid,​ 0)%>
 +  ​
 +  これはメンバーによるコメントです。
 +  ​
 +  <​%AdvancedVariableGetOption(endif)%>​
 +
 +
 +==== 早見表 ====
 +
 +  <​%AdvancedVariableGetOption(mode,​ scope, value)%>
 +
 +^mode一覧^^
 +^指定^効果^
 +|set|値のセット|
 +|setrandom|乱数値のセット|
 +|startset|セット範囲の開始|
 +|endset|セット範囲の終了|
 +|add|値の追記|
 +|addrandom|乱数値の追記|
 +|startadd|追記範囲の開始|
 +|endadd|追記範囲の終了|
 +|output|値の出力|
 +|invert|値の反転|
 +|if|擬似if構文|
 +|ifnot|擬似if構文|
 +|elseif|擬似if構文|
 +|elseifnot|擬似if構文|
 +|else|擬似if構文|
 +|endif|擬似if構文|
 +
 +^特殊scope一覧^^^
 +^scope名^値^対応^
 +|yes|常にyes|すべて|
 +|no|常にno|すべて|
 +|item-author|アイテムの作者名|テンプレート変数・コメントテンプレート変数|
 +|item-category|アイテムのカテゴリー名|テンプレート変数・コメントテンプレート変数|
 +|comment-author|コメントの投稿者名|コメントテンプレート変数|
 +|comment-memberid|コメント投稿者のメンバID|コメントテンプレート変数|
 +|current|範囲そのものを対象にする|擬似if構文|
 +
 +^擬似if特殊条件一覧^^
 +^value^条件^
 +|special-withlink|HTMLリンクを含むとき真|
 +
 +=====Tipsと裏技=====
 +
 +=====希望事項=====
 +
 +=====バグ=====
 +
 +=====開発履歴=====
 +  * ver.0.0.1 <​2006/​10/​07>​
 +    * **FIXED** special-withlinkが無効になっていた
 +    * **CHANGED** valueの初期値を空文字列にした
 +  * ver.0.0.0 <​2006/​10/​06>​
 +    * 最初のリリース
 +
 +=====関連プラグイン=====
 +
 +
 +=====このページのキーワード(検索エンジン対策)=====
 +※どなたでも、思いついたキーワードを入力いただけると助かります。
  
 
plugins/advancedvariablegetoption.txt · 最終更新: 2011/03/23 21:28 (外部編集)