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 &quot;hoge&quot;</h2>
      <p><url.param name="hoge" /></p>
  </body>
</html>



2ndstep.sdl

上記 SDL コードの中に、<datetime> のような、いくつかの見慣れないタグが見つかります。これらが SDL タグです。

SDL タグの意味



上記のコード中で使用した SDL タグは次の意味です。



SDL タグの書き方



SDL タグは、HTML タグのように <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


2ndstep.properties

「sdl=」行で 2ndstep.sdl の保存場所を、フォルダをドット記号(ピリオド記号)で区切って記述します。

キャッシュをクリアする



sdl ファイルや properties ファイルを設置、編集した後は、必ずサーバーセットアップ > 一般 > サーバー管理の [キャッシュのクリア] をクリックします。

動作確認する



検索ボックスに /type 2ndstep と入力して Enter キーを押し、「2ndstep」ビューを表示(実行)します。



下図のように、現在の日付(日時)、サーバーの名前とバージョン番号、URL パラメーター「hoge」の値が表示されれば成功です。(URL パラメーター「hoge」は指定されていないので、何も表示されませんが)

ビューを表示

それでは、URL パラメーター「hoge」を指定(追加)してみましょう。「hoge」の値が画面に反映することを確認してください。

hoge URL parameter

まとめ



1. SDL タグは、<TagName><TagName /><$TagName$>__TagName__ のように記述する。

2. SDL タグには、<TagName hoge="piyo" foo="bar" ...> のようにパラメーター(属性と値)を指定できるものがある。



Attachments:
image1.png
image2.png
image3.png
image4.png
image5.png
関連記事
親記事に追加されている (1)
Article: DocSDK24 (permalink)
Date: 2014/04/07; 0時28分55秒 JST

Author Name: TeamPage サポート
Author ID: jpbo