NP_AdvancedVariableGetOptionはスキン変数<%if%>のためのプラグインです。
このプラグインには不具合が潜在している可能性があります
NP_VariablegetOption、NP_IfCategoryNameIs、NP_NoLinkNoDisplayの後継に当たります。
NP_VariableGetOptionに、テンプレートで使える擬似的な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に変更すると追記指定になります。
<%AdvancedVariableGetOption(output, testScope)%>
以上のようにmodeにoutputを指定するとセットされたオプションの値を表示することができるようになります。
<%AdvancedVariableGetOption(invert, testScope)%>
以上のようにmodeにinvertを指定すると、対象のオプションに、"no"以外の値がセットされている場合は新しく"no"が、それ以外の場合は"yes"がセットされます。
スキン変数Ifが使えないテンプレートや、コメントテンプレートにおいて似たような機能を実現するための擬似的な機能が存在します。
用意されたmodeの値は以下のとおりです。
例 :
<!-- 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にspecial-withlinkを指定すると、オプションの値にHTMLリンクが含まれていれば真、そうでなければ偽、という構文になります。
Nucleus標準のIf構文では使用できません。
scopeにcurrentを指定すると、オプションの値を参照する代わりに、該当するifなどの構文の範囲を参照します。
スキンでは、Nucleus標準のif構文で使用することができます。
このプラグインによる擬似構文を使うよりパフォーマンスがいいので、スキン変数では標準のIf機能の使用を推奨します。
スキン変数で指定しなくても、自動でセットされるオプションがいくつか存在します。
http://example.com/?scope=value
GETのパラメータとして渡された値は、全て自動でオプションにセットされます。
ただし、abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789,./%_-以外の文字はセット前に削除されます。
FancyURLモードが有効の場合はPATH_INFOのパスについても自動でオプションが設定されます。
/item/11/category/6
というパスの場合は、
オプションの名前 | オプションの値 |
---|---|
item | 11 |
11 | category |
category | 6 |
6 | yes |
のように値がセットされます(パスの最後にあたるオプションには"yes"がセットされます)。
テンプレート、コメントテンプレートに変数を書いたときに有効になります。
アイテムの作者名(shortname)がセットされます。
テンプレート、コメントテンプレートに変数を書いたときに有効になります。
アイテムのカテゴリー名がセットされます。
コメントテンプレートに変数を書いたときに有効になります。
コメントの投稿者名(メンバーの場合はshortname)がセットされます。
コメントテンプレートに変数を書いたときに有効になります。
コメントの投稿者のメンバーID(非メンバーの場合は0)がセットされます。
常に"yes"がセットされています(上書き不可)。
常に"no"がセットされています(上書き不可)。
valueにscope-で始まる文字列を指定すると、指定された文字列ではなく、scope-に続く文字列を名に持ったオプションの値を参照します。
スキン変数Ifが使用できます。
<%If(hasplugin, AdvancedVariableGetOption, itemid=4126)%> <!-- GETのパラメータで、itemidが4126に指定されている場合のみここが表示される --> <%Endif%>
NP_NoLinkNoDisplay(公開停止)の機能に相当します。
<%AdvancedVariableGetOption(if, current, special-withlink)%> <!-- ここにHTMLリンクがある場合のみここは表示される --> <!-- 条件に一致しないのでここは表示されない --> <%AdvancedVariableGetOption(endif)%>
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リンクを含むとき真 |
※どなたでも、思いついたキーワードを入力いただけると助かります。