ある条件下で内容を分岐させる
<%if%>、<%ifnot%>、<%else%>、<%elseif%>、<%elseifnot%>、<%endif%>は、その組み合わせにより、条件分岐を制御します。
以下の例は、もっともシンプルな形です。(条件については引数を参照の事)
<%if(条件A)%>
条件Aを満たしている場合に実行する部分
<%endif%>
次の例では、条件に合わなかった場合も制御します。
<%if(条件A)%>
条件Aを満たしている場合に実行する部分
<%else%>
条件Aを満たしていない場合に実行する部分
<%endif%>
最初の条件に合わなかった場合、別の条件を与えることも可能です。
<%if(条件A)%>
条件Aを満たしている場合に実行する部分
<%elseif(条件B)%>
条件Aを満たしていなく、
条件Bを満たしている場合に実行する部分
<%elseif(条件C)%>
条件Aと、条件Bを満たしていなく、
条件Cを満たしている場合に実行する部分
<%endif%>
否定条件を指定することも可能です。
<%ifnot(条件A)%>
条件Aを満たしていない場合に実行する部分
<%else%>
条件Aを満たしている場合に実行する部分
<%endif%>
別の条件に、否定条件を指定することも可能です。
<%if(条件A)%>
条件Aを満たしている場合に実行する部分
<%elseifnot(条件B)%>
条件Aを満たしていなく、
条件Bも満たしていない場合に実行する部分
<%else%>
条件Aを満たしていなく、
条件Bを満たしている場合に実行する部分
<%endif%>
また、以下のように多重に組み合わせることも可能です。
<%if(条件A)%>
<%if(条件B)%>
条件Aを満たしていて、
条件Bも満たしている場合に実行する部分
<%else%>
条件Aは満たしているが、
条件Bは満たしていない場合に実行する部分
<%endif%>
<%else%>
条件Aを満たしていない場合に実行する部分
<%endif%>
以上のように、柔軟な条件制御構造を持つことが可能です。
引数
<%if(type, name, value)%>
<%ifnot(type, name, value)%>
<%elseif(type, name, value)%>
<%elseifnot(type, name, value)%>
必須:
- type:条件の種類。9種類の定数、もしくはif拡張対応プラグイン名を指定します。条件の種類によっては下記オプションが必須引数となります。(詳細後述)
オプション:
「第1引数:条件の種類」ごとの解説
- 条件の種類:category
- カテゴリが選択されているかどうか
<%if(category)%>
- 選択中カテゴリの名前が、第3引数の指定値と一致するかどうか
<%if(category, catname, カテゴリ名)%>
- 選択中カテゴリのidが、第3引数の指定値と一致するかどうか
<%if(category, catid, カテゴリid)%>
- 条件の種類:blogsetting
blog設定のname項目の値が第3引数の指定値と一致しているか調べる。
nameはSQLテーブルnucleus_blogにあるカラム名です。(Nucleusに付属の/nucleus/documentation/devdocs/sqltables.html#nucleus_blog にてカラム名とその値の内容が参照できます。)
以下に、いくつかの項目の例を挙げます。
- 選択中ブログのidが、第3引数の指定値と一致するかどうか
<%if(blogsetting, bnumber, ブログid)%>
- 選択中ブログのデフォルトスキンのidが、第3引数の指定値と一致するかどうか
<%if(blogsetting, bdefskin, スキンid)%>
- 選択中ブログのコメントを許可するかどうかの設定が、第3引数の指定値(1=許可, 0=不許可)と一致するかどうか
<%if(blogsetting, bcomments, 0もしくは1)%>
- 条件の種類:loggedin
- 閲覧者がログインしているかどうか
<%if(loggedin)%>
- 条件の種類:onteam
- 閲覧者がログインしており、なおかつ、選択中ブログのチームに入っているかどうか
<%if(onteam)%>
- 閲覧者がログインしており、なおかつ、第2引数(ブログの短縮名)で指定したブログのチームに入っているかどうか
<%if(onteam, ブログ名)%>
- 条件の種類:admin
- 閲覧者がログインしており、なおかつ、選択中ブログの管理権限があるかどうか
<%if(admin)%>
- 閲覧者がログインしており、なおかつ、第2引数(ブログの短縮名)で指定したブログの管理権限があるかどうか
<%if(admin, ブログ名)%>
- 条件の種類:nextitem
個別アイテムでのみ使用可能
- 表示中アイテムよりも、より古い日時のアイテムが存在するかどうか
<%if(nextitem)%>
- 条件の種類:previtem
個別アイテムでのみ使用可能
- 表示中アイテムよりも、より新しい日時のアイテムが存在するかどうか
<%if(previtem)%>
- 条件の種類:skintype
- 表示中ページのスキンタイプが、第3引数の指定値と一致するかどうか
<%if(skintype, スキンタイプ)%>
第3引数には以下の8種類の定数か、スペシャルスキンで設定したスキンタイプを指定します。
スキンタイプ定数
index-メインの目次、item-個別アイテム、archivelist-月別アーカイブ一覧、archive-月別アーカイブ、search-検索、member-メンバー詳細、error-エラー、imagepopup-画像ポップアップウィンドウ
- 条件の種類:hasplugin
第2引数には、'NP_'を取ったプラグイン名を指定します。
- 第2引数で指定したプラグインがインストールされているかどうか
<%if(hasplugin, プラグイン名)%>
- 第2引数で指定したプラグインがインストールされており、第3引数で指定したグローバルオプションがno以外であるかどうか
<%if(hasplugin, プラグイン名, プラグインのグローバルオプション名)%>
- 第2引数で指定したプラグインがインストールされており、第3引数で指定したグローバルオプションが、=以下で定義した値と一致するかどうか
<%if(hasplugin, プラグイン名, プラグインのグローバルオプション名=値)%>
- 条件の種類:if拡張対応プラグイン名
第1引数には、'NP_'を取ったプラグイン名を指定します。
- 第1引数で指定したプラグインに、第2引数、第3引数を渡した結果が真かどうか
<%if(プラグイン名, プラグイン独自の引数, プラグイン独自の引数)%>
スキンタイプ
<!-- スキンタイプによって<title>を変える -->
<%if(skintype,item)%>
<title><%itemtitle%></title>
<%elseif(skintype,error)%>
<title>Error!</title>
<%else%>
<title><%blogsetting(name)%></title>
<%endif%>
(目次スキンの)動作サンプルページへ