2.6 系以前の WebRelease では & の & への変換は行なわれていませんでした。「1行テキスト」と「複数行テキスト」中の & を & に変換したい場合には 2.7 系以降の WebRelease を使用して、テンプレートの WTL を 2.70 以降に設定してください。2.7 系以降の WebRelease を使用しても WTL が 2.60 系以前に設定されている場合には & の & への変換は行なわれません。
5章 テンプレート - 5. テンプレートの展開
展開中の式の中に要素名を記述することで要素の値を参照することができます。
たとえば「会社名」という、「1行テキスト」型の要素がテンプレートの要素として定義されている場合、ページ編集画面でその要素に対して入力された値をコンテンツ中に埋め込むためには、
<body>
...
...<tr><th>会社名</th><td>%会社名%</td></tr>...
...
</body>
のように記述します。要素名「会社名」が % に挟まれた式の中にあるので、その部分は要素「会社名」に入力された文字列で置き換えられます。
式の中に要素名を記述すると、それは、その要素の値の参照となります。要素の値は、その要素の型によって以下のような値をとります。
要素の型 | 値 |
---|---|
1行テキスト | 入力された文字列 |
複数行テキスト | 入力された文字列 |
WYSIWYG エディタ | 入力されたコンテンツの HTML 文字列 |
ラジオボタン | 選択されている選択肢の文字列 |
ポップアップボタン | 選択されている選択肢の文字列 |
チェックボックス | CheckBox オブジェクト |
年月日/時分/秒 | 1970/1/1 0:0:0 GMT からの経過ミリ秒数 |
目次 | Page オブジェクトの配列 |
リンク | リンク先ページの URL(文字列) |
イメージ | イメージの URL(文字列) |
添付ファイル | 添付ファイルの URL(文字列) |
XML リーダ | XMLReader オブジェクト |
コンポーネント | N/A |
グループ項目 | N/A |
セレクタ | Selector オブジェクト |
「1行テキスト」と「複数行テキスト」は、要素の値を参照するとその要素に入力されている文字列を参照することができますが、その要素の「HTML可」のオプションが OFF の場合には、その要素に入力されているテキスト中の < > & はそれぞれ < > & に変換された結果を参照することになります。ただし & に関しては、その & が既に文字参照を構成していると考えられる場合には & への変換は行なわれません。例えば「複数行テキスト」の中に 「abc&xyz」という文字列が含まれている場合、& 部分は既に文字参照を構成していると考えられますので、この場合の & は & への書き換えは行なわれません。 「HTML可」のオプションが ON の場合には、入力されたテキストそのものが値となります。変換は一切行なわれません。
2.6 系以前の WebRelease では & の & への変換は行なわれていませんでした。「1行テキスト」と「複数行テキスト」中の & を & に変換したい場合には 2.7 系以降の WebRelease を使用して、テンプレートの WTL を 2.70 以降に設定してください。2.7 系以降の WebRelease を使用しても WTL が 2.60 系以前に設定されている場合には & の & への変換は行なわれません。
表中の値の欄が N/A となっている要素型がありますが、式を計算した結果がこのタイプの要素となった場合、展開処理はエラーになります。例えば「住所」というグループ項目型の要素が定義されているとして、展開中に「%住所%」という式を書くとエラーになります。
リンク/イメージ/添付ファイル型の要素の文字列表現は URL です。(Preview 時は Preview URL になり、公開サーバに転送するためにコンテンツ生成を行う場合には、公開サーバ上での URL になります)これらの要素については展開の中では下記のように使用します。
...
...<img src="%写真%" .../>...
...
...<a src="%添付ファイル%" ...>ダウンロード</a>
...
...<a src="%リンク先%" ...>詳しくはこちら</a>
...
それ以外のオブジェクトは、いずれも、要素に入力されている値がそのまま文字列表現になっています。展開中で参照すると、入力されている文字列を展開中に埋め込むことができます。
...
<p>%文章%</p>
...
<p>ラジオボタンの選択状態は%radio%です</p>
...
テンプレート内でグループ項目の中の要素を展開する場合は、'.'(‘ピリオド)で子要素の名前をつなげて参照します。
%グループ項目の要素名.下位の要素名%
たとえば、住所というグループ項目が、郵便番号と都道府県という2つの下位項目を持っている場合、テンプレートの展開中では、下記のように記述します。
...
<tr>
<td>%住所.郵便番号%</td>
<td>%住所.都道府県%</td>
</tr>
...
グループ項目の要素はさらに、下位のグループ項目を持つこともできます。その場合にも、子要素のさらに子要素の参照は、要素名をピリオドでつないで要素を指定してください。
上の例は、テンプレート要素定義の例ですが、この例では「住所」というグループ項目の下位に「郵便番号」という要素と、さらに、「氏名」というグループ項目が定義されています。「氏名」は、さらにその下位に「姓」と「名」という要素を持っています。
それぞれの要素には下記のように参照します。
%住所.郵便番号%
%住所.氏名.姓%
%住所.氏名.名%
展開の中で、目次タイプの要素や、繰り返しを持つ項目の中の特定の位置を参照する場合には [ ] を使います。要素名の後ろに[ ] をつけ、その中に参照したい要素の位置を指定します。先頭を 0 で指定します。
たとえば、住所というグループ項目に「繰り返しあり」の指定があり、郵便番号と都道府県という2つの下位項目を持っている場合、展開中には、
...
...<tr>
<td>%住所[0].郵便番号%</td>
<td>%住所[0].都道府県%</td>
</tr>
<tr>
<td>%住所[1].郵便番号%</td>
<td>%住所[1].都道府県%</td>
</tr>
...
という表記が可能です。
列の範囲外を参照するとエラーになります。例えば [ ] の中に負の数を入れるとエラーになります。また、列の長さを超えた値を [] 内に指定してもエラーになります。例えば、列の長さが 3 の時に [ ] の内側には 0, 1, 2 は指定できますが 3 を与えるとエラーになります。