plugins:advancedvariablegetoption

NP_AdvancedVariableGetOption.php

NP_AdvancedVariableGetOptionはスキン変数<%if%>のためのプラグインです。

:!: このプラグインには不具合が潜在している可能性があります :!:

NP_VariablegetOptionNP_IfCategoryNameIsNP_NoLinkNoDisplayの後継に当たります。

NP_VariableGetOptionに、テンプレートで使える擬似的なIf機能と他二つのプラグインの機能を追加したものです。

General Plugin info
作者 NKJG
最新のバージョン 0.0.1
入手先 作者のページ

インストール方法

  1. Zipファイルを展開して、中身をサーバーのプラグインディレクトリにアップロードする
  2. 管理画面からプラグインをインストールする
  3. スキン・テンプレートに記述を追加する

このプラグインの使い方

このプラグインは自身のオプション情報を持ち、そのオプション情報を管理することができるのみです。スキン・テンプレート以外には影響を及ぼしません。

このプラグインでできることはおおきく分けて以下のとおりです。

  • オプションの値のセット
  • オプションの値の操作
  • オプションの値を使った擬似的な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

というパスの場合は、

オプションの名前オプションの値
item11
11category
category6
6yes

のように値がセットされます(パスの最後にあたるオプションには"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リンクが存在しない場合、その範囲を表示しない

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-withlinkHTMLリンクを含むとき真

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 (外部編集)