Title: SDL Lesson 2 - SDL タグを使う
ここでは、DocSDK20: SDL Lesson 1 - はじめの一歩 に簡単な SDL タグをいくつか加えた「Second Step」ビューを作成し、実際の画面にどのように出力(表示)されるかを確認します。
ファイルを作成する
2ndstep.sdl
次の内容をテキストエディタにコピー&ペーストし、「2ndstep.sdl」という名前で、プラグインのフォルダの、/com/traction/sdl/tutorial に保存します。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<title>SDL Tutorial</title>
</head>
<body>
<h1>The 2nd Step</h1>
<h2>Current Date/Time</h2>
<p><datetime></p>
<p><datetime /></p>
<p><$datetime$></p>
<p>__datetime__</p>
<p><datetime dateformat="YYYY/MM/dd HH:mm:ss Z" /></p>
<h2>Server Information</h2>
<p>__server.name__ __server.version.id__</p>
<h2>The value of "hoge"</h2>
<p><url.param name="hoge" /></p>
</body>
</html>
上記 SDL コードの中に、<datetime>
のような、いくつかの見慣れないタグが見つかります。これらが SDL タグです。
SDL タグの意味
上記のコード中で使用した SDL タグは次の意味です。
datetime
... 現在時刻を返します。
server.name
... TeamPage サーバーの名前を返します。この「名前」は、サーバーセットアップ > 一般 > サーバー管理 ページの TeamPage サーバー名 で設定できます。
server.version.id
... TeamPage サーバーのバージョン番号を返します。(参照: FAQ2277: TeamPageのバージョンはどこで確認できますか?)
- url.param ... 「name」属性で指定された URL パラメーターの値を取得します。
SDL タグの書き方
SDL タグは、HTML タグのように <TagName>
と書くことも、下記のように書くこともできます。いずれも同じ動作になります。どれを使うかは書き手の自由です。なお、<TagName>
と書くときは、閉じ括弧を表すスラッシュを入れて <TagName />
とすることもできます。
<TagName>
<TagName>
</TagName>
<TagName />
<$TagName$>
<$TagName$>
</$TagName$>
__TagName__
SDL タグの種類
タグには、値を返すタグ、真偽 (True/False) を返すタグ、かたまりをループで返すタグ…など、いくつかの種類があります。
値を返すタグ
この種類のタグは <TagName> ではなく __TagName__ として表記されることが多いです。
<!-- 記事の投稿者名(ユーザー名)を返します。 -->
<entry.author.name>
__entry.author.name__
<!-- 段落の内容(コンテンツ)を返します。 -->
<item.content>
__item.content__
真偽を返すタグ
<!-- ログイン済みのユーザーかどうか(ビジターかどうか)を返します -->
<user.visitor>
<!-- 二つの値が等しいか否かを返します。 -->
<compare.equals "ABC" "XYZ">
この種類のタグは、<else>
タグを使って次のように IF 構文に使用します。
<compare.equals "ABC" "XYZ">
<div>ABC is XYZ.</div>
<else>
<div>ABC is not XYZ.</div>
</compare.equals>
かたまりをループで返すタグ
<!-- 複数のエントリー全体を返します。 -->
<entries proj="*" type="rchron" max="10">
<!-- フロントページのセクション全体を返すタグ -->
<frontpage.sections>
<!-- 新しい記事の投稿権限のあるスペース全体タグ -->
<projects.post>
例えば、次のようにすべてのスペースから記事を新しい順に10件得ることができます。
<entries type="rchron" proj="*" max="10">
<div>__loop.index__ __entry.title__</div>
</entries>
例えば、次のようにすると、新しい記事を投稿する権限のあるスペースの一覧を得られます。(参照: DocSDK142: SDL Lesson 4 - スペースの一覧を取得する)
<projects.post>
__project.displayname__ (__project.name__)
</projects.post>
ループ処理するタグ
<!-- list属性の値をひとつずつループ内に渡して処理します -->
<foreach list="1,2,3,4,5">
<div>__foreach.current__</div>
</foreach>
特定の動作を行うタグ
<!-- 記事ボリュームの選択ドロップダウンリストを返します。 -->
<select.volume>
他の関数やブロックをブロックを呼び出す(読み込む)タグ
<!-- 関数「foo」を呼び出します。 -->
<sdl.include template="#foo" />
<#foo />
<!-- ファイル「bar」内の関数「foo」を呼び出します。 -->
<sdl.include template="bar#foo" />
<bar#foo />
関数を定義するタグ
<!-- 関数「foo」を定義する -->
<sdl.function name="foo">
Something Something...
</sdl.function>
ブロックを定義するタグ
<!-- ブロック「hoge」を定義する -->
<sdl.block name="hoge">
Something Something...
</sdl.block>
コメント用タグ(コメントアウト)
プログラムのコメント(メモ)を残すための、<sdl.comment>...</sdl.comment>
タグが用意されています。
<sdl.comment>
Comment Comment Comment ...
</sdl.comment>
しかし、次の <!--- ... -->
を使うことが多いです。(HTML のコメントは <!--
で始めますが、SDL のコメントは <!---
で始めます。ハイフンが 3 つであることに注意してください。ハイフンが 2 つの場合は HTML のコメントになり、コメントの内容は出力されます。)
<!--- これはコメントです。 -->
プロパティファイル(設定ファイル)から値を取得するタグ
<!-- ビューの設定ファイルから piyo= の値を読み込む -->
<config.view.value name="piyo" />
変数に関するタグ
<!-- ローカル変数「foo」に値を代入する -->
<variable.local.set name="foo" value="10" />
<variable.local.set name="foo">10</variable.local.set>
<!-- ローカル変数「foo」から値を読み込む -->
<variable.local.value name="foo" />
タグのパラメーター(属性)
タグによってはパラメーター(属性)を使用でき、それによって返される値が変わるものがあります。
例えば、パラメーター無しの datetime
タグ(datetime
関数)は、現在の日付をロケールに合わせた表記で返します。日本語ロケールでは「2014/04/05」のように、英語ロケールでは「5 April, 2014」のようになります。
パラメーターを使用する場合、SDL タグを <タグ名 属性="値" 属性="値" ...>
のように記述します。上記のコードでは、「dateformat」属性の値で「YYYY/MM/dd HH:mm:ss Z」を指定しています。これは、現在の日時を「西暦4桁/月2桁/日2桁 24時/分/秒 標準時との差」で表す、という意味です。
他に dateformat="long"
や dateformat="raw"
など、いくつかの予約値を使用することもできます。
また、url.param タグは、「name」パラメーター(属性)で指定された URL パラメーターから値を取得します。例えば、<url.param name="hoge" />
は、URL に「&hoge=FooBar」が含まれる場合、「FooBar」を返します。
2ndstep.properties
前述の 2ndstep.sdl を使うための設定ファイル 2ndstep.properties を /config/view/all に作成します。下記の内容をテキストエディタにコピー&ペーストし、「2ndstep.properties」という名前で保存してください。
sdl=com.traction.sdl.tutorial.2ndstep
「sdl=」行で 2ndstep.sdl の保存場所を、フォルダをドット記号(ピリオド記号)で区切って記述します。
キャッシュをクリアする
sdl ファイルや properties ファイルを設置、編集した後は、必ずサーバーセットアップ > 一般 > サーバー管理の [キャッシュのクリア] をクリックします。
動作確認する
検索ボックスに /type 2ndstep と入力して Enter キーを押し、「2ndstep」ビューを表示(実行)します。
下図のように、現在の日付(日時)、サーバーの名前とバージョン番号、URL パラメーター「hoge」の値が表示されれば成功です。(URL パラメーター「hoge」は指定されていないので、何も表示されませんが)
それでは、URL パラメーター「hoge」を指定(追加)してみましょう。「hoge」の値が画面に反映することを確認してください。
まとめ
1. SDL タグは、<TagName>
や <TagName />
や <$TagName$>
や __TagName__
のように記述する。
2. SDL タグには、<TagName hoge="piyo" foo="bar" ...>
のようにパラメーター(属性と値)を指定できるものがある。