関数索引
channelName() 関数はその時点で行われている展開処理がどのチャネル向けのものであるかを示すチャネル名を返します。
WebRelease は、サイトに複数のチャネルが定義されている場合、ページのコンテンツを生成する展開処理をそのチャネル数だけ繰り返して行います。例えば、main tablet mobile という 3 つのチャネルが定義されているサイトでトップページ index.html の生成を行う場合、展開の処理は 3 回行われます。
1 回めの展開処理の中で呼び出された channelName() 関数の返り値は文字列 main です。
2 回めの展開処理の中で呼び出された channelName() 関数の返り値は文字列 tablet です。
3 回めの展開処理の中で呼び出された channelName() 関数の返り値は文字列 mobile です。
順序は例です。展開は 3 回実行されますが、その実行順序は不定です。
channelName() は channel().channelName() と等価です。
後日のチャネルの増設などにより柔軟に対応できる Channel オブジェクトの hasTag() メソッドの利用も検討してください。
チャネルに応じて異なるコンテンツを生成してみます。テンプレートの展開は、この 3 つの wr-if だけにしてしまい、実際の展開処理をそれぞれのチャネル向けのコンテンツを生成するメソッドに任せてしまいます。 テンプレートのメソッドとして generateTextMobile() generateTextTablet() generateTextMain() の3つを用意してそれぞれのチャネルのの展開をその中で行うようにします。
<wr-if condition="channelName() == \"mobile\"">%generateTextMobile()%</wr-if>
<wr-if condition="channelName() == \"tablet\"">%generateTextTablet()%</wr-if>
<wr-if condition="channelName() == \"main\"">%generateTextMain()%</wr-if>
html の head 節内の title タグに | に続けて展開中のチャネル名を埋め込んでみます。
<!DOCTYPE html>
<html>
<head>
......
<title>%pageTitle()% | %channelName()%</title>
......
</head>
<body>
......
</body>
</html>
例えば、%channelName()% 部分は mobile と展開されるでしょう。
この用途には Channel オブジェクトの displayName() メソッドの方が柔軟性があって良いかもしれません。
channel() 関数の説明も参照してください。