Comments
Description
Transcript
OpenCms タグリファレンス
OpenCms タグリファレンス 株式会社 ジークス (2010 年 10 月 25 日更新) 目次 1 はじめに ..............................................................................................................................9 2 property 『設定されているプロパティの値を表示する。』 ...............................................9 2-1 name............................................................................................................................................... 11 2-2 file................................................................................................................................................... 12 2-3 escapeHtml .................................................................................................................................... 13 2-4 plainText ........................................................................................................................................ 13 2-5 default............................................................................................................................................ 13 2-6 defaultProperty ............................................................................................................................. 14 2-7 trimSuffix ...................................................................................................................................... 15 2-8 setRequest ..................................................................................................................................... 16 2-9 setSession ...................................................................................................................................... 16 2-10 type............................................................................................................................................... 17 2-11 delimiter....................................................................................................................................... 20 2-12 delimPrefix .................................................................................................................................. 20 2-13 delimSuffix .................................................................................................................................. 20 2-14 connector...................................................................................................................................... 21 2-15 head.............................................................................................................................................. 21 2-16 tail ................................................................................................................................................ 21 2-17 filters............................................................................................................................................ 22 2-18 map............................................................................................................................................... 25 2-19 query ............................................................................................................................................ 26 2-20 replaceRegex................................................................................................................................ 31 2-21 replace.......................................................................................................................................... 31 2-22 その他の機能 ............................................................................................................................... 31 3 include 『別のファイルをインクルードする。 』..............................................................32 3-1 file................................................................................................................................................... 32 3-2 page ................................................................................................................................................ 32 3-3 element .......................................................................................................................................... 33 3-4 editable .......................................................................................................................................... 34 3-5 cacheable........................................................................................................................................ 35 3-6 escapeHtml .................................................................................................................................... 35 3-7 plainText ........................................................................................................................................ 35 3-8 default............................................................................................................................................ 36 2 3-9 defaultElement.............................................................................................................................. 36 3-10 defaultProperty ........................................................................................................................... 37 3-11 trimSuffix..................................................................................................................................... 38 3-12 setRequest ................................................................................................................................... 39 3-13 setSession .................................................................................................................................... 39 3-14 head.............................................................................................................................................. 40 3-15 tail ................................................................................................................................................ 40 3-16 filters............................................................................................................................................ 41 3-17 property ....................................................................................................................................... 41 3-18 attribute....................................................................................................................................... 41 3-19 suffix ............................................................................................................................................ 42 3-20 replaceRegex................................................................................................................................ 42 3-21 replace.......................................................................................................................................... 42 3-22 requireFile ................................................................................................................................... 42 3-23 その他の機能(直接編集ボタンの表示位置がずれる問題への対処)........................................ 43 4 link 『リンクの自動補正を行う。 』 ..................................................................................44 5 editable 『直接編集ボタンの表示・非表示を制御する。』 ..............................................45 6 block 『ページの一部の表示・非表示を制御する。』 ......................................................46 6-1 path ................................................................................................................................................ 46 6-2 excludes.......................................................................................................................................... 46 6-3 project ............................................................................................................................................ 46 7 offline 『ページの一部を Offline の時のみ表示する。』 ..................................................47 7-1 path と excludes .......................................................................................................................... 47 8 online 『ページの一部を Online の時のみ表示する。』...................................................47 8-1 path と excludes .......................................................................................................................... 47 9 template 『テンプレートを分割して利用する。 』 ...........................................................48 9-1 element .......................................................................................................................................... 48 9-2 ifexists............................................................................................................................................ 49 9-3 ifexistsone ...................................................................................................................................... 49 9-4 ifexistsall ....................................................................................................................................... 49 9-5 ifexistsnone.................................................................................................................................... 49 9-6 file................................................................................................................................................... 50 9-7 path ................................................................................................................................................ 50 10 contentload 『構造化コンテンツのデータを呼び出す。』 .............................................51 10-1 collector........................................................................................................................................ 51 10-2 param........................................................................................................................................... 54 3 10-3 editable ........................................................................................................................................ 61 10-4 pageIndex .................................................................................................................................... 61 10-5 pageSize ....................................................................................................................................... 61 10-6 pageNavLength ........................................................................................................................... 61 10-7 preload ......................................................................................................................................... 62 10-8 locale ............................................................................................................................................ 62 10-9 var ................................................................................................................................................ 62 10-10 scope........................................................................................................................................... 63 11 contentshow 『構造化コンテンツの入力データを表示する。』.....................................64 11-1 element......................................................................................................................................... 64 11-2 locale ............................................................................................................................................ 65 11-3 escapeHtml .................................................................................................................................. 65 11-4 plainText ...................................................................................................................................... 65 11-5 default .......................................................................................................................................... 65 11-6 defaultElement............................................................................................................................ 66 11-7 defaultProperty ........................................................................................................................... 67 11-8 trimSuffix..................................................................................................................................... 68 11-9 setRequest.................................................................................................................................... 69 11-10 setSession .................................................................................................................................. 69 11-11 type ............................................................................................................................................. 70 11-12 delimiter..................................................................................................................................... 74 11-13 delimPrefix ................................................................................................................................ 74 11-14 delimSuffix................................................................................................................................. 74 11-15 connector.................................................................................................................................... 75 11-16 head............................................................................................................................................ 75 11-17 tail .............................................................................................................................................. 75 11-18 filters .......................................................................................................................................... 76 11-19 map............................................................................................................................................. 76 11-20 query .......................................................................................................................................... 77 11-21 replaceRegex.............................................................................................................................. 78 11-22 replace........................................................................................................................................ 78 11-23 その他の機能 ............................................................................................................................. 78 12 contentinfo 『ページネーション情報を取得する。』 .....................................................79 12-1 var ................................................................................................................................................ 79 12-2 scope............................................................................................................................................. 79 13 contentloop 『構造化コンテンツの可変長項目の入力データを表示する。 』 ................80 4 13-1 element ........................................................................................................................................ 80 13-2 offset............................................................................................................................................. 80 13-3 limit.............................................................................................................................................. 80 13-4 order............................................................................................................................................. 81 13-5 test................................................................................................................................................ 82 13-6 var ................................................................................................................................................ 83 13-7 scope............................................................................................................................................. 84 14 contentcheck 『構造化コンテンツの表示条件を指定する。』 .......................................85 14-1 ifexists.......................................................................................................................................... 85 14-2 ifexistsone .................................................................................................................................... 85 14-3 ifexistsall ..................................................................................................................................... 85 14-4 ifexistsnone.................................................................................................................................. 86 14-5 ifexistsblank ................................................................................................................................ 86 14-6 equals ........................................................................................................................................... 86 14-7 notEquals..................................................................................................................................... 86 14-8 contains........................................................................................................................................ 86 14-9 notContains ................................................................................................................................. 87 14-10 starts .......................................................................................................................................... 87 14-11 notStarts .................................................................................................................................... 87 14-12 ends ............................................................................................................................................ 87 14-13 notEnds...................................................................................................................................... 87 14-14 level ............................................................................................................................................ 87 14-15 current ....................................................................................................................................... 88 14-16 baseUrl....................................................................................................................................... 88 14-17 groups ........................................................................................................................................ 88 14-18 users........................................................................................................................................... 89 14-19 project ........................................................................................................................................ 89 14-20 resourcetypes............................................................................................................................. 89 14-21 expire ......................................................................................................................................... 90 14-22 status ......................................................................................................................................... 90 14-23 locale .......................................................................................................................................... 90 15 contentaccess 『構造化コンテンツをオブジェクトとして取得する。』........................91 15-1 var ................................................................................................................................................ 91 15-2 scope............................................................................................................................................. 92 15-3 locale ............................................................................................................................................ 92 16 breadCrumnb 『パンくずリストを作成する。 』............................................................93 5 16-1 path .............................................................................................................................................. 93 16-2 property ....................................................................................................................................... 94 16-3 start.............................................................................................................................................. 94 16-4 end................................................................................................................................................ 95 16-5 link ............................................................................................................................................... 96 16-6 delimiter ...................................................................................................................................... 96 16-7 prefix ............................................................................................................................................ 97 16-8 suffix ............................................................................................................................................ 97 16-9 visible ........................................................................................................................................... 97 16-10 setRequest ................................................................................................................................. 98 16-11 setSession .................................................................................................................................. 98 16-12 option ......................................................................................................................................... 99 16-13 exclude ....................................................................................................................................... 99 16-14 その他の機能 ........................................................................................................................... 100 17 user 『ログインユーザーの情報を表示する。 』 ...........................................................101 17-1 property ..................................................................................................................................... 101 18 info 『システム情報を表示する。 』 ..............................................................................102 18-1 property ..................................................................................................................................... 102 19 label 『プロパティファイルで定義された文字列を表示する。 』.................................104 20 job 『ジョブをスケジューラに登録する。 』 .................................................................105 20-1 classname .................................................................................................................................. 105 20-2 name........................................................................................................................................... 105 20-3 date............................................................................................................................................. 105 20-4 reuse........................................................................................................................................... 105 20-5 user............................................................................................................................................. 105 20-6 project ........................................................................................................................................ 105 20-7 siteroot ....................................................................................................................................... 106 20-8 uri............................................................................................................................................... 106 20-9 locale .......................................................................................................................................... 106 20-10 encoding................................................................................................................................... 106 20-11 addr .......................................................................................................................................... 106 21 mail 『メールを送信する。 』 ........................................................................................107 21-1 subject ........................................................................................................................................ 107 21-2 to................................................................................................................................................. 107 21-3 cc................................................................................................................................................. 107 21-4 bcc............................................................................................................................................... 107 6 21-5 from ............................................................................................................................................ 107 21-6 mode........................................................................................................................................... 108 21-7 head............................................................................................................................................ 108 21-8 body ............................................................................................................................................ 108 21-9 foot.............................................................................................................................................. 109 21-10 attach ....................................................................................................................................... 109 21-11 html .......................................................................................................................................... 109 21-12 wait .......................................................................................................................................... 109 21-13 file............................................................................................................................................. 109 21-14 target........................................................................................................................................ 109 21-15 allow......................................................................................................................................... 109 21-16 deny.......................................................................................................................................... 110 21-17 default...................................................................................................................................... 110 21-18 mobileDomains........................................................................................................................ 110 21-19 その他の機能 ........................................................................................................................... 110 22 siteroot 『サイトを一時的に切り替える。 』................................................................. 111 22-1 change .........................................................................................................................................111 22-2 restore .........................................................................................................................................111 23 img 『画像のサムネイルを生成する。 』 .......................................................................112 23-1 src ............................................................................................................................................... 112 23-2 width .......................................................................................................................................... 112 23-3 height ......................................................................................................................................... 112 23-4 scaleType ................................................................................................................................... 112 23-5 scalePosition.............................................................................................................................. 113 23-6 scaleFilter .................................................................................................................................. 114 23-7 scaleQuality............................................................................................................................... 114 23-8 scaleColor................................................................................................................................... 114 23-9 scaleRendermode ...................................................................................................................... 114 23-10 partialTag ................................................................................................................................ 115 23-11 alt ............................................................................................................................................. 115 23-12 align ......................................................................................................................................... 115 23-13 border....................................................................................................................................... 115 23-14 hspace ...................................................................................................................................... 115 23-15 vspace....................................................................................................................................... 115 23-16 id............................................................................................................................................... 115 23-17 longdesc ................................................................................................................................... 115 7 23-18 name......................................................................................................................................... 116 23-19 style.......................................................................................................................................... 116 23-20 title........................................................................................................................................... 116 23-21 usemap..................................................................................................................................... 116 24 jquery 『JQuery を呼び出す。』 ..................................................................................117 24-1 js ................................................................................................................................................. 117 24-2 css............................................................................................................................................... 117 24-3 dynamic...................................................................................................................................... 117 25 param 『パラメータを指定する。』 .............................................................................118 25-1 name........................................................................................................................................... 118 25-2 value........................................................................................................................................... 118 26 式言語関数.....................................................................................................................119 26-1 vfs ............................................................................................................................................... 119 26-2 convertDate ............................................................................................................................... 119 26-3 getCmsObject ............................................................................................................................ 119 26-4 convertLocale............................................................................................................................. 120 26-5 stripHtml ................................................................................................................................... 120 26-6 trimToSize.................................................................................................................................. 120 26-7 convertUUID ............................................................................................................................. 120 27 マクロ変数一覧 .............................................................................................................121 8 1 はじめに この資料は、OpenCms が提供しているカスタムタグのリファレンスマニュアルです。 この資料の内容には、(株)ジークスが独自に拡張した機能の説明も含まれており、それらはオリジナル の OpenCms では使用できませんのでご注意ください。 2 property 『設定されている 設定されているプロパティ されているプロパティの プロパティの値を表示する 表示する。 する。』 このタグは、各ページのプロパティの値を表示する時に使用します。 登録されているプロパティの値は、以下の手順で確認する事ができます。 1. リソースを右クリック、又は、アイコンをクリックし、コンテクストメニューを表示する。 2. リソースのコンテクストメニューから、 「プロパティ」を選択する。 3. プロパティダイアログが表示されるので、「拡張」ボタンをクリックする。 上記の手順で一覧表示されているプロパティ名が、利用可能なプロパティの全てです。 利用可能なプロパティを追加したい時は、以下の手順で行います。 1. リソースを右クリック、又は、アイコンをクリックし、コンテクストメニューを表示する。 2. リソースのコンテクストメニューから、 「プロパティ」を選択する。 3. プロパティダイアログが表示されるので、「拡張」ボタンをクリックする。 4. プロパティの編集ダイアログで「定義…」ボタンをクリックする。 5. 新規プロパティの定義ダイアログで、新規プロパティ欄に、追加したいプロパティ名を入力する。 6. 「OK」ボタンをクリックする。 9 登録されているプロパティ名を削除したい場合は、管理画面から以下の手順でおおないます。 1. 上段のツールバーの表示プルダウンを「エクスプローラ」から「管理メニュー」に変更。 2. 管理画面が表示されるので、コンテンツツールを選択。 3. 「プロパティ定義の削除」アイコンをクリック。 4. 削除したいプロパティを選択する。 5. 「OK」ボタンをクリックする。 プロパティ名を削除すると入力されていたデータも消えます。 独自に追加したプロパティではなく、最初から存在するプロパティは、絶対に削除しないで下さい。 もし、どこかで使用されていれば、削除した為に誤作動をおこす可能性があります。 10 2-1 name 表示させたいプロパティの名前を指定します。大文字、小文字は区別されるので注意してください。 【使用例】 <cms:property name="Title" /> また、プロパティ名にコロンで続けて最大文字数を指定する事が可能です。 プロパティ値に長い文字が入力されていても、指定された最大文字数以降は切り捨てられます。 半角を 1、全角を 2 と計算して指定してください。 【使用例】 <!-Title プロパティに"タイトルです。"という文字が入力されていた場合、 "タイトルです。"と表示されます。 --> <cms:property name="Title" /> <!-Title プロパティに"タイトルです。"という文字が入力されていた場合、 "タイトル"とだけ表示されます。なぜなら、最大文字数が半角 9 文字と指定されているので、 全角 4 文字までが表示されることになります。 --> <cms:property name="Title:9" /> ※ name で指定されたプロパティが未入力の為に、default で指定した文字列が使用された場合は、 文字数制限は適用されません(default で指定した文字列は全て表示されます)。 11 2-2 file 表示対象リソースの検索方法を指定します。 以下の値を指定する事ができます。 uri 現在表示しているページのプロパティ値を取得します。この値はデフォルト値 であり、file に何も指定されていなければ、uri が指定されているものとみな されます。 search uri とほとんど同様ですが、そのページの該当のプロパティが未入力であれば、 親フォルダのプロパティを再帰的に検索します。下から順に検索して行き、最 初に見つかったプロパティ値を返します。 search を活用すれば、ファイル一つ一つにプロパティを設定しなくても、親 フォルダのプロパティにセットすればよくなります。 search.uri search を指定した場合と全く同じです。 element.uri そのページのプロパティ値ではなく、そのページが使用している JSP テンプ レートのプロパティ値を取得します。 search.element.uri そのページのプロパティ値ではなく、そのページが使用している JSP テンプ レートのプロパティ値を取得します。 そのページの該当のプロパティが未入力であれば、親フォルダのプロパティを 再帰的に検索します。下から順に検索して行き、最初に見つかったプロパティ 値を返します。 【使用例】 <cms:property name="Title" file="search" /> <cms:property name="Title" file="element.uri" /> また、file に特定のリソースのパスを指定すると、そのファイルのプロパティ値を取得します。 【使用例】 <cms:property name="Title" file="/news/file100315.jsp" /> 12 2-3 escapeHtml < や >、&等、HTML で使用される特殊文字をエスケープしたい場合は true にします。 入力されたタグを無効にする機能でもあります。デフォルトは false です。 【使用例】 <cms:property name="Title" escapeHtml="true" /> 2-4 plainText 入力された HTML タグを除去して表示する場合は true を指定します。デフォルトは false です。 【使用例】 <cms:property name="Title" plainText="true" /> 2-5 default プロパティの値が未入力だった場合に、代わりに表示させる文字を指定します。 プロパティの値が未入力で、default が指定されていない場合は何も表示されません。 【使用例】 <!-- Title プロパティが未入力の場合は"OpenCms タグリファレンス"という文字を表示します。 --> <cms:property name="Title" default="OpenCms タグリファレンス" /> 13 2-6 defaultProperty プロパティの値が未入力だった場合、defaultProperty で指定したプロパティ値を取得して表示します。 また、これは default との併用も可能です。 【使用例】 <!-Title プロパティが未入力の場合は、NavText プロパティの値を表示します。 NavText プロパティの値も未入力の場合は、"OpenCms 情報"という文字を表示します。 --> <cms:property name="Title" defaultProperty="NavText" default="OpenCms 情報" /> また、プロパティ名にコロンで続けて最大文字数を指定する事が可能です。 プロパティ値に長い文字が入力されていても、指定された最大文字数以降は切り捨てられます。 半角を 1、全角を 2 と計算して指定してください。 defaultProperty では最大文字数を指定せず、name の方で指定している場合、name の最大文字数が適 用されます。 【使用例】 <!-Title プロパティが未入力の場合は、NavText プロパティの値を表示します。 Title プロパティの場合は、半角 14 文字以内、 NavText プロパティの場合は、半角 9 文字以内で表示します。 --> <cms:property name="Title:14" defaultProperty="NavText:9" /> 14 2-7 trimSuffix name や defaultProperty で最大文字数を指定した場合、 切り取られた文字の後ろに付加する文字列を指定できます。 プロパティ値が最大文字数内におさまり、切り取られなかった場合は、 trimSuffix で指定した文字列は付加されません。 また、name や defaultProperty で指定した最大文字数は、 trimSuffix に指定した文字数も含めて計算されます。 【使用例】 <!-name の最大文字数に 13 が指定されており、trimSuffix の文字列が全角 3 文字なので、 13 -(3 × 2)= 半角 7 文字(全角 3 文字)が、表示可能な文字数となります。 よって、Title プロパティに"タイトルです。"という文字が入力されていた場合、 "タイト・・・"と表示されます。 最大文字数の指定が 14(全角 7 文字)であれば、切り捨てられる事もなく、 "タイトルです。"と表示されることになります。 --> <cms:property name="Title:13" trimSuffix="・・・" /> 15 2-8 setRequest 指定されたプロパティの値を request スコープの変数に保存します。 setRequest には保存先の変数名を指定します。 つまり、request.setAttribute("変数名", "プロパティ値"); と同じ意味であり、 保存された値は、スクリプレットの request.getAttribute("変数名")で取得する事が出来ます。 この属性を指定した場合、プロパティの値は request スコープに保存されるだけで表示されません。 【使用例】 <!-- request スコープに Title プロパティの値を保存 --> <cms:property name="Title" setRequest="headline" /> <!-- スクリプレットで Title プロパティの値を取得して表示 --> <%= request.getAttribute("headline") %> <!-- 式言語で Title プロパティの値を取得して表示 --> ${headline} 2-9 setSession 指定されたプロパティの値を session スコープの変数に保存します。 setSession には保存先の変数名を指定します。 つまり、session.setAttribute("変数名", "プロパティ値"); と同じ意味であり、 保存された値は、スクリプレットの session.getAttribute("変数名")で取得する事が出来ます。 この属性を指定した場合、プロパティの値は session スコープに保存されるだけで表示されません。 【使用例】 <!-- session スコープに Title プロパティの値を保存 --> <cms:property name="Title" setSession="headline" /> <!-- スクリプレットで Title プロパティの値を取得して表示 --> <%= session.getAttribute("headline") %> <!-- 式言語で Title プロパティの値を取得して表示 --> ${headline} 16 2-10 type プロパティにセットされているデータの種類を指定することで、出力される内容を制御します。 type には、以下の値をセットする事ができます。 date プロパティに、日付のデータが"1204133250312"のような UNIX TIME 形式 で入っている場合、date を指定すると、"2008/02/28 02:27"という表示が得ら れるようになります。(単位はミリ秒なので、通常の UNIX TIME を 1000 倍 した値になりますので注意して下さい。 ) デフォルトの日付フォーマットは"yyyy/MM/dd HH:mm"ですが、コロンの後 に日付のフォーマットを指定する事ができます。 【使用例】 <cms:property name="Birthday" type="date" /> <cms:property name="Birthday" type="date:yyyy 年 M 月 d 日" /> releasedate 該当のリソースの公開日を表示します。 これは、プロパティの値とは無関係なので、name の指定は無視されます。 デフォルトの日付フォーマットは"yyyy/MM/dd HH:mm"ですが、コロンの後 に日付のフォーマットを指定する事ができます。 【使用例】 <cms:property type="releasedate:yyyy 年 M 月 d 日" /> expiredate 該当のリソースの公開期限を表示します。 これは、プロパティの値とは無関係なので、name の指定は無視されます。 デフォルトの日付フォーマットは"yyyy/MM/dd HH:mm"ですが、コロンの後 に日付のフォーマットを指定する事ができます。 【使用例】 <cms:property type="expiredate:yyyy 年 M 月 d 日" /> 17 createdate 該当のリソースの作成日を表示します。 これは、プロパティの値とは無関係なので、name の指定は無視されます。 デフォルトの日付フォーマットは"yyyy/MM/dd HH:mm"ですが、コロンの後 に日付のフォーマットを指定する事ができます。 【使用例】 <cms:property type="createdate:yyyy 年 M 月 d 日" /> modifydate 該当のリソースの最終更新日を表示します。 これは、プロパティの値とは無関係なので、name の指定は無視されます。 デフォルトの日付フォーマットは"yyyy/MM/dd HH:mm"ですが、コロンの後 に日付のフォーマットを指定する事ができます。 【使用例】 <cms:property type="modifydate:yyyy 年 M 月 d 日" /> releasemodify 該当のリソースの公開日を表示しますが、公開日が未設定の場合は、代わりに 最終更新日を表示します。 これは、プロパティの値とは無関係なので、name の指定は無視されます。 デフォルトの日付フォーマットは"yyyy/MM/dd HH:mm"ですが、コロンの後 に日付のフォーマットを指定する事ができます。 【使用例】 <cms:property type="releasemodify:yyyy 年 M 月 d 日" /> now 現在時刻を表示します。 これは、プロパティの値とは無関係なので、name の指定は無視されます。 デフォルトの日付フォーマットは"yyyy/MM/dd HH:mm"ですが、コロンの後 に日付のフォーマットを指定する事ができます。 【使用例】 <cms:property type="now:yyyy 年 M 月 d 日" /> 18 size 該当のリソースのファイルサイズを表示します。単位は KB です。 これは、プロパティの値とは無関係なので、name の指定は無視されます。 コロンの後に、%s や%d の置換文字を使用して、フォーマットを指定できます。 (フォーマットの書式は、String.format()で使用する書式で指定します。) 【使用例】 <cms:property type="size:(%d KB) " /> <cms:property type="size_mb:(%.1fMB)" /> size_b size と同じですが、単位は Byte です。 size_kb size と同じです。 size_mb size と同じですが、単位は MB です。 size_gb size と同じですが、単位は GB です。 status 該当のファイルのステータスを取得します。 これは、プロパティの値とは無関係なので、name の指定は無視されます。 ステータスの状況に応じて、"変更なし"、"変更あり"、"新規"、"削除"が表示され ます。また、"削除"で無い場合、もし、 公開日が現在時刻より未来であれば、"公開待ち"、 公開期限が現在時刻より過去であれば、"期限切れ"、 公開しないにチェックが入っていれば、"非公開"と表示されます。 19 2-11 delimiter プロパティの値が、カンマ区切りやセミコロン区切り形式の文字列だった場合、 delimiter に、その区切り文字を指定すると、バラバラに分割して表示します。 通常、delimPrefix や delimSuffix と組み合わせて使用します。 【使用例】 <!-Members プロパティの値が、"田中, 鈴木, 佐藤" という文字列だった場合。 "<li>田中</li><li>鈴木</li><li>佐藤</li>" と表示されます。 --> <cms:property name="Members" delimiter="," delimPrefix="<li>" delimSuffix="</li>" /> 2-12 delimPrefix delimiter によって分割された、各トークンの前に挿入される文字列です。 【使用例】 <!-Members プロパティの値が、"田中, 鈴木, 佐藤" という文字列だった場合。 "<li>田中</li><li>鈴木</li><li>佐藤</li>" と表示されます。 --> <cms:property name="Members" delimiter="," delimPrefix="<li>" delimSuffix="</li>" /> 2-13 delimSuffix delimiter によって分割された、各トークンの後ろに挿入される文字列です。 【使用例】 <!-Members プロパティの値が、"田中, 鈴木, 佐藤" という文字列だった場合。 "<li>田中</li><li>鈴木</li><li>佐藤</li>" と表示されます。 --> <cms:property name="Members" delimiter="," delimPrefix="<li>" delimSuffix="</li>" /> 20 2-14 connector delimiter によって分割された、各トークンの間に挿入される文字列です。 【使用例】 <!-Members プロパティの値が、"田中, 鈴木, 佐藤" という文字列だった場合。 "<li>田中</li><li> </li><li>鈴木</li><li> </li><li>佐藤</li>" と表示されます。 --> <cms:property name="Members" delimiter="," delimPrefix="<li>" delimSuffix="</li>" connector="<li> </li>" /> 2-15 head head に区切り文字を指定すると、先頭からその区切り文字までを切り出して表示します。 【使用例】 <!-- Section プロパティの値が"10:営業部"という文字列だった場合、"10"が表示されます。--> 部署コード:<cms:property name="Section" head=":" /> 2-16 tail tail に区切り文字を指定すると、その区切り文字から文字列の最後までを切り出して表示します。 【使用例】 <!-- Section プロパティの値が"10:営業部"という文字列だった場合、"営業部"が表示されます。--> 部署名:<cms:property name="Section" tail=":" /> head と tail を組み合わせると、プロパティ値の一部分を切り出して表示できます。 【使用例】 <!-- Headline プロパティの値が"東京株、一時251円高 (2010/3/16)"だった場合、 "2010/3/16"が表示されます。--> <cms:property name="Headline" tail="(" head=")" /> 21 2-17 filters jp.zyyx.opencms.filters.I_CmsIncludeFilter をインプリメントしているクラスを、 jp.zyyx.opencms.filters パッケージに置けば、filters に指定して呼び出すことができます。 複雑な文字列置換(変換)を行いたい場合は、その変換を行うクラスを作成し、filters で呼び出します。 filters にカンマ区切りで複数のクラス名を指定すると、指定した順番で実行されます。 例えば、以下のクラスを作成したとします。 【ソースコード:EncUTF8.java】 package jp.zyyx.opencms.filters; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import jp.zyyx.opencms.jsp.I_CmsInfoBean; public class EncUTF8 implements I_CmsIncludeFilter { public String exec(I_CmsInfoBean bean, String content) { try { if(content != null) { content = URLEncoder.encode(content,"UTF-8"); } } catch (UnsupportedEncodingException e){ e.printStackTrace(); } return content; } public String getDescription() { return "UTF-8 で URLEncode を行うフィルターです。"; } public String getLabel() { return "URLEncode フィルター(UTF-8)"; } } 22 このクラスは、以下のようにして呼び出す事ができます。 【使用例】 <!-- NavInfo プロパティの値を URLEncode してから表示します。--> <cms:property name="NavInfo" filters="EncUTF8" /> このタグで、フィルタクラスに渡すパラメータを記述する事はできませんが、 CmsObject をフィルタクラス内で取得できるので、CmsRequestContext クラスの setAttribute()でセ ットしておけば、getAttribute()で取得できます。 すでに以下のクラスが提供されており、利用可能です。 BrTag 改行文字の最後に<br/>を付与します。 DelSpace 文字列中の空白や改行、タブを全て除去します。 DelTagSpace このクラスも、空白や改行、タブを除去するものですが、 タグの前後にある空白や改行のみを除去します。 EncUTF8 UTF-8 で URL エンコードします。 EndTags 閉じられていないタグがあった場合、閉じタグを追加していきます。 例えば、<div><a href="xxx.html">リンクというタグを閉じ忘れた文字がある と、レイアウトが崩れるなどの事態が発生します。 そのような場合でも、<a href="xxx.html">リンク</a></div>というように、 自動的に閉じタグを追加します。 ちなみに、name や defaultProperty で最大文字数を指定しており、且つ、 plainText や escapeHtml を true に設定していない場合、filters に指定してい なくても自動的に EndTags が実行されるようになっています。 しかし、基本的には、HTML が入力される値には、最大文字数は指定しない か、plainText や escapeHtml を指定するように設計するのが安全で理想的で す。 Trim 文字列の前後の空白や改行、タブを除去します。 Trim100 200 バイト以降に最初に現れる特定文字までを表示し、それ以降を表示しませ ん。記事の冒頭部分を抜き出す時などに使用します。 特定文字とは、以下のものを指すようになっています。 "。"、"?"、"!"、"." 、"?" 、"!" 【使用例】 <cms:property name="Title" plainText="true" filters="DelTagSpace, BrTag" /> 23 参考までに、I_CmsIncludeFilter.java のソースコードを記載します。 【使用例】 package jp.zyyx.opencms.filters; import jp.zyyx.opencms.jsp.I_CmsInfoBean; public interface I_CmsIncludeFilter { public static String EXEC_METHOD_NAME = "exec"; public String getLabel(); public String getDescription(); public String exec(I_CmsInfoBean bean, String content); } 24 2-18 map プロパティ値の変換を行います。例えば、プロパティには数値のコードが入っていて、表示する時には 日本語のラベルにしたい場合に有効です。 プロパティの値を key とした場合の、value を定義します。 【使用例】 <!-- Workflow プロパティに"1"が入っている場合、"保存"と表示されます。--> <cms:property name="Workflow" map="1=保存&2=承認待&3=完了" /> map に key1=value1&key2=value2&key3=value3 というフォーマットで、key と value の組み合わせ を記述する事で、key に対応する value に変換して表示します。 この機能は、プロパティには ID を保存しておき、表示するテンプレートの場所によって、日本語のラ ベルを変えたい場合などに非常に有効です。 map で指定した key に存在しない値が、プロパティにセットされていた場合は、何も表示されません。 また、key には正規表現は使用できません。 置換パターンを記述したテキストファイルを OpenCms 上に作成しておけば、そのパスを指定して読み 込ませる事が出来ます。テキストファイルは、プロパティファイルと同じ形式で作成します。 (ただし、拡張子は*.properties 以外にして下さい。native2ascii がかかってしまいます。 ) 以下のファイルを作成します。 【設定ファイル:/map_status.txt】 1=保存 2=承認待 3=完了 そして、以下のように使用します。 (map に指定された文字が/から始まれば、ファイルとみなされます。 ) 【使用例】 <cms:property name="Workflow" map="/map_status.txt" /> この機能を利用すれば、map の値に変更があった場合、一箇所のファイルを修正するだけで済みます。 25 2-19 query これは、map と同様に、プロパティ値の変換を行います。 ただし、変換の key と value の組み合わせは、文字列やファイルからではなく、SQL をデータベース に発行し、取得します。query に指定する文字列のフォーマットは、次のようになります。 (pool name)|(SQL 文) SQL 文には、SELECT 文を記述し、必ず、一列目に key となるカラム、二列目に value となるカラム が入るようにします。三列目以降のカラムを指定しても無視されます。 一列目のカラムの値とプロパティの値が一致した時、そのレコードの二列目の値が表示されます。 【使用例】 <cms:property name="category_id" query="default|select category_id, category_name from category_mst" /> SQL 文に?を指定すると、その部分はプロパティの値に置き換わります。 SQL 文に?を指定した時は、一列目に value となるカラムを記述します。二列目以降は無視されます。 【使用例】 <cms:property name="category_id" query="default|select category_name from category_mst where category_id = ? " /> 上記の例では、pool name に default と指定していますが、default と指定すると、OpenCms のテーブ ルが入っているデータベースを指す事になります。 それ以外の別のデータベースへ接続したい場合は、/WEB-INF/conf/opencms.properties に接続先情報 を定義し、Tomcat を再起動する必要があります。 26 opencms.properties には、以下のように接続情報が記述されています。 【設定ファイル:opencms.properties】 # # Declaration of database pools ############################################################################### db.pools=default # Configuration of the default database pool ############################################################################### # name of the JDBC driver db.pool.default.jdbcDriver=org.gjt.mm.mysql.Driver # URL of the JDBC driver db.pool.default.jdbcUrl=jdbc:mysql://localhost:3306/opencms # optional parameters for the URL of the JDBC driver db.pool.default.jdbcUrl.params=?characterEncoding¥=UTF-8 # user name to connect to the database db.pool.default.user=root # password to connect to the database db.pool.default.password=opencms # the URL to make the JDBC DriverManager return connections from the DBCP pool db.pool.default. poolUrl=opencms:default # the maximum number of objects that can be borrowed from the pool db.pool.default.maxActive=25 # the maximum amount of time before throwing an exception when the pool is exhausted db.pool.default.maxWait=2000 # the minimum number of objects that will kept connected db.pool.default.minIdle=3 27 # the maximum number of objects that can sit idled in the pool db.pool.default.maxIdle=10 # action to take when the pool is exhausted {grow|block|fail} db.pool.default.whenExhaustedAction=block # connections will be validated before they are borrowed from the pool db.pool.default.testOnBorrow=false # connections will be validated by evictor thread db.pool.default.testWhileIdle=true # number of milliseconds to sleep between runs of the evictor thread # -1 means no idle connection evictor thread will be run db.pool.default.timeBetweenEvictionRuns=3600000 # number of connections tested in a run of the evictor thread db.pool.default.numTestsPerEvictionRun=3 # minimum amount of time in milliseconds a connection may be idle in the pool before… db.pool.default.minEvictableIdleTime=1800000 # the query to validate connections db.pool.default.testQuery= # number of attempts to connect to the database during startup (default = 10) db.pool.default.connects=10 # sleep time between two attempts to connect to the database during startup in ms db.pool.default.wait=5000 上記の key には、全て default という文字が入っていますが、この部分を別の文字にした接続情報を、 一式記述する必要があります。そして、その上で、db.pools にその新しい名前を追加します。 ここでは、otherdb という名前で追加してみます。 28 【設定ファイル:opencms.properties】 # # Declaration of database pools ############################################################################### db.pools=default, otherdb … (省略)… ############################################################################### # 二つ目のデータベースの接続情報 db.pool.otherdb.jdbcDriver=org.gjt.mm.mysql.Driver # URL of the JDBC driver db.pool.otherdb.jdbcUrl=jdbc:mysql://localhost:3306/opencms2 # optional parameters for the URL of the JDBC driver db.pool.otherdb.jdbcUrl.params=?characterEncoding¥=UTF-8 # user name to connect to the database db.pool.otherdb.user=root # password to connect to the database db.pool.otherdb.password=opencms # the URL to make the JDBC DriverManager return connections from the DBCP pool db.pool.otherdb.poolUrl=opencms:otherdb # the maximum number of objects that can be borrowed from the pool db.pool.otherdb.maxActive=25 # the maximum amount of time before throwing an exception when the pool is exhausted db.pool.otherdb.maxWait=2000 # the minimum number of objects that will kept connected db.pool.otherdb.minIdle=3 29 # the maximum number of objects that can sit idled in the pool db.pool.otherdb.maxIdle=10 # action to take when the pool is exhausted {grow|block|fail} db.pool.otherdb.whenExhaustedAction=block # connections will be validated before they are borrowed from the pool db.pool.otherdb.testOnBorrow=false # connections will be validated by evictor thread db.pool.otherdb.testWhileIdle=true # number of milliseconds to sleep between runs of the evictor thread # -1 means no idle connection evictor thread will be run db.pool.otherdb.timeBetweenEvictionRuns=3600000 # number of connections tested in a run of the evictor thread db.pool.otherdb.numTestsPerEvictionRun=3 # minimum amount of time in milliseconds a connection may be idle in the pool before… db.pool.otherdb.minEvictableIdleTime=1800000 # the query to validate connections db.pool.otherdb.testQuery= # number of attempts to connect to the database during startup (default = 10) db.pool.otherdb.connects=10 # sleep time between two attempts to connect to the database during startup in ms db.pool.otherdb.wait=5000 そして、追加したデータベースへ接続する場合は、otherdb を query に指定します。 【使用例】 <cms:property name="category_id" query="otherdb|select category_name from category_mst where category_id = ? " /> 30 2-20 replaceRegex 置換対象文字列を正規表現で指定します。通常、replace と組み合わせて使用します。 【使用例】 <cms:property name="Title" replaceRegex="[a-z]" replace="*" /> 2-21 replace replaceRegex で指定した正規表現にマッチする文字列を、replace で指定した文字列に置換します。 通常、replaceRegex と組み合わせて使用します。 replaceRegex が未設定の場合、replace で指定した文字列のみ表示されるようになります。 【使用例】 <cms:property name="Title" replaceRegex="[a-z]" replace="*" /> 2-22 その他の機能 <cms:property> ~ </cms:property> の間に HTML を記述する事ができます。 そして、その HTML 内に%(value)と記述すると、その部分が、プロパティ値に置換されます。 【使用例】 <cms:property name="Title"> <h2>%(value)</h2> <div class="subtitle">sample text</div> </cms:property> プロパティ値が未入力の場合は、<cms:property/>タグで囲まれた範囲の HTML も表示されません。 プロパティ値が未入力の場合に、前後の文字列も非表示にしたい場合などに使用します。 31 3 include 『別のファイルを ファイルをインクルードする インクルードする。 する。』 このタグは、別の JSP テンプレートをインクルードしたり、フリーテキストページの特定の element の入力値を表示する時に使用します。 3-1 file インクルード先のファイル名を指定します。 【使用例】 <cms:include file="../elements/header.jsp" /> 3-2 page インクルード先のファイル名を指定します。file と全く同じ機能です。 【使用例】 <cms:include page="../elements/header.jsp" /> 32 3-3 element 指定したインクルードファイルの中から、読み込む部分を指定します。 element は、file や page で指定したリソースが、フリーテキストページの*.html か、テンプレートの *.jsp かで動作が若干異なります。 インクルードするファイルがフリーテキストページであれば、入力欄の element 名を指定します。 そうすると、その入力欄に入力された HTML のみが表示されます。 【使用例】 <cms:include file="/news/news100317.html" element="body1" /> また、element 名にコロンで続けて最大文字数を指定する事が可能です。 入力値に長い文字が入力されていても、指定された最大文字数以降は切り捨てられます。 半角を 1、全角を 2 と計算して指定してください。 【使用例】 <!-body のデータに"タイトルです。"という文字が入力されていた場合、 "タイトルです。"と表示されます。 --> <cms:include file="/news/news100317.html" element="body" /> <!-body のデータに"タイトルです。"という文字が入力されていた場合、 "タイトル"とだけ表示されます。なぜなら、最大文字数が半角 9 文字と指定されているので、 全角 4 文字までが表示されることになります。 --> <cms:include file="/news/news100317.html" element="body:9" /> ※ ただし、 element で指定した入力欄の値が未入力で、 default で指定した文字列が使用された場合は、 文字数制限は適用されません(default で指定した文字列は全て表示されます)。 33 インクルードするファイルが JSP であれば、<cms:template/>タグで囲まれた部分の名前を指定します。 指定すると、その範囲の HTML のみが表示されます。 詳しくは、<cms:template/>タグの説明を参照して下さい。 JSP のインクルードの場合は、最大文字数の指定は無効となります。 【使用例】 <cms:include file="../elements/header.jsp" element="search" /> 【ソースコード:header.jsp】 <%@ taglib prefix="cms" uri="http://www.zyyx.jp/taglib/cms" %> <!-- ヘッダー starts --> <div id="header"> <cms:template element="search"> <form method="get" action="/cgi-bin/search/search.cgi" id="hedaerSearch"> <input type="text" name="phrase" size="25" tabindex="1" accesskey="0" /> <input type="submit" value="検索" tabindex="2" accesskey="1" /> </form> </cms:template> <cms:template element="logo"> <h1><img src="<cms:link>/images/logo.jpg</cms:link>" height="80" /></h1> </cms:template> </div> <!-- ヘッダー starts --> 3-4 editable 直接編集ボタンの表示・非表示を指定します。 file や page で指定したリソースが、フリーテキストページの*.html であった場合、editable を true に セットすると、直接編集ボタンが表示されます。 file や page で指定したリソースが、テンプレートの*.jsp の場合、editable を true にセットすると、そ のインクルード先のテンプレートの直接編集ボタンを全て表示します。 (インクルードする側、又は、される側のどちらかで true になっていればボタンは表示されます。 ) 34 【使用例】 <cms:include file="/news/news100317.html" element="body1" editable="true" /> 3-5 cacheable フレックスキャッシュを強制的に無効にする場合は、false にします。 デフォルトは true で、フレックスキャッシュが利用可能な状態になっています。 フリーテキストページをインクルードしている場合にのみ指定できます。 JSP ファイルのキャッシュは、cache プロパティに false をセットすれば無効にできます。 【使用例】 <cms:include file="/news/news100317.html" element="body1" cacheable="false" /> 3-6 escapeHtml フリーテキストページをインクルードして、入力されたデータを表示する時に、 < や >、&等、HTML で使用される特殊文字をエスケープしたい場合は true にします。 入力されたタグを無効にする機能でもあります。デフォルトは false です。 JSP をインクルードしている場合は、escapeHtml を指定しても意味はありません。 【使用例】 <cms:include file="/news/news100317.html" element="body1" escapeHtml="true" /> 3-7 plainText フリーテキストページをインクルードして、入力されたデータを表示する時に、 入力された HTML タグを除去して表示する場合は true を指定します。デフォルトは false です。 【使用例】 <cms:include file="/news/news100317.html" element="body1" plainText="true" /> 35 3-8 default フリーテキストページをインクルードして、入力されたデータを表示する時に、 データが未入力だった場合に、代わりに表示させる文字を指定します。 データが未入力で、default が指定されていない場合は何も表示されません。 【使用例】 <!-- body1 のデータが未入力の場合は"未入力です。"という文字を表示します。 --> <cms:include file="/news/news100317.html" element="body1" default="未入力です。" /> 3-9 defaultElement フリーテキストページをインクルードして、入力されたデータを表示する時に、 データが未入力だった場合、代わりに defaultElement で指定した element の入力値を取得して表示し ます。また、これは default や defaultProperty との併用も可能です。 【使用例】 <!-body1 のデータが未入力の場合は、body2 の入力値を表示します。 body2 のデータも未入力の場合は、"OpenCms 情報"という文字を表示します。 --> <cms:include file="/news/news100317.html" element="body1" defaultElement="body2" default="OpenCms 情報" /> また、プロパティ名にコロンで続けて最大文字数を指定する事が可能です。 プロパティ値に長い文字が入力されていても、指定された最大文字数以降は切り捨てられます。 半角を 1、全角を 2 と計算して指定してください。 defaultElement では最大文字数を指定せず、element の方で指定している場合、element の最大文字数 が適用されます。 【使用例】 36 <!-body1 のデータが未入力の場合は、body2 の入力値を表示します。 body1 のデータの場合は、半角 14 文字以内、 body2 のデータの場合は、半角 9 文字以内で表示します。 --> <cms:include file="/news/news100317.html" element="body1:14" defaultElement="body2:9" /> 3-10 defaultProperty フリーテキストページをインクルードして、入力されたデータを表示する時に、 データが未入力だった場合、代わりに defaultProperty で指定したプロパティ値を取得して表示します。 また、これは default との併用も可能です。 【使用例】 <!-body1 のデータが未入力の場合は、NavText プロパティの値を表示します。 NavText プロパティの値も未入力の場合は、"OpenCms 情報"という文字を表示します。 --> <cms:include file="/news/news100317.html" element="body1" defaultProperty="NavText" default="OpenCms 情報" /> また、プロパティ名にコロンで続けて最大文字数を指定する事が可能です。 プロパティ値に長い文字が入力されていても、指定された最大文字数以降は切り捨てられます。 半角を 1、全角を 2 と計算して指定してください。 defaultProperty では最大文字数を指定せず、element の方で指定している場合、element の最大文字 数が適用されます。 【使用例】 <!-body のデータが未入力の場合は、NavText プロパティの値を表示します。 body1 のデータの場合は、半角 14 文字以内、 NavText プロパティの場合は、半角 9 文字以内で表示します。 --> <cms:include file="/news/news100317.html" element="body:14" defaultProperty="NavText:9" /> 37 3-11 trimSuffix element や defaultProperty、defaultElement で最大文字数を指定した場合、 切り取られた文字の後ろに付加する文字列を指定できます。 データが最大文字数内におさまり、切り取られなかった場合は、 trimSuffix で指定した文字列は付加されません。 また、element や defaultProperty、defaultElement で指定した最大文字数は、 trimSuffix に指定した文字数も含めて計算されます。 【使用例】 <!-element の最大文字数に 13 が指定されており、trimSuffix の文字列が全角 3 文字なので、 13 -(3 × 2)= 半角 7 文字(全角 3 文字)が、表示可能な文字数となります。 よって、body1 に"タイトルです。"という文字が入力されていた場合、 "タイト・・・"と表示されます。 最大文字数の指定が 14(全角 7 文字)であれば、切り捨てられる事もなく、 "タイトルです。"と表示されることになります。 --> <cms:include file="/news/news100317.html" element="body1:13" trimSuffix="・・・" /> 38 3-12 setRequest 指定された element の入力値を request スコープの変数に保存します。 setRequest には保存先の変数名を指定します。 つまり、request.setAttribute("変数名", "プロパティ値"); と同じ意味であり、 保存された値は、スクリプレットの request.getAttribute("変数名")で取得する事が出来ます。 この属性を指定した場合、element の入力値は request スコープに保存されるだけで表示されません。 【使用例】 <!-- request スコープに body の入力値を保存 --> <cms:include file="/news/news100317.html" element="body" setRequest="headline" /> <!-- スクリプレットで body の入力値を取得して表示 --> <%= request.getAttribute("headline") %> <!-- 式言語で body の入力値を取得して表示 --> ${headline} 3-13 setSession 指定された element の入力値を session スコープの変数に保存します。 setSession には保存先の変数名を指定します。 つまり、session.setAttribute("変数名", "プロパティ値"); と同じ意味であり、 保存された値は、スクリプレットの session.getAttribute("変数名")で取得する事が出来ます。 この属性を指定した場合、element の入力値は session スコープに保存されるだけで表示されません。 【使用例】 <!-- session スコープに body の入力値を保存 --> <cms:include file="/news/news100317.html" element="body" setSession="headline" /> <!-- スクリプレットで body の入力値を取得して表示 --> <%= session.getAttribute("headline") %> <!-- 式言語で body の入力値を取得して表示 --> ${headline} 39 3-14 head head に区切り文字を指定すると、先頭からその区切り文字までを切り出して表示します。 【使用例】 <!-- Section の入力値が"10:営業部"という文字列だった場合、"10"が表示されます。--> 部署コード:<cms:include file="/news/news100317.html" element="Section" head=":" /> 3-15 tail tail に区切り文字を指定すると、その区切り文字から文字列の最後までを切り出して表示します。 【使用例】 <!-- Section の入力値が"10:営業部"という文字列だった場合、"営業部"が表示されます。--> 部署名:<cms:include file="/news/news100317.html" element="Section" tail=":" /> head と tail を組み合わせると、データの一部分を切り出して表示できます。 【使用例】 <!-- Headline の入力値が"東京株、一時251円高 (2010/3/16)"だった場合、 "2010/3/16"が表示されます。--> <cms:include file="/news/news100317.html" element="Headline" tail="(" head=")" /> 40 3-16 filters jp.zyyx.opencms.filters.I_CmsIncludeFilter をインプリメントしているクラスを、 jp.zyyx.opencms.filters パッケージに置けば、filters に指定して呼び出すことができます。 複雑な文字列置換(変換)を行いたい場合は、その変換を行うクラスを作成し、filters で呼び出します。 filters にカンマ区切りで複数のクラス名を指定すると、指定した順番で実行されます。 具体的な仕様は、<cms:property/>タグの filters 属性と同様なので、「2-17 filters」を参照して下さい。 3-17 property property にプロパティ名を指定すると、そのプロパティに指定されたファイルをインクルードします。 file や page が指定されていた場合、property の指定は無効になります。 インクルードするファイルをテンプレートに直接記述すると、そのファイルに固定されてしまいますが、 この機能により、プロパティで可変に設定できるようになります。 【使用例】 <!-- FileHeader プロパティに、"/inc/header.html"という値が入っていた場合、 /inc/header.html の body の入力値が表示されます。--> <cms:include property="FileHeader" element="body" editable="true" /> 3-18 attribute attribute に変数名を指定すると、そのリクエストスコープのその変数に指定されたファイルをインク ルードします。file や page、property が指定されていた場合、attribute の指定は無効になります。 インクルードするファイルをテンプレートに直接記述すると、そのファイルに固定されてしまいますが、 この機能により、動的にファイルが切り替わるように設定できます。 【使用例】 <% request.setAttribute("FileHeader", "/inc/header.html "); %> <!—リクエストスコープの FileHeader 変数に、"/inc/header.html"という値が入っている為、 /inc/header.html の body の入力値が表示されます。--> <cms:include attribute="FileHeader" element="body" editable="true" /> 41 3-19 suffix property や、attribute で取得したパスに対し、後ろに文字を追加します。 property や、attribute ではディレクトリが指定されるようにしておき、suffix でファイル名を固定で 指定するという使い方ができます。 【使用例】 <!-- FileHeader プロパティに、"/inc "という値が入っていた場合、 /inc/header.html の body の入力値が表示されます。--> <cms:include property="FileHeader" suffix="/header.html" element="body" /> 3-20 replaceRegex 置換対象文字列を正規表現で指定します。通常、replace と組み合わせて使用します。 【使用例】 <cms:include element="body" replaceRegex="[a-z]" replace="*" /> 3-21 replace replaceRegex で指定した正規表現にマッチする文字列を、replace で指定した文字列に置換します。 通常、replaceRegex と組み合わせて使用します。 replaceRegex が未設定の場合、replace で指定した文字列のみ表示されるようになります。 【使用例】 <cms:include element="body" replaceRegex="[a-z]" replace="*" /> 3-22 requireFile true を指定すると、file で指定したファイルが存在しない場合、例外が発生しページがエラーとなりま すが、false を指定すると、ファイルが存在しなくても、何も表示されないだけで、ページはエラーと はなりません。デフォルトは true です。 42 3-23 その他の機能(直接編集ボタンの表示位置がずれる問題への対処) <cms:include> ~ </cms:include> の間に HTML を記述する事ができます。 そして、その HTML 内に%(value)と記述すると、その部分が、<cms:include/>タグで表示するデータ に置換されます。 【使用例】 <cms:include element="body"> <h2>%(value)</h2> <div class="subtitle">sample text</div> </cms:include> データが未入力の場合は、<cms:include/>タグで囲まれた範囲の HTML も表示されません。 データが未入力の場合に、前後の文字列も非表示にしたい場合などに使用します。 また、CSS の組み方によっては、直接編集ボタンの表示位置がずれてしまう場合があります。 そのような場合、例えば、前後に<div>タグが定義されているなら、<cms:include> ~ </cms:include> の間に<div>タグを含めてしまうなどの調整を行う事で、正常な位置にボタンを表示させる事ができる 場合があります。 43 4 link 『リンクの リンクの自動補正を 自動補正を行う。』 URL をこのタグで囲む事により、以下のような自動補正が実行されます。 OpenCms では、Online でプレビューする場合と、Offline でプレビューするのとでは、 ベースとなる URL の階層が違いますが、自動的に調整されるようになります。 Online にて、相対パスで出力するか絶対パスで出力するかを、 設定ファイルで一括して切り替える事ができるようになります。 ヘッダーなどの共通テンプレートは、様々な階層のページで表示されますが、 相対パス・モードであっても、階層の深さを自動的に判別して、ページごとに URL を調整します。 例えば、共通テンプレートに、<cms:link>/css/common.css </cms:link> と記述されていれば、 /index.html で表示した時には、"./css/common.css" と表示され、 /ir/news/index.html で表示した時には、"../../css/common.css" と表示されます。 GET パラメータを含めた URL を<cms:link/>タグで囲むと、静的配信時に、 その GET パラメータのパターン数分のファイルを生成します。例えば、 <cms:link>/index.html?mode=1</cms:link> <cms:link>/index.html?mode=2</cms:link> <cms:link>/index.html?mode=3</cms:link> というように、GET パラメータを含めた URL を囲んで記述しておくと、 index_html_320320321.html index_html_194328493.html index_html_638173920.html のように乱数が付与されたページが作成され、リンク元の A タグの URL も、このファイル名に変換さ れます。これにより、GET パラメータを用いた URL を無くし、SEO 対策がなされるのと、 GET パラメータを受け取る必要のあるテンプレートでも、静的配信が可能となります。 【使用例】 <html> <head> <meta http-equiv="content-type" content="text/html;charset=utf-8" /> <link rel="stylesheet" href="<cms:link>/css/style.css</cms:link>" type="text/css" /> </head> 44 5 editable 『直接編集ボタン 直接編集ボタンの ボタンの表示・ 表示・非表示を 非表示を制御する 制御する。 する。』 直接編集ボタンを表示する場合は、このタグを、<head> ~ </head>に記述します。 このタグが無い場合は、<cms:include/>タグや<cms:contentload/>タグに editable=true を記述しても、 直接編集ボタンは表示されません。 また、<cms:link/>タグで囲んだリンクや HTML エディタで入力したリンクに関しては、absolutelink、 linkPrefix、linkPrefixCut、linkOffline である程度のコントロールが可能です。 45 6 block 『ページの ページの一部の 一部の表示・ 表示・非表示を 非表示を制御する 制御する。 する。』 テンプレートはさまざまなページで使用されますが、特定のページにはこの部分を表示したくないとか、 逆に、特定のページのみ表示したいものがある場合、<cms:block/>タグを使用します。 6-1 path 表示・非表示を制御したい部分をこのタグで囲み、path に表示を許可するパターンを記述します。 path には、正規表現を記述する事が出来ます。また、カンマ区切りで複数指定する事も可能です。 【使用例】 <cms:block path="/index.html"> この部分は、/index.html の時のみ表示されます。<br/> </cms:block> <cms:block path="/news/.*.html"> この部分は、/news/ 以下で拡張子が html のページの時のみ表示されます。<br/> </cms:block> <cms:block path="/index.html, /news/.*"> この部分は、/index.html の時、又は /news/ 以下のページの時のみ表示されます。<br/> </cms:block> 6-2 excludes path は表示させるファイルのパスを指定しますが、excludes には、表示させないファイルのパスを指 定します。excludes で指定されていないページのみ、<cms:block/>内の HTML を表示します。 excludes には、正規表現を記述する事が出来ます。また、カンマ区切りで複数指定する事も可能です。 6-3 project プロジェクト名を指定すると、そのプロジェクトでのみ、path や excludes の設定が有効になります。 つまり、それ以外のプロジェクトで表示した場合は、path や excludes の設定に関係なく、常に表示さ れます。指定できるプロジェクト名は一つだけです。 46 7 offline 『ページの ページの一部を 一部を Offline の時のみ表示 のみ表示する 表示する。 する。』 プレビューの時のみ表示させたい場合は、<cms:offline/>タグを使用します。 【使用例】 <cms:offline> この部分は、プレビューの時のみ表示され、公開された時には表示されません。<br/> </cms:offline> 7-1 path と excludes このタグも<cms:block/>タグと同様、path や excludes に複数の条件を記述する事が出来ます。 【使用例】 <cms:offline path="/index.html"> この部分は、/index.html のページで、且つ、プレビューの時のみ表示されます。<br/> </cms:offline> 8 online 『ページの ページの一部を 一部を Online の時のみ表示 のみ表示する 表示する。 する。』 公開の時のみ表示させたい場合は、<cms:online/>タグを使用します。 【使用例】 <cms:online> この部分は、公開された時のみ表示され、プレビューの時には表示されません。<br/> </cms:online> 8-1 path と excludes このタグも<cms:block/>タグと同様、path や excludes に複数の条件を記述する事が出来ます。 【使用例】 <cms:online path="/index.html"> この部分は、/index.html のページで、且つ、公開された時のみ表示されます。<br/> </cms:online> 47 9 template 『テンプレートを テンプレートを分割して 分割して利用 して利用する 利用する。 する。』 テンプレートを分割し、その範囲に名前を指定することができます。 <cms:include/>タグによってインクルードされる時、その名前を指定する事によって、 一部分のみをインクルードする事が可能になります。 また、このテンプレートがフリーテキストエリアのページで使用されている場合、エレメントの入力 の有無によって表示・非表示を制御する場合にも使用できます。 9-1 element <cms:template> ~ </cms:template> で囲まれた部分に名前をつけます。 名前は半角英数で指定して下さい。 【ソースコード:header.jsp】 <%@ taglib prefix="cms" uri="http://www.zyyx.jp/taglib/cms"%> <!-- ヘッダー starts --> <div id="header"> <cms:template element="search"> <form method="get" action="/cgi-bin/search/search.cgi" id="hedaerSearch"> <input type="text" name="phrase" size="25" tabindex="1" accesskey="0" /> <input type="submit" value="検索" tabindex="2" accesskey="1" /> </form> </cms:template> <cms:template element="logo"> <h1><img src="<cms:link>/images/logo.jpg</cms:link>" height="80" /></h1> </cms:template> </div> <!-- ヘッダー starts --> ここで指定したエレメント名は、<cms:include/>タグで指定する事ができます。上記の例の場合、 element に search を指定すると、<cms:template element="search"> ~ </cms:template> の部分の みインクルードされるようになります。 【使用例】 <cms:include file="../elements/header.jsp" element="search" /> 48 9-2 ifexists エレメント名をカンマ区切りで指定します。表示しているフリーテキストエリアに、ここで指定したエ レメント名のどれか一つでも入力枠が存在すれば、このタグで囲まれた部分を表示しますが、一つも存 在しない場合は、非表示にします。 9-3 ifexistsone ifexists と同じです。 9-4 ifexistsall エレメント名をカンマ区切りで指定します。表示しているフリーテキストエリアに、ここで指定したエ レメント名の入力枠が全て存在すれば、このタグで囲まれた部分を表示しますが、一つでも存在しない エレメントがあった場合は、非表示にします。 9-5 ifexistsnone エレメント名をカンマ区切りで指定します。表示しているフリーテキストエリアに、ここで指定したエ レメント名の入力枠が一つも存在しなければ、このタグで囲まれた部分を表示しますが、一つでも存在 すれば、非表示にします。 【使用例】 <cms:template ifexistsall="pc, mobile">PC&携帯</cms:template> <cms:template ifexistsnone="pc"> <cms:template ifexists="mobile">携帯</cms:template> </cms:template> <cms:template ifexistsnone="mobile"> <cms:template ifexists="pc">PC</cms:template> </cms:template> <cms:template ifexistsnone="pc, mobile">なし</cms:template> 49 9-6 file フリーテキストエリアのページのパスを指定します。 ifexists、ifexistsone、ifexistsall、ifexistsnone などで、エレメントの入力チェックを行う事が出来ま すが、その時のチェック対象のファイル名になります。 指定しない場合は、現在表示しているページのパスが適用されます。 9-7 path file と同じです。 50 10 contentload 『構造化コンテンツ 構造化コンテンツの コンテンツのデータを データを呼び出す。』 構造化コンテンツの呼び出しを行います。 10-1 collector 構造化コンテンツの検索方法とソート順を指定します。 検索されるリソースは、ここで指定したコレクタ名と、param に指定したパラメータで決定されます。 デフォルトの動作として、公開期限切れのリソースや、公開日がまだ来ていないリソースは表示されま せん。 (それらは、タイムワープ機能を使用して、プレビュー日付を変更すれば表示されます。 ) collector に指定できる値には以下のものがあります。 zx.singleFile 単一のファイルの情報を取得します。 zx.allInFolder 特定のフォルダの直下のファイルをパスの昇順で取得します。 zx.allInFolderDesc 特定のフォルダの直下のファイルをパスの降順で取得します。 zx.allInFolderDateReleased 特定のフォルダの直下のファイルを公開日の昇順で取得します。 公開日が未設定のファイルは最終更新日でソートされます。 zx.allInFolderDateReleasedDesc 特定のフォルダの直下のファイルを公開日の降順で取得します。 公開日が未設定のファイルは最終更新日でソートされます。 zx.allInFolderNavPos 特定のフォルダの直下のファイルを NavPos プロパティ値の昇順で取 得します。但し、NavPos が未設定のファイルが一つでもあると、 zx.allInFolderDateReleased と同様の動作になります。 zx.allInFolderNavPosDesc 特定のフォルダの直下のファイルを NavPos プロパティ値の降順で取 得します。但し、NavPos が未設定のファイルが一つでもあると、 zx.allInFolderDateReleasedDesc と同様の動作になります。 zx.allInFolderDateLastModified 特定のフォルダの直下のファイルを最終更新日の昇順で取得します。 zx.allInFolderDateLastModifiedDesc 特定のフォルダの直下のファイルを最終更新日の降順で取得します。 zx.allInSubTree 特定のフォルダ内のファイルをパスの昇順で取得します。 サブフォルダも再帰的に検索します。 zx.allInSubTreeDesc 特定のフォルダ内のファイルをパスの降順で取得します。 サブフォルダも再帰的に検索します。 zx.allInSubTreeDateReleased 特定のフォルダ内のファイルを公開日の昇順で取得します。 公開日が未設定のファイルは最終更新日でソートされます。 サブフォルダも再帰的に検索します。 zx.allInSubTreeDateReleasedDesc 特定のフォルダ内のファイルを公開日の降順で取得します。 公開日が未設定のファイルは最終更新日でソートされます。 サブフォルダも再帰的に検索します。 51 zx.allInSubTreeNavPos 特定のフォルダ内のファイルを NavPos プロパティ値の昇順で取得 します。但し、NavPos が未設定のファイルが一つでもあると、 zx.allInSubTreeDateReleased と同様の動作になります。 サブフォルダも再帰的に検索します。 zx.allInSubTreeNavPosDesc 特定のフォルダ内のファイルを NavPos プロパティ値の降順で取得 します。但し、NavPos が未設定のファイルが一つでもあると、 zx.allInSubTreeDateReleasedDesc と同様の動作になります。 サブフォルダも再帰的に検索します。 zx.allInSubTreeDateLastModified 特定のフォルダの直下のファイルを最終更新日の昇順で取得しま す。サブフォルダも再帰的に検索します。 zx.allInSubTreeDateLastModifiedDesc 特定のフォルダの直下のファイルを最終更新日の降順で取得しま す。サブフォルダも再帰的に検索します。 zx.allInFolderPriorityDateAsc 特定のフォルダの直下のファイルを collector.priority プロパティ値 の昇順で取得します。collector.priority プロパティ値が同じであれ ば、collector.date プロパティ値を第 2 ソートキーとして使用します。 zx.allInFolderPriorityDateDesc 特定のフォルダの直下のファイルを collector.priority プロパティ値 の降順で取得します。collector.priority プロパティ値が同じであれ ば、collector.date プロパティ値を第 2 ソートキーとして使用します。 zx.allInSubTreePriorityDateDesc 特定のフォルダ内のファイルを collector.priority プロパティ値の降 順で取得します。collector.priority プロパティ値が同じであれば、 collector.date プロパティ値を第 2 ソートキーとして使用します。 サブフォルダも再帰的に検索します。 zx.allInFolderPriorityTitleDesc 特定のフォルダの直下のファイルを collector.priority プロパティ値 の降順で取得します。collector.priority プロパティ値が同じであれ ば、Title プロパティ値を第 2 ソートキーとして使用します。 zx.allInSubTreePriorityTitleDesc 特定のフォルダ内のファイルを collector.priority プロパティ値の降 順で取得します。collector.priority プロパティ値が同じであれば、 Title プロパティ値を第 2 ソートキーとして使用します。 サブフォルダも再帰的に検索します。 52 zx.allMappedToUriPriorityDateAsc 特定のフォルダ内のファイルを collector.priority プロパティ値の昇順 で 取 得し ま す。 collector.priority プ ロ パテ ィ 値が同 じ であ れ ば、 collector.date プロパティ値を第 2 ソートキーとして使用します。 但し、現在の URL 以下のファイルしか取得しません。 サブフォルダも再帰的に検索します。 zx.allMappedToUriPriorityDateDesc 特定のフォルダ内のファイルを collector.priority プロパティ値の降順 で 取 得し ま す。 collector.priority プ ロ パテ ィ 値が同 じ であ れ ば、 collector.date プロパティ値を第 2 ソートキーとして使用します。 但し、現在の URL 以下のファイルしか取得しません。 サブフォルダも再帰的に検索します。 timeFrameAndCategories 特定のフォルダ内のファイルで、指定されたカテゴリと期間内のファ イルのみ取得します。カテゴリは通常、collector.categories プロパテ ィ値、期間は通常、collector.time プロパティ値を見に行きます。 サブフォルダも再帰的に検索します。 allKeyValuePairFiltered 特定のフォルダ内のファイルで、指定されたカテゴリのファイルのみ 取得します。サブフォルダも再帰的に検索します。 %(property.collector) これは、マクロです。%(property."プロパティ名") とすると、プロパ ティの値を参照するようになります。 このように記述すると、collector プロパティを読むようになるので、 collector プロパティに、allInFolderPriorityDateDesc などを指定する ようにすれば、JSP テンプレートに直接 collector 値を記述する必要が なくなります。 使用例は、次の param の説明を参照して下さい。 collector が未設定の場合、zx.allInFolderDateReleased が指定されたものとみなします。 53 10-2 param collector にて、検索条件とソート順を指定しますが、更に詳細なパラメータを渡す場合は、param に指 定します。param に渡す文字列のフォーマットは、collector の種類によって様々です。 collector に zx.singleFile が指定されている場合 param には、読み込むファイルのパスを指定します。 【使用例】 <cms:contentload collector="zx.singleFile" param="/news/news100318.html" editable="true"> … (省略) … </cms:contentload> また、以下のようなマクロを指定することもできます。 %(opencms.uri) 今、表示しているページの URL を表しています。 %(opencms.filename) 今、表示しているページのファイル名を表しています。 %(property.プロパティ名) 指定した名前のプロパティの値を読みに行きます。 例えば、%(property.xml-content)と指定した場合、xml-content プロ パティの値が使用されます。xml-content プロパティには、事前に読 み込ませるファイルのパスをセットしておく事になります。 %(param.変数名) リクエストパラメータの値を使用します。 例えば、ページの URL に、 …/page.html?resource=/news/index.html のような GET パラメータが付いている場合、%(param.resource)と 指定すれば、resource パラメータの値、つまり、/news/index.html を取得します。 【使用例】 <cms:contentload collector="zx.singleFile" param="%(opencms.uri)" > … (省略) … </cms:contentload> 54 collector に zx.singleFile 以外の zx.から始まる値が指定されている場合 param には、読み込むフォルダのパスと、リソースタイプと、最大表示件数を指定します。 param では、パラメータが複数の場合、| で区切る事になっていますので以下のようにします。 【使用例】 <!-- /news/以下で、尚且つリソースタイプが news のリソースを上位 10 件まで取得します。 --> <cms:contentload collector="zx.allInFolderDateReleasedDesc" param="/news/|news|10" > … (省略) … </cms:contentload> 表示件数に 0 を指定すると、無制限になります。 リソースタイプには、構造化コンテンツのリソースタイプしか指定できません。 また、editable を true にした場合、直接編集ボタン、削除ボタン、新規ボタンが表示されるようにな ります。その時、プレビューから新規ボタンをクリックして自動的に新しいページを生成できるように なるのですが、ファイル名に、連番用マクロの%(number)を指定していれば、自動的にファイル名が決 定され、ページが生成されます。 【使用例】 <cms:contentload collector="zx.allInFolderDateReleasedDesc" editable="true" param="/news/news%(number).html|news|10" > … (省略) … </cms:contentload> この場合、新規作成するたびに、/news の直下に news0000.html、news0001.html、news0002.html ・・・ と自動的にファイル名が割り振られます。 55 また、パスやリソースタイプはカンマ区切りで複数指定する事が出来ます。 新規ボタンでリソースを作成する場合、パスが複数指定されていれば、最初に指定されたパスに対して ファイルの新規作成を行います。また、そのとき作成されるリソースタイプは、新規ボタンが表示され ているリソースと同じリソースタイプになります。 【使用例】 <cms:contentload collector="zx.allInFolderDateReleasedDesc" editable="true" param="/news/news%(number).html, /products/news/, /ir/news/ | news, product, ir | 10" > … (省略) … </cms:contentload> 上記の例だと、/news/以下と、/products/news/以下、/ir/news/以下のファイルの中で、リソースタイプ が、news、または、product、または、ir のものを上位 10 件まで取得します。 そして、新規ボタンでリソースを作成した場合は、/news/ 以下に、news????.html というファイル名で 作成されます。 また、最大表示件数の後ろに | でつなげて、関数を指定する事ができます。指定できる関数には、 以下のものがあります。 (※ 注意:以下の関数は、パフォーマンスはよくありません。対象ファイルが 多い場合や頻繁に使う必要がある場合は、以下の関数を使わず、一度だけ、全件取得し、JSP のスクリ プレットで条件分岐を記述する方がパフォーマンスが良いこともあります。 ) releasedate() 日付の範囲を指定し、公開日が、その期間内に含まれるリソースの みを取得します。 引数が一つの場合は、指定された日 ~ 現在時刻の範囲で検索され ます。 【例:releasedate('2010/1/1 12:30:00') 】 引数が二つの場合は、第一引数が開始日時、第二引数が終了日時と なります。 【例:releasedate('2010/1/1', '2010/1/31') 】 この関数には、以下の値を指定できます。 seconds 現在時刻から 現在時刻から公開日 から公開日が 公開日が数秒前までの 数秒前までのリソース までのリソースを リソースを取得します 取得します 例: releasedate(1second) releasedate(1sec) releasedate(30seconds) minutes 現在時刻から 現在時刻から公開日 から公開日が 公開日が数分前までの 数分前までのリソース までのリソースを リソースを取得します 取得します 例: releasedate(1minute) releasedate(1min) releasedate(30minutes) 56 hours 現在時刻から 現在時刻から公開日 から公開日が 公開日が数時間前までの 数時間前までのリ までのリソースを ソースを取得します 取得します 例: releasedate(1hour) releasedate(5hours) days 現在時刻から 現在時刻から公開日 から公開日が 公開日が数日前までの 数日前までのリソース までのリソースを リソースを取得します 取得します 例: releasedate(1day) releasedate(20days) month 現在時刻から 現在時刻から公開日 から公開日が 公開日が数ヶ月前までの 月前までのリソース までのリソースを リソースを取得します 取得します 例: releasedate(3month) year 現在時刻から 現在時刻から公開日 から公開日が 公開日が数年前までの 数年前までのリソース までのリソースを リソースを取得します 取得します 例: releasedate(1year) releasedate(2years) 日付指定 日付指定 公開日が 公開日が指定された 指定された日時以降 された日時以降の 日時以降のリソースを リソースを取得します 取得します 例: releasedate('2008/01/01 10:30:00') releasedate('2008/1/1') releasedate('2008-01-01') modifydate() 日付の範囲を指定し、最終更新日が、その期間内に含まれるリソー スのみを取得します。使い方は、releasedate()と同じです。 property() 必須プロパティ名を指定します.指定されたプロパティに値が入って いるリソースのみを取得します。 カンマ区切りで複数のプロパティ名を指定する事が出来ます。複数 指定したときは、OR 検索となります。 【例:property(Title, NavText) 】 また、右の演算子も利用可能です。 【 "=", "!=", "<", "<=", ">", ">=" 】 対象の値が数値のみの場合は数値比較、そうでない場合は文字列の 辞書順の比較を行います。 【例:property(ShowIcon=true) 】 また、演算子が"="や、"!="で文字列比較の場合、右側には正規表現 を記述できます。 【例:property(PDF=.*.pdf) 】 時間指定の場合、UnixTime(ミリ秒単位の long 値)で指定する必要が ありますが、マクロを使用する事もできます。 57 例:property(ReleaseDate <= %(date)) property(ReleaseDate > %(2008/01/01 08:30:00)) property(ReleaseDate >= %(-3days)) %(date)は現在時刻を表します。日時を直接指定することもできま す。その他、%(-3days)や、%(-1month)、%(-1years)、%(-5hours)、 %(-30minutes)、%(-10seconds)などは、現在時刻から指定した時間 を加えたものを表します。 element() 必須エレメント名(入力項目名)を指定します.指定されたエレメン ト(入力フォーム)に値が入っているリソースのみを取得します。 カンマ区切りで複数のエレメント名を指定する事が出来ます。複数 指定したときは、OR 検索となります。 ネストされたエレメントを指定する場合は/で区切ります。 指定したエレメントが可変(配列)であった場合は、どれか一つで も入力されていれば抽出されます。 【例:element(Title, PDF/File) 】 また、右の演算子も利用可能です。 【 "=", "!=", "<", "<=", ">", ">=" 】 対象の値が数値のみの場合は数値比較、そうでない場合は文字列の 辞書順の比較を行います。 【例:element(ShowIcon=true) 】 また、演算子が"="や、"!="で文字列比較の場合、右側には正規表現 を記述できます。 【例:element(PDF=.*.pdf) 】 時間指定の場合、UnixTime(ミリ秒単位の long 値)で指定する必要が ありますが、マクロを使用する事もできます。 例:element(ReleaseDate <= %(date)) element(ReleaseDate > %(2008/01/01 08:30:00)) element(ReleaseDate >= %(-3days)) %(date)は現在時刻を表します。日時を直接指定することもできま 58 す。その他、%(-3days)や、%(-1month)、%(-1years)、%(-5hours)、 %(-30minutes)、%(-10seconds)などは、現在時刻から指定した時間 を加えたものを表します。 random() 取得したリストの中からランダムに数件取得することが出来ます。 【例:random() 】 引数に日付の情報を渡すと、その期間の間はランダムに表示される 内容が固定になります。 例えば、random(1day)と指定すると、最初にランダムにリソースが 選択されますが、1 日間は、何度アクセスしても同じ結果が返されま す。そして、次の日になった時に始めて、再度ランダムに選択され、 内容が更新されます。 但し、日付を指定して表示を固定していても、母数(ランダムに抽 出する対象のリソースの数)が変われば、内容も変わってしまうの で注意して下さい。 引数には、1day や 2month など、releasedate()の引数と同じ値を指 定できます。但し、引数は一つしか指定できません。 ignoreExpiration() 通常は、公開日がまだ来ていないリソースや、既に公開期限切れの リソースは取得されませんが、ignoreExpiration()を指定すると公開 期間を無視し、全て取得するようになります。 また、この関数には引数はありません。 editOnly() 新規ボタンと削除ボタンを非表示にし、編集ボタンのみ表示される ようにします。 59 excludes() 一覧から除外するリソースのパスを指定します。カンマ区切りで複 数のパスを指定できます。また、マクロを使用することも可能です。 【例:excludes (‘/news/index.html’, %(opencms.uri)) 】 パ ス の カ ン マ 区 切 り の 文 字 列 を 、 CmsRequestContext の setAttribute()でセットしておき、その変数名を引数に渡せば、その リストを除外します。また、String オブジェクトだけでなく、 List<String>オブジェクトをセットしておく事もできます。 【使用例】 <% List<String> list = new ArrayList<String> (); list.add("/news/news0000.html"); list.add("/news/news0002.html"); list.add("%(opencms.uri)"); CmsJspActionElement jsp = new CmsJspActionElement( pageContext, request, response); jsp.getRequestContext().setAttribute("list", list); %> <cms:contentload collector="zx.allInFolder" param="/news/|news|20|excludes('list')" > … 省略 … </cms:contentload> これらの関数は、セミコロンで区切って複数指定する事が出来ます。 【使用例】 <cms:contentload collector="zx.allInFolderDateReleasedDesc" editable="true" param="/news/n%(number).html | news | 20 | releasedate(2years); property('Title'); random(1day);" > … (省略) … </cms:contentload> 60 10-3 editable 直接編集ボタンの表示・非表示を指定します。 【使用例】 <cms:contentload collector="zx.allInFolderDateReleasedDesc" editable="true" param="/news/news%(number).html|news|20" > … (省略) … </cms:contentload> 10-4 pageIndex 1 以上のページ番号を指定します。 ただし、これを使用するには、pageSize も必ず指定する必要があります。 10-5 pageSize 1 ページ辺りの最大表示件数を指定します。 ただし、これを使用するには、pageIndex も必ず指定する必要があります。 param でも最大表示件数を指定していましたが、これは、全ページの総件数を指定するもので、 1 ページの表示件数は pageSize で指定します。 【使用例】 <cms:contentload collector="zx.allInFolderDateReleasedDesc" pageIndex="1" pageSize="10" param="/news/news%(number).html|news|500" > … (省略) … </cms:contentload> 10-6 pageNavLength Google ライクなページナビゲーションの、ページリンク数を指定します。 <cms:contentinfo/> から、ページネーション情報の一つとして取得できます。 61 10-7 preload リソースの検索は行いますが、検索結果を表示しない場合は true にセットします。 <cms:contentload> ~ </cms:contentload> 間の HTML は表示されません。 【使用例】 <cms:contentload collector="zx.allInFolder" preload="true" param="/news/|news|20" > <cms:contentinfo var="pager"/> </cms:contentload> ${pager.resultSize} 件のデータが検索されました。 10-8 locale 取得するデータのロケールを指定します。構造化コンテンツの入力フォームの左上に、言語を切り替え る事ができますが、対象となる言語はこの locale で指定します。 【使用例】 <cms:contentload collector="zx.allInFolderDateReleasedDesc" locale="en" param="/news/news%(number).html|news|20" > … (省略) … </cms:contentload> 10-9 var page スコープの変数名を指定すると、そこに、取得したリソースのオブジェクトがセットされます。 スクリプレットや式言語で取り出して使用する事ができます。 セットされるオブジェクトは、org.opencms.jsp.util.CmsJspContentLoadBean クラスです。 CmsJspContentLoadBean の getContent()で、取得した全リソースの List が得られます。 この List の中には、各リソースが、org.opencms.jsp.util.CmsJspContentAccessBean クラスのオブジ ェクトとして格納されています。 尚、var を指定した場合は、<cms:contentload> ~ </cms:contentload> 間の HTML は表示されません。 62 【使用例】 <cms:contentload collector="zx.allInFolderDateReleasedDesc" var="bean" param="/news/news%(number).html|news|20" > … (省略) … </cms:contentload> <c:forEach items="${bean.content}" var="res"> ${res.filename}<br/> Title = ${res.value['Title']}<br/> </c:forEach> <% CmsJspContentLoadBean bean = (CmsJspContentLoadBean)pageContext.getAttribute("bean"); // … (省略) … %> 10-10 scope var に変数名を指定すると、オブジェクトが page スコープに保存されますが、セッションや、リクエ ストスコープに格納したい時は、ここでスコープを指定します。 【使用例】 <cms:contentload collector="zx.allInFolderDateReleasedDesc" var="bean" scope="session" param="/news/news%(number).html|news|20" > … (省略) … </cms:contentload> <% CmsJspContentLoadBean bean = (CmsJspContentLoadBean)session.getAttribute("bean"); // … (省略) … %> 63 11 contentshow 『構造化コンテンツ 構造化コンテンツの コンテンツの入力データ 入力データを データを表示する 表示する。 する。』 構造化コンテンツの入力データを表示します。 このタグは、<cms:contentload/>タグの中でしか使用できません。 11-1 element 表示させたいエレメント名を指定します。大文字、小文字は区別されるので注意してください。 もし、指定した入力項目が、複数の値を持つ可変長の場合は、配列のようにインデックスを指定できま す。 ( 例:element="URL[2]" )ただし、このような指定は、指定したインデックスが確実に存在する 事が前提なので、基本的には、<cms:contentloop/>タグを使用して下さい。 【使用例】 <cms:contentshow element="Title" /> また、エレメント名にコロンで続けて最大文字数を指定する事が可能です。 入力データが長い文字だったとしても、指定された最大文字数以降は切り捨てられます。 半角を 1、全角を 2 と計算して指定してください。 【使用例】 <!-Title に"タイトルです。"という文字が入力されていた場合、 "タイトルです。"と表示されます。 --> <cms:contentshow element="Title" /> <!-Title に"タイトルです。"という文字が入力されていた場合、 "タイトル"とだけ表示されます。なぜなら、最大文字数が半角 9 文字と指定されているので、 全角 4 文字までが表示されることになります。 --> <cms:contentshow element="Title:9" /> ※ ただし、element で指定した入力欄が未入力で、default で指定した文字列が使用された場合は、文 字数制限は適用されません(default で指定した文字列は全て表示されます) 。 64 11-2 locale 表示する入力データのロケールを指定します。構造化コンテンツの入力フォームの左上に、言語を切り 替える事ができますが、対象となる言語はこの locale で指定します。 使用例】 <cms:contentshow element="Title" locale="en" /> 11-3 escapeHtml < や >、&等、HTML で使用される特殊文字をエスケープしたい場合は true にします。 入力されたタグを無効にする機能でもあります。デフォルトは false です。 【使用例】 <cms:contentshow element="Title" escapeHtml="true" /> 11-4 plainText 入力された HTML タグを除去して表示する場合は true を指定します。デフォルトは false です。 【使用例】 <cms:contentshow element="Title" plainText="true" /> 11-5 default 指定されたエレメントの入力欄が未入力だった場合に、代わりに表示させる文字を指定します。 データが未入力で、default が指定されていない場合は何も表示されません。 【使用例】 <!-- Title が未入力の場合は"OpenCms タグリファレンス"という文字を表示します。 --> <cms:contentshow element="Title" default="OpenCms タグリファレンス" /> 65 11-6 defaultElement エレメントで指定した入力欄のデータが未入力だった場合、代わりに defaultElement で指定したエレ メント名の入力値を取得して表示します。また、これは default や defaultProperty との併用も可能で す。 【使用例】 <!-Title のデータが未入力の場合は、SubTitle の入力値を表示します。 SubTitle のデータも未入力の場合は、"OpenCms 情報"という文字を表示します。 --> <cms:contentshow element="Title" defaultElement="SubTitle" default="OpenCms 情報" /> また、エレメント名にコロンで続けて最大文字数を指定する事が可能です。 入力データが長い文字であっても、指定された最大文字数以降は切り捨てられます。 半角を 1、全角を 2 と計算して指定してください。 defaultElement では最大文字数を指定せず、element の方で指定している場合、element の最大文字数 が適用されます。 【使用例】 <!-Title のデータが未入力の場合は、SubTitle の入力値を表示します。 Title のデータの場合は、半角 14 文字以内、 SubTitle のデータの場合は、半角 9 文字以内で表示します。 --> <cms:contentshow element="Title:14" defaultElement="SubTitle:9" /> 66 11-7 defaultProperty データが未入力だった場合、代わりに defaultProperty で指定したプロパティ値を取得して表示します。 また、これは default との併用も可能です。 【使用例】 <!-Title エレメントのデータが未入力の場合は、Title プロパティの値を表示します。 Title プロパティの値も未入力の場合は、"OpenCms 情報"という文字を表示します。 --> <cms:contentshow element="Title" defaultProperty="Title" default="OpenCms 情報" /> また、プロパティ名にコロンで続けて最大文字数を指定する事が可能です。 プロパティ値に長い文字が入力されていても、指定された最大文字数以降は切り捨てられます。 半角を 1、全角を 2 と計算して指定してください。 defaultProperty では最大文字数を指定せず、element の方で指定している場合、element の最大文字 数が適用されます。 【使用例】 <!-Title エレメントのデータが未入力の場合は、Title プロパティの値を表示します。 Title エレメントのデータの場合は、半角 14 文字以内、 Title プロパティの場合は、半角 9 文字以内で表示します。 --> <cms:contentshow element="Title:14" defaultProperty="Title:9" /> 67 11-8 trimSuffix element や defaultProperty、defaultElement で最大文字数を指定した場合、 切り取られた文字の後ろに付加する文字列を指定できます。 データが最大文字数内におさまり、切り取られなかった場合は、 trimSuffix で指定した文字列は付加されません。 また、element や defaultProperty、defaultElement で指定した最大文字数は、 trimSuffix に指定した文字数も含めて計算されます。 【使用例】 <!-element の最大文字数に 13 が指定されており、trimSuffix の文字列が全角 3 文字なので、 13 -(3 × 2)= 半角 7 文字(全角 3 文字)が、表示可能な文字数となります。 よって、Title に"タイトルです。"という文字が入力されていた場合、 "タイト・・・"と表示されます。 最大文字数の指定が 14(全角 7 文字)であれば、切り捨てられる事もなく、 "タイトルです。"と表示されることになります。 --> <cms:contentshow element="Title:13" trimSuffix="・・・" /> 68 11-9 setRequest 指定された element の入力値を request スコープの変数に保存します。 setRequest には保存先の変数名を指定します。 つまり、request.setAttribute("変数名", "プロパティ値"); と同じ意味であり、 保存された値は、スクリプレットの request.getAttribute("変数名")で取得する事が出来ます。 この属性を指定した場合、element の入力値は request スコープに保存されるだけで表示されません。 【使用例】 <!-- request スコープに Title の入力値を保存 --> <cms:contentshow element="Title" setRequest="headline" /> <!-- スクリプレットで Title の入力値を取得して表示 --> <%= request.getAttribute("headline") %> <!-- 式言語で Title の入力値を取得して表示 --> ${headline} 11-10 setSession 指定された element の入力値を session スコープの変数に保存します。 setSession には保存先の変数名を指定します。 つまり、session.setAttribute("変数名", "プロパティ値"); と同じ意味であり、 保存された値は、スクリプレットの session.getAttribute("変数名")で取得する事が出来ます。 この属性を指定した場合、element の入力値は session スコープに保存されるだけで表示されません。 【使用例】 <!-- session スコープに Title の入力値を保存 --> <cms:contentshow element= "Title" setSession="headline" /> <!-- スクリプレットで Title の入力値を取得して表示 --> <%= session.getAttribute("headline") %> <!-- 式言語で Title の入力値を取得して表示 --> ${headline} 69 11-11 type 入力データの種類を明示的に指定することで、出力される内容を制御します。 type には、以下の値をセットする事ができます。 date 入力データに、日付のデータが"1204133250312"のような Unix Time 形式で 入っている場合、date を指定すると、"2008/02/28 02:27"という表示が得られ るようになります。 (単位はミリ秒なので、通常の UNIX TIME を 1000 倍し た値になりますので注意して下さい。) デフォルトの日付フォーマットは"yyyy/MM/dd HH:mm"ですが、コロンの後 に日付のフォーマットを指定する事ができます。 【使用例】 <cms:contentshow element="Birthday" type="date" /> <cms:contentshow element="Birthday" type="date:yyyy 年 M 月 d 日" /> releasedate 該当のリソースの公開日を表示します。 これは、エレメントの値とは無関係なので、element の指定は無視されます。 デフォルトの日付フォーマットは"yyyy/MM/dd HH:mm"ですが、コロンの後 に日付のフォーマットを指定する事ができます。 【使用例】 <cms:contentshow type="releasedate:yyyy 年 M 月 d 日" /> expiredate 該当のリソースの公開期限を表示します。 これは、エレメントの値とは無関係なので、element の指定は無視されます。 デフォルトの日付フォーマットは"yyyy/MM/dd HH:mm"ですが、コロンの後 に日付のフォーマットを指定する事ができます。 【使用例】 <cms:contentshow type="expiredate:yyyy 年 M 月 d 日" /> 70 createdate 該当のリソースの作成日を表示します。 これは、エレメントの値とは無関係なので、element の指定は無視されます。 デフォルトの日付フォーマットは"yyyy/MM/dd HH:mm"ですが、コロンの後 に日付のフォーマットを指定する事ができます。 【使用例】 <cms:contentshow type="createdate:yyyy 年 M 月 d 日" /> modifydate 該当のリソースの最終更新日を表示します。 これは、エレメントの値とは無関係なので、element の指定は無視されます。 デフォルトの日付フォーマットは"yyyy/MM/dd HH:mm"ですが、コロンの後 に日付のフォーマットを指定する事ができます。 【使用例】 <cms:contentshow type="modifydate:yyyy 年 M 月 d 日" /> releasemodify 該当のリソースの公開日を表示しますが、公開日が未設定の場合は、代わりに 最終更新日を表示します。 これは、エレメントの値とは無関係なので、element の指定は無視されます。 デフォルトの日付フォーマットは"yyyy/MM/dd HH:mm"ですが、コロンの後 に日付のフォーマットを指定する事ができます。 【使用例】 <cms:contentshow type="releasemodify:yyyy 年 M 月 d 日" /> now 現在時刻を表示します。 これは、エレメントの値とは無関係なので、element の指定は無視されます。 デフォルトの日付フォーマットは"yyyy/MM/dd HH:mm"ですが、コロンの後 に日付のフォーマットを指定する事ができます。 【使用例】 <cms:contentshow type="now:yyyy 年 M 月 d 日" /> 71 size 該当のリソースのファイルサイズを表示します。単位は KB です。 これは、エレメントの値とは無関係なので、element の指定は無視されます。 コロンの後に、%s や%d の置換文字を使用して、フォーマットを指定できます。 (フォーマットの書式は、String.format()で使用する書式で指定します。) 【使用例】 <cms:contentshow type="size:(%d KB) " /> <cms:contentshow type="size_mb:(%.1fMB)" /> size_b size と同じですが、単位は Byte です。 size_kb size と同じです。 size_mb size と同じですが、単位は MB です。 size_gb size と同じですが、単位は GB です。 status 該当のファイルのステータスを取得します。 これは、エレメントの値とは無関係なので、element の指定は無視されます。 ステータスの状況に応じて、"変更なし"、"変更あり"、"新規"、"削除"が表示さ れます。また、"削除"で無い場合、もし、 公開日が現在時刻より未来であれば、"公開待ち"、 公開期限が現在時刻より過去であれば、"期限切れ"、 公開しないにチェックが入っていれば、"非公開"と表示されます。 path 該当のリソースのパスを表示します。 これは、エレメントの値とは無関係なので、element の指定は無視されます。 【使用例】 <cms:contentshow type="path " /> url 入力データがファイルへのパスであると判断し、<cms:link/>で囲むのと同様 の処理を行います。 element を指定しない場合は、そのリソースのパスに対して処理を行います。 【使用例】 <cms:contentshow element="URL" type="url" /> <cms:contentshow type="url" /> 72 link 入力データがファイルへのパスであると判断し、リンクタグを生成します。 element を指定しない場合は、そのリソースのパスに対してリンクタグを生成 します。 【使用例】 <cms:contentshow element="URL" type="link" /> <cms:contentshow type="link" /> また、転んで続けて、target を指定できます。 特殊なターゲットとして、_none を指定すると、全てのリンクが外れます。 「未ログインユーザーはリンクを張らない」ような処理を行う時に便利です。 【使用例】 <cms:contentshow element="URL" type="link:_blank" /> <cms:contentshow element="URL" type="link:_none" /> ターゲットを、他のエレメントやプロパティから取得したい場合は、 %(element.エレメント名)や、%(property.プロパティ名)と指定します。 【使用例】 <cms:contentshow element="URL" type="link:element.Target " /> <cms:contentshow element="URL" type="link:property.Target " /> リ ン ク テ キ ス ト を 指 定 す る 場 合 は 、 <cms:contentshow> ~ </cms:contentshow> で囲んだ範囲に記述します。 【使用例】 <cms:contentshow element="URL" type="link:_blank"> OpenCms タグリファレンスへ </cms:contentshow> 【出力結果】 <a href="/opencms/manual/tags/index.html" target="_blank" OpenCms タグリファレンスへ </a> ※ この場合は、%(value)を指定しても無効となります。 73 11-12 delimiter エレメントの入力値が、カンマ区切りやセミコロン区切り形式の文字列だった場合、 delimiter に、その区切り文字を指定すると、バラバラに分割して表示します。 通常、delimPrefix や delimSuffix と組み合わせて使用します。 【使用例】 <!-Members の値が、"田中, 鈴木, 佐藤" という文字列だった場合。 "<li>田中</li><li>鈴木</li><li>佐藤</li>" と表示されます。 --> <cms:contentshow element="Members" delimiter="," delimPrefix="<li>" delimSuffix="</li>" /> 11-13 delimPrefix delimiter によって分割された、各トークンの前に挿入される文字列です。 【使用例】 <!-Members の値が、"田中, 鈴木, 佐藤" という文字列だった場合。 "<li>田中</li><li>鈴木</li><li>佐藤</li>" と表示されます。 --> <cms:contentshow element="Members" delimiter="," delimPrefix="<li>" delimSuffix="</li>" /> 11-14 delimSuffix delimiter によって分割された、各トークンの後ろに挿入される文字列です。 【使用例】 <!-Members の値が、"田中, 鈴木, 佐藤" という文字列だった場合。 "<li>田中</li><li>鈴木</li><li>佐藤</li>" と表示されます。 --> <cms:contentshow element="Members" delimiter="," delimPrefix="<li>" delimSuffix="</li>" /> 74 11-15 connector delimiter によって分割された、各トークンの間に挿入される文字列です。 【使用例】 <!-Members の値が、"田中, 鈴木, 佐藤" という文字列だった場合。 "<li>田中</li><li> </li><li>鈴木</li><li> </li><li>佐藤</li>" と表示されます。 --> <cms:contentshow element="Members" delimiter="," delimPrefix="<li>" delimSuffix="</li>" connector="<li> </li>" /> 11-16 head head に区切り文字を指定すると、先頭からその区切り文字までを切り出して表示します。 【使用例】 <!-- Section の入力値が"10:営業部"という文字列だった場合、"10"が表示されます。--> 部署コード:<cms:contentshow element="Section" head=":" /> 11-17 tail tail に区切り文字を指定すると、その区切り文字から文字列の最後までを切り出して表示します。 【使用例】 <!-- Section の入力値が"10:営業部"という文字列だった場合、"営業部"が表示されます。--> 部署名:<cms:contentshow element="Section" tail=":" /> head と tail を組み合わせると、データの一部分を切り出して表示できます。 【使用例】 <!-- Headline の入力値が"東京株、一時251円高 (2010/3/16)"だった場合、 "2010/3/16"が表示されます。--> <cms:contentshow element="Headline" tail="(" head=")" /> 75 11-18 filters jp.zyyx.opencms.filters.I_CmsIncludeFilter をインプリメントしているクラスを、 jp.zyyx.opencms.filters パッケージに置けば、filters に指定して呼び出すことができます。 複雑な文字列置換(変換)を行いたい場合は、その変換を行うクラスを作成し、filters で呼び出します。 filters にカンマ区切りで複数のクラス名を指定すると、指定した順番で実行されます。 具体的な仕様は、<cms:property/>タグの filters と同様なので、「2-17 filters」を参照して下さい。 11-19 map 入力データの変換を行います。例えば、指定されたエレメントには数値のコードが入っていて、表示す る時には日本語のラベルにしたい場合に有効です。 プロパティの値を key とした場合の、value を定義します。 【使用例】 <!-- Workflow に"1"が入っている場合、"保存"と表示されます。--> <cms:contentshow element="Workflow" map="1=保存&2=承認待&3=完了" /> map に key1=value1&key2=value2&key3=value3 というフォーマットで、key と value の組み合わせ を記述する事で、key に対応する value に変換して表示します。 この機能は、エレメントには ID を保存しておき、表示するテンプレートの場所によって、日本語のラ ベルを変えたい場合などに非常に有効です。 map で指定した key に存在しない値が、エレメントの入力データにセットされていた場合は、何も表 示されません。また、key には正規表現は使用できません。 置換パターンを記述したテキストファイルを OpenCms 上に作成しておけば、そのパスを指定して読み 込ませる事が出来ます。テキストファイルは、プロパティファイルと同じ形式で作成します。 (ただし、拡張子は*.properties 以外にして下さい。native2ascii がかかってしまいます。 ) 以下のファイルを作成します。 【設定ファイル:/map_status.txt】 1=保存 2=承認待 3=完了 76 そして、以下のように使用します。 (map に指定された文字が/から始まれば、ファイルとみなされます。 ) 【使用例】 <cms:contentshow element="Workflow" map="/map_status.txt" /> この機能を利用すれば、map の値に変更があった場合、一箇所のファイルを修正するだけで済みます。 11-20 query これは、map と同様に、入力データの変換を行います。 ただし、変換の key と value の組み合わせは、文字列やファイルからではなく、SQL をデータベース に発行し、取得します。query に指定する文字列のフォーマットは、次のようになります。 (pool name)|(SQL 文) SQL 文には、SELECT 文を記述し、必ず、一列目に key となるカラム、二列目に value となるカラム が入るようにします。三列目以降のカラムを指定しても無視されます。 一列目のカラムの値とプロパティの値が一致した時、そのレコードの二列目の値が表示されます。 【使用例】 <cms:contentshow element="category_id" query="default|select category_id, category_name from category_mst" /> SQL 文に?を指定すると、その部分はプロパティの値に置き換わります。 SQL 文に?を指定した時は、一列目に value となるカラムを記述します。二列目以降は無視されます。 【使用例】 <cms:contentshow element="category_id" query="default|select category_name from category_mst where category_id = ? " /> 上記の例では、pool name に default と指定していますが、default と指定すると、OpenCms のテーブ ルが入っているデータベースを指す事になります。 それ以外の別のデータベースへ接続したい場合は、/WEB-INF/conf/opencms.properties に接続先情報 を定義し、Tomcat を再起動する必要があります。 「2-19 query」を参照して下さい。 この場合の手順は、<cms:property/>タグの query と同様なので、 77 11-21 replaceRegex 置換対象文字列を正規表現で指定します。通常、replace と組み合わせて使用します。 【使用例】 <cms:contentshow element="body" replaceRegex="[a-z]" replace="*" /> 11-22 replace replaceRegex で指定した正規表現にマッチする文字列を、replace で指定した文字列に置換します。 通常、replaceRegex と組み合わせて使用します。 replaceRegex が未設定の場合、replace で指定した文字列のみ表示されるようになります。 【使用例】 <cms:contentshow element="body" replaceRegex="[a-z]" replace="*" /> 11-23 その他の機能 <cms:contentshow> ~ </cms:contentshow> の間に HTML を記述する事ができます。 そして、その HTML 内に%(value)と記述すると、その部分が、入力データに置換されます。 【使用例】 <cms:contentshow element="Title"> <h2>%(value)</h2> <div class="subtitle">sample text</div> </cms:contentshow> 入力欄が未入力の場合は、<cms:property/>タグで囲まれた範囲の HTML も表示されません。 入力欄が未入力の場合に、前後の文字列も非表示にしたい場合などに使用します。 78 12 contentinfo 『ページネーション ページネーション情報 ション情報を 情報を取得する 取得する。 する。』 ページネーションの情報を取得します。 このタグは、<cms:contentload/>タグの中でしか使用できません。 12-1 var page スコープの変数名を指定すると、そこに、ページネーションの情報がセットされます。 ページネーション情報は org.opencms.jsp.CmsContentInfoBean クラスのオブジェクトになります。 【使用例】 <cms:contentload collector="zx.allInFolder" param="/news/news%(number).html|news|0" pageSize="10" pageIndex="1" pageNavLength="5"> <cms:contentinfo var="pager" /> No.${pager.resultIndex} : <cms:contentshow type="path"/><br/> </cms:contentload> 検索結果:${pager.resultSize} 件<br/> ページ数:${pager.pageIndex} / ${pager.pageCount}<br/> 1 ページの最大表示件数:${pager.pageSize}<br/> Google 風ナビゲーション情報<br/> リンク開始ページ番号:${pager.pageNavStartIndex}<br/> リンク終了ページ番号:${pager.pageNavEndIndex}<br/> 最大リンクページ数:${pager.pageNavLength}<br/> 12-2 scope var に変数名を指定すると、page スコープにページネーション情報が保存されますが、リクエストや、 セッションに保存したい場合、スコープを指定します。 【使用例】 <cms:contentinfo var="pager" scope="request" /> <cms:contentinfo var="pager" scope="session" /> 79 13 contentloop 『構造化コンテンツ 構造化コンテンツの コンテンツの可変長項目の 可変長項目の入力データ 入力データを データを表示する 表示する。 する。』 可変長の入力項目を表示する際、このタグで囲む事で、ループとなる範囲を指定します。 または、グループ化し、親子の階層構造を持った XSD の場合、子を指すエレメント名を指定すること で、子の入力フォームに制御を移します。 このタグは、<cms:contentload/>タグの中でしか使用できません。 13-1 element 可変長の入力項目のエレメント名を指定します。 【使用例】 <cms:contentloop element="URL"> URL:<cms:contentshow /> </cms:contentloop> または、子を指すエレメント名を指定し、子の方で定義された入力フォームへアクセスします。 【使用例】 <cms:contentloop element="URL"> <cms:contentshow element="Path" type="link"> <cms:contentshow element="Text" /> </cms:contentshow><br/> </cms:contentloop> 13-2 offset 指定された位置からループを開始します。1 以上の値を指定して下さい。 例えば、offset に 3 が入っていた場合、3 つ目の入力項目から表示を開始し、最初の 2 つの入力項目は スキップします。 13-3 limit ループの上限を設定します。1 以上の値を指定して下さい。 例えば、limit に 3 が入っていた場合、3 つ目の入力項目まで表示して終了します。 4 つ目以降の入力項目は表示されません。 80 13-4 order 入力項目を、意図的に並べ替えます。 order には、ソートに使用するエレメントを指定します。 何も指定しなければ昇順にソートされ、降順にしたい場合は desc を指定します。 【使用例】 <cms:contentloop element="URL" order="URL desc"> URL:<cms:contentshow /> </cms:contentloop> 階層構造を持った XSD で、子の入力フォームを指定する場合は、/ で階層を記述します。 カンマ区切りで、第二、第三のソートキーも指定できます。 【使用例】 <cms:contentloop element="URL" order="URL/ReleaseDate desc, URL/FilePath"> ダウンロードファイル:<cms:contentshow element="FileName" type="link" /> </cms:contentloop> 何も指定しなければ、文字列の辞書順としてソートされます。 数値としてソートしたい場合は、digit を指定します。 【使用例】 <cms:contentloop element="URL" order="URL/ReleaseDate digit desc "> ダウンロードファイル:<cms:contentshow element="FileName" type="link" /> </cms:contentloop> 81 13-5 test 表示する入力項目の条件を指定します。 エレメント名を指定すると、そのエレメント名に値が入っている場合のみ表示します。 可変長の入力項目なので、複数の入力欄がありますが、全ての入力欄が未入力の場合に、非表示とし、 一つでも入力されている入力欄があれば表示します。 入力欄単体での表示・非表示の制御には、<cms:contentcheck/>を使用して下さい。 【使用例】 <!-- URL が可変長の入力項目の場合 --> <cms:contentloop element="URL" test="URL"> 参考 URL:<cms:contentshow type="link" /> </cms:contentloop> <!-- グループ化により階層構造を持っている場合 --> <cms:contentloop element="URL" test="URL/FilePath"> ダウンロードファイル:<cms:contentshow element="FileName" type="link" /> </cms:contentloop> また、演算子を指定することも可能です。 【使用例】 <!-- URL が可変長の入力項目の場合 --> <cms:contentloop element="URL" test="URL = .*.html"> 参考 URL:<cms:contentshow type="link" /> </cms:contentloop> <!-- グループ化により階層構造を持っている場合 --> <cms:contentloop element="URL" test="URL/ReleaseDate < %(date)"> ダウンロードファイル:<cms:contentshow element="FileName" type="link" /> </cms:contentloop> 82 また、演算子を指定している場合、未入力の項目は常に false となり、表示はされません。 未入力の項目はチェックをスキップし、常に表示されるようにするには、条件文の頭に*を付与します。 【使用例】 <!-- URL が可変長の入力項目の場合 --> <cms:contentloop element="URL" test="*URL = .*.html"> 参考 URL:<cms:contentshow type="link" /> </cms:contentloop> <!-- グループ化により階層構造を持っている場合 --> <cms:contentloop element="URL" test="*URL/ReleaseDate < %(date)"> ダウンロードファイル:<cms:contentshow element="FileName" type="link" /> </cms:contentloop> 条件は、カンマ区切りで複数指定できます。複数指定したときは AND 検索となります。 利用可能な演算子やマクロに関しては、<cms:contentload/>タグの param の property()や、element() と同様ですので、「10-2 param」を参照して下さい。 13-6 var page スコープの変数名を指定すると、そこに、入力項目のオブジェクトがセットされます。 スクリプレットや式言語で取り出して使用する事ができます。 セットされるオブジェクトは、org.opencms.xml.types.I_CmsXmlContentValue クラスです。 【使用例】 <cms:contentloop element="URL" var="loopContent"> name=${loopContent.name} path=${loopContent.path} type=${loopContent.typeName} minOccurs=${loopContent.minOccurs} minOccurs=${loopContent.index} maxOccurs=${loopContent.maxOccurs} maxOccurs=${loopContent.maxIndex} </cms:contentloop> <% value = (I_CmsXmlContentValue) pageContext.getAttribute("loopContent"); %> <%= value.getName() %> 83 以下は、I_CmsXmlContentValue クラスの代表的なメソッドです。 メソッド名 説明 例 getName() エレメント名を取得します。 タイトル 本文 URL getPath() パスを取得します。 タイトル[1] 本文[1] URL[2] タイトルです。 これはサンプルデータです。 http://www.zyyx.jp/ タグなどの装飾情報を除いた getPlainText(cms) 入力値を取得します。 入力されている値をそのまま取 これは<b>サンプル</b> タイトルです。 getStringValue(cms) 得します。 getTypeName() データタイプを取得します。 http://www.zyyx.jp/ データです。<br/> OpenCmsString OpenCmsHtml OpenCmsString Sample Sample Sample Samples Samples Samples 1 1 1 1 1 5 0 0 1 1 1 2 getContentDefinition() コンテンツの定義名(単数形)を .getInnerName() 取得します。 getContentDefinition() コンテンツの定義名(複数形)を .getOuterName() 取得します。 XSD で定義された minOccurs の getMinOccurs() 値です。 XSD で定義された maxOccurs getMaxOccurs() の値です。 このエレメントの番号です。0 か getIndex() ら始まります。 このエレメントに入力された個 getMaxIndex() 数です。(value.getMaxIndex() <= maxOccurs) 13-7 scope var に変数名を指定すると、page スコープにページネーション情報が保存されますが、リクエストや、 セッションに保存したい場合、スコープを指定します。 84 14 contentcheck 『構造化コンテンツ 構造化コンテンツの コンテンツの表示条件を 表示条件を指定する 指定する。 する。』 このタグで囲まれた範囲を表示するかしないかの条件をセットします。 その条件を満たした時のみ、<cms:contentcheck> ~ </cms:contentcheck>内の HTML を表示します。 このタグは、<cms:contentload/>タグの中でしか使用できません。 また、複数入力欄を一括で条件指定する場合は、<cms:contentloop/>の test も使用できるので、そちら も参照して下さい。 14-1 ifexists ifexists で指定されたエレメントの入力データが未入力の場合、タグ内の HTML は表示されません。 エレメント名は、カンマ区切りで複数指定することも可能で、その場合、どれか一つでも入力データが 存在すれば、タグ内の HTML が表示されます。 可変長の入力項目で、特定の項目を指定したい場合は、エレメント名にインデックスを指定します。 また、グループ化した XSD のエレメント名の場合は、/で階層を指定します。 【使用例】 <cms:contentcheck ifexists="Title, Download/FileName"> … 省略 … </cms:contentcheck> <cms:contentcheck ifexists="URL[2]"> … 省略 … </cms:contentcheck> 14-2 ifexistsone ifexists と同じです。 14-3 ifexistsall ifexistsall で指定されたエレメントの入力データに一つでも未入力のものがあれば、タグ内の HTML は表示されません。エレメント名は、カンマ区切りで複数指定することも可能で、指定されたエレメン トが全て入力された場合のみ、タグ内の HTML が表示されます。 可変長の入力項目で、特定の項目を指定したい場合は、エレメント名にインデックスを指定します。 85 14-4 ifexistsnone ifexistsnone で指定されたエレメントの入力データに一つでも入力されているものがあれば、タグ内の HTML は表示されません。エレメント名は、カンマ区切りで複数指定することも可能で、指定されたエ レメントが全て未入力の場合のみ、タグ内の HTML が表示されます。 可変長の入力項目で、特定の項目を指定したい場合は、エレメント名にインデックスを指定します。 14-5 ifexistsblank ifexistsnone が、指定されたエレメントが全て未入力の場合のみ表示されるのに対し、 ifexistsblank は、指定されたエレメントのうち、一つでも未入力があれば表示されます。 14-6 equals 完全一致の条件を指定します。何も指定しない場合は、入力が「有る」か「無い」かで判断されますが、 equals に文字列を指定すると、その文字と一致する場合のみ「有る」と判断されます。 【使用例】 <cms:contentcheck ifexists="Title" equals="【お知らせ】"> <cms:contentcheck ifexists="SubTitle" equals="システムメンテナンス情報"> … 省略 … </cms:contentcheck> </cms:contentcheck> 14-7 notEquals 完全一致の条件を指定します。何も指定しない場合は、入力が「有る」か「無い」かで判断されますが、 notEquals に文字列を指定すると、その文字と一致しなかった場合のみ「有る」と判断されます。 equals が指定されている場合は、この設定値は無視されます。 14-8 contains 部分一致の条件を指定します。何も指定しない場合は、入力が「有る」か「無い」かで判断されますが、 contains に文字列を指定すると、その文字が含まれている場合のみ「有る」と判断されます。 86 14-9 notContains 部分一致の条件を指定します。何も指定しない場合は、入力が「有る」か「無い」かで判断されますが、 notContains に文字列を指定すると、その文字が含まれていない場合のみ「有る」と判断されます。 contains が指定されている場合は、この設定値は無視されます。 14-10 starts 前方一致の条件を指定します。何も指定しない場合は、入力が「有る」か「無い」かで判断されますが、 starts に文字列を指定すると、その文字で始まる場合のみ「有る」と判断されます。 14-11 notStarts 前方一致の条件を指定します。何も指定しない場合は、入力が「有る」か「無い」かで判断されますが、 notStarts に文字列を指定すると、その文字で始まらない場合のみ「有る」と判断されます。 starts が指定されている場合は、この設定値は無視されます。 14-12 ends 後方一致の条件を指定します。何も指定しない場合は、入力が「有る」か「無い」かで判断されますが、 ends に文字列を指定すると、その文字で終わる場合のみ「有る」と判断されます。 14-13 notEnds 後方一致の条件を指定します。何も指定しない場合は、入力が「有る」か「無い」かで判断されますが、 notEnds に文字列を指定すると、その文字で終わらない場合のみ「有る」と判断されます。 ends が指定されている場合は、この設定値は無視されます。 14-14 level ディレクトリの深さを数値で指定すると、その階層のリソースのみを表示対象とします。 0 や*を指定すると、未設定の場合と同様、全ての階層のリソースが表示対象となります。 【使用例】 <cms:contentcheck ifexists="Title, SubTitle" level="2"> … 省略 … </cms:contentcheck> 87 14-15 current true を指定すると、現在表示している HTML と同じ階層にあるリソースのみが表示対象となります。 【使用例】 <cms:contentcheck ifexists="Title, SubTitle" current="true"> … 省略 … </cms:contentcheck> 14-16 baseUrl 基点となる URL を指定します。指定された URL 以下のリソースのみが表示対象となります。 【使用例】 <cms:contentcheck ifexists="Title, SubTitle" baseUrl="/content/"> … 省略 … </cms:contentcheck> 14-17 groups アカウントのグループ名をカンマ区切りで指定します。 指定したグループに所属しているユーザーに対してのみ、ページに表示させる事ができます。 静的配信では利用できません。 【使用例】 <cms:contentcheck ifexists="Title, SubTitle" groups="Administrators, Projectmanagers"> … 省略 … </cms:contentcheck> 88 14-18 users アカウントのユーザー名をカンマ区切りで指定します。 指定したユーザーに対してのみ、ページに表示させる事ができます。 静的配信では利用できません。 【使用例】 <cms:contentcheck ifexists="Title, SubTitle" users="Admin, user01, user02"> … 省略 … </cms:contentcheck> 14-19 project プロジェクト名を指定すると、そのプロジェクトでページが表示された時のみ表示されます。 複数のプロジェクト名を指定することはできません。 静的配信では利用できません。 【使用例】 <cms:contentcheck ifexists="Title, SubTitle" project="offline"> … 省略 … </cms:contentcheck> 14-20 resourcetypes リソースタイプ名を指定すると、そのリソースタイプのリソースのみが表示対象となります。 カンマ区切りで複数指定する事ができます。 【使用例】 <cms:contentcheck ifexists="Title, SubTitle" resourcetypes="news, sample, xmlcontent"> … 省略 … </cms:contentcheck> 89 14-21 expire 何も指定しない場合は、入力が「有る」か「無い」かで判断されますが、expire に true をセットする と、公開期限切れのリソースのみ「有る」と判定されるようになります。 ※ <cms:contentload/>の param で、ignoreExpiration()を指定している必要があります。 【使用例】 <cms:contentcheck ifexists="Title, SubTitle" expire="true"> … 省略 … </cms:contentcheck> 14-22 status ステータスを指定すると、そのステータスのリソースのみが表示対象となります。 カンマ区切りで複数指定する事ができます。指定できるステータスには、以下のものがあります。 設定値 説明 new 新規 changed 変更あり unchanged 変更なし delete 削除 【使用例】 <cms:contentcheck ifexists="Title, SubTitle" status="new, changed"> … 省略 … </cms:contentcheck> 14-23 locale <contentcheck/>でチェックするデータのロケールを指定します。構造化コンテンツの入力フォームの 左上に、言語を切り替える事ができますが、対象となる言語はこの locale で指定します。 【使用例】 <cms:contentcheck ifexists="Title, SubTitle" locale="en"> … 省略 … </cms:contentcheck> 90 15 contentaccess 『構造化コンテンツ 構造化コンテンツを コンテンツをオブジェクトとして オブジェクトとして取得 として取得する 取得する。 する。』 リソースの情報をオブジェクトとして取得します。 このタグは、<cms:contentload/>タグの中でしか使用できません。 15-1 var page スコープの変数名を指定すると、そこに、取得したリソースのオブジェクトがセットされます。 スクリプレットや式言語で取り出して使用する事ができます。 セットされるオブジェクトは、org.opencms.jsp.util.CmsJspContentAccessBean クラスのオブジェク トとして格納されています。 【使用例】 <cms:contentload collector="zx.allInFolderDateReleasedDesc" param="/news/news%(number).html|news|20" > <cms:contentaccess var="res"/> ${res.filename}<br/> Title = ${res.value['Title']}<br/> <% CmsJspContentAccessBean res = (CmsJspContentAccessBean)pageContext.getAttribute("res"); // … (省略) … %> </cms:contentload> 91 15-2 scope var に変数名を指定すると、オブジェクトが page スコープに保存されますが、セッションや、リクエ ストスコープに格納したい時は、ここでスコープを指定します。 【使用例】 <cms:contentload collector="zx.allInFolderDateReleasedDesc" param="/news/news%(number).html|news|20" > <cms:contentaccess var="res" scope="session" /> <% CmsJspContentAccessBean res = (CmsJspContentAccessBean)session.getAttribute("res"); // … (省略) … %> </cms:contentload> 15-3 locale 表示する入力データのロケールを指定します。構造化コンテンツの入力フォームの左上に、言語を切り 替える事ができますが、対象となる言語はこの locale で指定します。 【使用例】 <cms:contentaccess var="res" locale="en" /> 92 16 breadCrumnb 『パンくず パンくずリスト くずリストを リストを作成する 作成する。 する。』 パンくずリストを生成し、表示します。 16-1 path 作成したいパンくずリストのパスを指定します。相対パスでは指定できません。 path を指定しない場合は、現在のパスでパンくずリストが生成されます。 各階層のデフォルトファイル(例えば、index.html 等)があれば、そこへのリンクを作成し、リンクの ラベルには Title プロパティの値が使用されます。 取得したリンクラベルが であれば、その階層のパンくずはスキップし、表示されません。 デフォルトファイルが存在しなければ、その親フォルダへのリンクを作成し、リンクのラベルには、そ のフォルダの Title プロパティの値が使用されます。 %(opencms.uri)などのマクロも使用できます。 また、自分自身の URL には、リンクを張る意味が無い為、リンクは張られません。 【使用例】 <cms:breadcrumb path="/news/products/page0011.html" delimiter=" > " /> 【出力結果(例)】 <a href="/">トップ</a> > <a href="/news/">ニュース</a> > <a href="/news/products/">製品情報</a> > page0011.html のタイトルです。 尚、デフォルトファイルは、以下の順で検索されます。 1.親フォルダの default-file プロパティを参照し、ファイル名が入力されていれば、 そのファイル名をデフォルトファイルとする。 2.default-file プロパティが未設定または、ファイルが存在しない場合、 ./WEB-INF/config/opencms-vfs.xml の<defaultfiles/>で定義されているファイル名を取得し、 デフォルトファイルとする。 3.<defaultfiles/>で定義されているファイルが一つも存在しない場合は、 親フォルダへのリンクを作成する。 93 16-2 property 通常、リンクのラベルには Title プロパティが使用されますが、これを変更したい場合は、ここにプロ パティ名を記述します。 また、カンマ区切りで複数のプロパティ名を記述する事ができます。 複数指定すると、最初のプロパティが未設定の時、次に指定されたプロパティを次々に検索し、最初に 見つかったプロパティ値をリンクのラベルに使用します。 【使用例】 <cms:breadcrumb path="/news/products/page0011.html" property="NavText, Title, SubTitle" /> 16-3 start パンくずリストの表示を開始する階層を 1 以上の値で指定します。 path には、フルパスで記述する必要がありますが、最初の階層を表示させたくない場合に使用します。 指定しない場合は、1 が指定されたものとして扱われます。 【使用例】 <cms:breadcrumb path="/news/products/page0011.html" start="3" delimiter=" > " /> 【出力結果(例)】 <a href="/news/products/">製品情報</a> > <a href="/news/products/page0011.html">page0011.html のタイトルです。</a> 94 16-4 end パンくずリストの表示を終了する階層を指定します。 end は 1 以上の値を指定すると、各階層の絶対位置を指定したとみなされます。 例えば、"/news/products/page0011.html"という URL であれば、 end = "1" と指定すれば、 /index.html end = "2" と指定すれば、 /news/index.html end = "3" と指定すれば、 /news/products/index.html end = "4" と指定すれば、 /news/products/page0011.html がパンくずリストとして表示されます。 指定しない場合や、または 0 が指定された場合は、path に指定された階層全てがパンくずリストとし て表示されます。 【使用例】 <cms:breadcrumb path="/news/products/page0011.html" end="3" delimiter=" > " /> 【出力結果(例)】 <a href="/">トップ</a> > <a href="/news/">ニュース</a> > <a href="/news/products/">製品情報</a> > また、-1 以下の値(負の値)を指定した場合は、後ろからの相対位置となります。 例えば、"/news/products/page0011.html"という URL であれば、 end = "-1" と指定すれば、 /news/products/page0011.html end = "-2" と指定すれば、 /news/products/index.html end = "-3" と指定すれば、 /news/index.html end = "-4" と指定すれば、 /index.html となります。 【使用例】 <cms:breadcrumb delimiter=" > " end="-2" /> 95 16-5 link link に false を指定すると、パンくずリストは表示されますが、リンクは張られずテキストだけ表示さ れます。 true を指定すると、テキストだけでなくリンクも張られるようになります。 デフォルトは true です。 【使用例】 <cms:breadcrumb path="/news/products/page0011.html" link="<%= isLogin %>" delimiter=" > " /> また、parent と指定すると、常に末端の階層だけリンクが張られない状態で表示されます。 【使用例】 <cms:breadcrumb path="/news/products/page0011.html" link="parent" delimiter=" > " /> 【出力結果(例)】 <a href="/">トップ</a> > <a href="/news/">ニュース</a> > <a href="/news/products/">製品情報</a> > page0011.html のタイトルです。 16-6 delimiter パンくずリストの各階層リンクの間に挿入される文字を指定します。 【使用例】 <cms:breadcrumb path="/news/products/page0011.html" delimiter=" <img src=’arrow.gif’> " /> 【出力結果(例)】 <a href="/">トップ</a> <img src=’arrow.gif’> <a href="/news/">ニュース</a> <img src=’arrow.gif’> <a href="/news/products/">製品情報</a> <img src=’arrow.gif’> page0011.html のタイトルです。 96 16-7 prefix パンくずリストの各階層リンクの前に挿入される文字を指定します。 【使用例】 <ul><cms:breadcrumb path="/news/products/page0011.html" prefix="<li>" suffix="</li>" /></ul> 【出力結果(例)】 <ul> <li><a href="/">トップ</a></li> <li><a href="/news/">ニュース</a></li> <li><a href="/news/products/">製品情報</a></li> <li>page0011.html のタイトルです。</li> </ul> 16-8 suffix パンくずリストの各階層リンクの後に挿入される文字を指定します。 【使用例】 <ul><cms:breadcrumb path="/news/products/page0011.html" prefix="<li>" suffix="</li>" /></ul> 【出力結果(例)】 <ul> <li><a href="/">トップ</a></li> <li><a href="/news/">ニュース</a></li> <li><a href="/news/products/">製品情報</a></li> <li>page0011.html のタイトルです。</li> </ul> 16-9 visible false を指定すると、このパンくずリスト自体が非表示となります。デフォルトは true です。 【使用例】 <cms:breadcrumb path="/news/products/page0011.html" visible="<%= isNavi %>" delimiter=" > " /> 97 16-10 setRequest パンくずリストの HTML を request スコープの変数に保存します。 setRequest には保存先の変数名を指定します。 つまり、request.setAttribute("変数名", "パンくずリストの HTML"); と同じ意味であり、 保存された HTML は、スクリプレットの request.getAttribute("変数名")で取得する事が出来ます。 setRequest を指定した場合、パンくずリストは request スコープに保存されるだけで表示されません。 【使用例】 <!-- request スコープにパンくずリストの HTML を保存 --> <cms:breadcrumb path="/news/products/page0011.html" setRequest="bread" delimiter=" > " /> <!-- スクリプレットでパンくずリストの HTML を取得して表示 --> <%= request.getAttribute("bread") %> <!-- 式言語でパンくずリストの HTML を取得して表示 --> ${bread} 16-11 setSession パンくずリストの HTML を session スコープの変数に保存します。 setSession には保存先の変数名を指定します。 つまり、session.setAttribute("変数名", "パンくずリストの HTML"); と同じ意味であり、 保存された HTML は、スクリプレットの session.getAttribute("変数名")で取得する事が出来ます。 setSession を指定した場合、パンくずリストは session スコープに保存されるだけで表示されません。 【使用例】 <!-- session スコープにパンくずリストの HTML を保存 --> <cms:breadcrumb path="/news/products/page0011.html" setSession="bread" delimiter=" > " /> <!-- スクリプレットでパンくずリストの HTML を取得して表示 --> <%= session.getAttribute("bread") %> <!-- 式言語でパンくずリストの HTML を取得して表示 --> ${bread} 98 16-12 option パンくずリストの各階層リンクの A タグ内に挿入する文字列を記述できます。 CSS によるスタイルの定義や onClick などの JavaScript を記述する為に使用します。 【使用例】 <cms:breadcrumb path="/news/products/page0011.html" delimiter=" > " option="onClick=' … ' style=' … ' target='_blank' " /> 【出力結果(例)】 <a onClick=' … ' style=' … ' target='_blank' href="/">トップ</a> > <a onClick=' … ' style=' … ' target='_blank' href="/news/">ニュース</a> > <a onClick=' … ' style=' … ' target='_blank' href="/news/products/">製品情報</a> > page0011.html のタイトルです。 16-13 exclude パンくずリストから除外したいファイルのファイル名(パスではありません)を指定します。 カンマ区切りで複数のファイル名を記述できます。 パンくずリストのリンクを表示する時、ファイル名が exclude で指定したものと一致すれば、そのリン クは表示されません。 【使用例】 <cms:breadcrumb exclude="index.shtml, default.html, top.html" delimiter=" > " /> 99 16-14 その他の機能 <cms:breadcrumb> ~ </cms:breadcrumb> の間に HTML を記述する事ができます。 そして、その HTML 内に%(value)と記述すると、その部分がパンくずリストの HTML に置換されます。 【使用例】 <cms:breadcrumb path="/news/products/page0011.html" prefix="<li>" suffix="</li>"> <ul>%(value)</ul> </cms:breadcrumb> パンくずリストの表示内容が無い場合は、<cms:breadcrumb/>タグで囲まれた範囲の HTML も表示さ れません。 パンくずリストの表示内容が無い場合に、前後の文字列も非表示にしたい場合などに使用します。 100 17 user 『ログインユーザーの ログインユーザーの情報を 情報を表示する 表示する。 する。』 ログインしているユーザーの情報を取得し、表示します。 17-1 property ユーザーのどの情報を表示するかを指定します。 指定できる値には、以下のものがあります。 name ユーザーID が表示されます。 firstname ユーザーの名前が表示されます。 lastname ユーザーの姓が表示されます。 email ユーザーのメールアドレスが表示されます。 description ユーザーの説明が表示されます。 zip ユーザーの郵便番号が表示されます。 city ユーザーの住所 1(都道府県+市区町村)が表示されます。 street ユーザーの住所 2(マンション名など)が表示されます。 otherstuff ユーザーの全ての追加情報が表示されます。 フォーマットは、key=value のペアを、スペースでつないだ形式です。 【使用例】 ユーザーID<cms:user property="name" /><br/> 氏名:<cms:user property="lastname" /> <cms:user property="firstname" /><br/> メールアドレス:<cms:user property="email" /><br/> コメント: <p><cms:user property="description" /><p/> 郵便番号:<cms:user property="zip" /><br/> 住所:<cms:user property="city" /> <cms:user property="street" /><br/> <hr> <cms:user property="otherstuff" /> 101 18 info 『システム情報 システム情報を 情報を表示する 表示する。 する。』 OpenCms の情報や、システムプロパティの情報を取得し、表示します。 18-1 property どの情報を表示するかを指定します。指定できる値には、以下のものがあります。 OpenCms に関連する情報 opencms.version OpenCms のバージョンを表示します。 opencms.url 現在のページの URL を表示します。 opencms.uri 現在のページの URI を表示します。 opencms.webapp ウェブアプリケーション名を表示します。 opencms.webbasepath ウェブアプリケーションの相対パスを表示します。 opencms.request.uri 現在のページのリクエスト URI を表示します。 opencms.request.element.uri JSP テンプレートのパスを表示します。 opencms.request.folder フォルダまでのリクエスト URI を表示します。 opencms.request.encoding リクエストのエンコードを表示します。 opencms.request.locale リクエストのロケールを表示します。 システムプロパティ(一部のみ) java.vm.name 現在使用している Java VM の名前を表示します。 java.vm.version 現在使用している Java VM のバージョンを表示します。 java.vm.info 現在使用している Java VM の情報を表示します。 java.vm.vendor 現在使用している Java VM のベンダー名を表示します。 os.name OS の名前を表示します。 os.version OS のバージョンを表示します。 os.arch OS のアーキテクチャを表示します。 102 【使用例】 opencms.version : <cms:info property="opencms.version"/><br/> opencms.url : <cms:info property="opencms.url"/><br/> opencms.uri : <cms:info property="opencms.uri"/><br/> opencms.webapp : <cms:info property="opencms.webapp"/><br/> opencms.webbasepath : <cms:info property="opencms.webbasepath"/><br/> opencms.request.uri : <cms:info property="opencms.request.uri"/><br/> opencms.request.element.uri : <cms:info property="opencms.request.element.uri"/><br/> opencms.request.folder : <cms:info property="opencms.request.folder"/><br/> opencms.request.encoding : <cms:info property="opencms.request.encoding"/><br/> opencms.request.locale : <cms:info property="opencms.request.locale"/><br/> java.vm.name : <cms:info property="java.vm.name"/><br/> java.vm.version : <cms:info property="java.vm.version"/><br/> java.vm.info : <cms:info property="java.vm.info"/><br/> java.vm.vendor : <cms:info property="java.vm.vendor"/><br/> os.name : <cms:info property="os.name"/><br/> os.version : <cms:info property="os.version"/><br/> os.arch : <cms:info property="os.arch"/><br/> 103 19 label 『プロパティファイルで プロパティファイルで定義された 定義された文字列 された文字列を 文字列を表示する 表示する。 する。』 OpenCms のプロパティファイル(*.properties)から値を読み込み表示します。 表示したいプロパティのキーをこのタグで囲んで使用します。 【使用例】 <cms:label>flex.cache.label.title</cms:label> 104 20 job 『ジョブを ジョブをスケジューラに スケジューラに登録する 登録する。 する。』 ジョブをスケジューラに登録します。 ただし、ジョブを登録できる権限のあるユーザーが実行しなければエラーとなります。 【使用例】 <cms:job name="パブリッシュの実行" date="2010/3/24 10:00:00" classname="org.opencms.scheduler.jobs.CmsPublishJob" user="Admin" project="Offline" /> 20-1 classname ジョブのクラス名を指定します。 20-2 name ジョブの名前を指定します。 20-3 date ジョブを実行するを指定します。指定しない場合は即時実行となります。 クーロン表記の指定以外に、一度だけ実行するのであれば、<cms:contentload/>の param で指定でき る関数と同様のフォーマットで、日付の指定ができます。 詳しくは、 「10-2 param」の、releasedate()の説明を参照して下さい。 20-4 reuse インスタンスの再利用を行うかどうかを指定します。再利用する場合は true をセットします。 20-5 user ジョブを実行するユーザーを指定します。 20-6 project ジョブを実行するプロジェクトの名前を指定します。 105 20-7 siteroot ジョブを実行する時のサイトルートを指定します。 20-8 uri ジョブを実行する時のリクエスト URI を指定します。 20-9 locale ジョブを実行する時のロケールを指定します。 20-10 encoding ジョブを実行する時のエンコードを指定します。 20-11 addr ジョブを実行する時のリモートアドレスを IP アドレスで指定します。 106 21 mail 『メールを メールを送信する 送信する。 する。』 【注意】:このタグは、まだ動作確認が不十分です。 メールの送信を行います。 OpenCms でメールを行うには、./WEB-INF/config/opencms-system.xml の<mail/> で、SMTP の設 定を行っておく必要があります。設定を変更した場合、Tomcat の再起動が必要です。 【opencms-system.xml(抜粋) 】 <mail> <mailfrom>[email protected]</mailfrom> <mailhost name="my.smtp.server" port="25" order="10" protocol="smtp" user="username" password="secure"/> <mailhost name="alternative.smtp.server" port="25" order="20" protocol="smtp"/> <mailhost name="another.alternative.smtp.server" port="25" order="30" protocol="smtp"/> </mail> 21-1 subject メールの件名をセットします。 文字列を直接指定することもできますが、パスを指定することもできます(body の説明を参照) 。 21-2 to メールの送り先(To)を指定します。カンマ区切りでメールアドレスを指定します。 21-3 cc メールの送り先(Cc)を指定します。カンマ区切りでメールアドレスを指定します。 21-4 bcc メールの送り先(Bcc)を指定します。カンマ区切りでメールアドレスを指定します。 21-5 from From のメールアドレスを一つだけ指定します。 107 21-6 mode メールの送信モードを指定し、送信先を限定できます。以下の値を指定できます。 all デフォルトの設定です。送信先の制限を行いません。 pc 携帯用ドメインのメールアドレスが To に指定されていても送られません。 mobile 携帯用ドメインのメールアドレスのみ送信します。 (メールアドレス) メールアドレスが指定されていた場合は、そのメールアドレスにのみ送られま す。確認用のメールを送信する場合に使用します。 携帯のドメインは、デフォルトでは以下のものが指定されています。 @docomo.ne.jp, ezweb.ne.jp, @softbank.ne.jp, .vodafone.ne.jp, pdx.ne.jp これらは、単純に、メールアドレスの後方一致としてチェックされます。 変更する場合は、mobileDomains にカンマ区切りで指定しなおします。 21-7 head メールの本文のボディ部分をセットします。 送信されるメールの本文は、 (head にセットされた文字列) + (body にセットされた文字列) + (foot にセットされた文字列)になります。 文字列を直接指定することもできますが、パスを指定することもできます(body の説明を参照) 。 21-8 body メールの本文のボディ部分をセットします。 送信されるメールの本文は、 (head にセットされた文字列) + (body にセットされた文字列) + (foot にセットされた文字列)になります。 body には、文字を直接指定することもできますが、パスを指定した場合(http://~、https://~、/~ で 始まる文字列)そのページにアクセスし、その結果をセットします。 また、<cms:mail/>を記述しているページが、構造化コンテンツの場合、element.エレメント名を指定 すると、そのエレメントの入力内容を取得します。そして、その入力内容がパスであれば、そのページ にアクセスし、パスでなければ、その文字列をそのまま body にセットします。 108 21-9 foot メールの本文のボディ部分をセットします。 送信されるメールの本文は、 (head にセットされた文字列) + (body にセットされた文字列) + (foot にセットされた文字列)になります。 文字列を直接指定することもできますが、パスを指定することもできます(body の説明を参照) 。 21-10 attach メールに添付する OpenCms 上のファイルのパスをカンマ区切りで指定します。 http://~、https://~、/~ で始まる文字列を指定できます。 21-11 html 送信するメールが HTML メールの場合は、true をセットします。 21-12 wait 大量のメールを連続で送信する場合の、送信間隔を秒単位で指定します。 21-13 file body や subject を指定するときに、element.エレメント名を指定した場合に、データを読み込む構造化 コンテンツのファイルパスを指定します。 指定しない場合は、現在のリクエスト URI のファイルから読み込みます。 21-14 target mode で指定する配信対象を、構造化コンテンツの入力項目で指定させたい場合、target に element.エ レメント名を記述します。ここで指定したエレメントの入力項目は、all、pc、mobile、(メールアドレ ス)が指定できるようなフォームでなければなりません。 21-15 allow メールの送信を許可するドメインをカンマ区切りで指定します。 allow を指定すると、ここに指定したドメイン以外のメールアドレスには送信されなくなります。 指定したドメインは、単純に、メールアドレスの後方一致でチェックされます。 109 21-16 deny メールの送信を拒否するドメインをカンマ区切りで指定します。 deny を指定すると、ここに指定したドメインのメールアドレスには送信されなくなります。 指定したドメインは、単純に、メールアドレスの後方一致でチェックされます。 21-17 default true をセットすると、以下のパラメータに自動的に値がセットされます。 パラメータ 入力値 subject element.Title from element.From head element.Header body element.Body foot element.Footer target element.Target 21-18 mobileDomains mode や target で指定した時に、携帯メールかどうかの判断に使用されるドメインを指定します。 携帯のドメインは、デフォルトでは以下のものが指定されています。 @docomo.ne.jp, ezweb.ne.jp, @softbank.ne.jp, .vodafone.ne.jp, pdx.ne.jp これらは、単純に、メールアドレスの後方一致としてチェックされます。 指定する場合は、カンマ区切りでドメインを列挙します。 21-19 その他の機能 <cms:mail> ~ </cms:mail> の間に body のデータを記述する事ができます。 メールの本文を、直接 JSP に記述する場合などに使用できます。 パスを指定すると、そのページにアクセスし、取得したデータを body にセットします。 110 22 siteroot 『サイトを サイトを一時的に 一時的に切り替える。 える。』 サイトを一時的に切り替えます。 他のサイトのページの情報を取得する場合などに使用します。 ただし、リンクは基本的にはつながらないので、テキストの取得のみに使用するか、取得したリンクを、 http://~の絶対パスにして使用する必要があります。 直接編集ボタンは非表示にして下さい。 また、このタグでサイトを切り替えた場合、必ず、restore で元に戻してください。 22-1 change サイトルートのパスを指定すると、サイトを一時的に切り替えます。 【使用例】 <cms:siteroot change="/sites/site2/" /> <cms:contentload collector="zx.allInFolderDateReleasedDesc" editable="false" param="/news/ | news | 20" > … (省略) … </cms:contentload> <cms:siteroot restore="true" /> 22-2 restore true を指定すると変更したサイトを元に戻します。 【使用例】 <cms:siteroot change="/sites/site2/" /> <cms:contentload collector="zx.allInFolderDateReleasedDesc" editable="false" param="/news/ | news | 20" > … (省略) … </cms:contentload> <cms:siteroot restore="true" /> 111 23 img 『画像の 画像のサムネイルを サムネイルを生成する 生成する。 する。』 画像のサムネイルを作成します。 【使用例】 <cms:img src="/images/logo.gif" width="300" height="60" scaleRendermode="2" /> 23-1 src 画像ファイルのパスを指定します。 23-2 width 画像の幅を指定します。ここで指定した幅のサムネイルが生成されます。 23-3 height 画像の高さを指定します。ここで指定した高さのサムネイルが生成されます。 23-4 scaleType スケーリングの方法を指定します 0~4 の数値を指定してください。 0 デフォルト値です。指定されたサイズに変換します。 ・ 大きなサイズが指定されれば拡大します。 ・ 小さなサイズが指定されれば縮小します。 ・ 画像の縦横の比率を維持します。 ・ 指定されたサイズまで背景色を塗りつぶします。 ・ 縮小される場合、指定されたサイズの内側に画像のサイズを納めます。 1 サムネイルを作成します。0 と同じですが、拡大はしません。 ・ 大きなサイズが指定されても拡大はしません。 ・ 小さなサイズが指定されれば縮小します。 ・ 画像の縦横の比率を維持します。 ・ 指定されたサイズまで、背景色を塗りつぶします。 ・ 縮小される場合、指定されたサイズの内側に画像のサイズを納めます。 112 2 指定されたサイズに変換されますが、あふれた部分は切り捨てられます。 ・ 大きなサイズが指定されれば拡大します。 ・ 小さなサイズが指定されれば縮小します。 ・ 画像の縦横の比率を維持します。 ・ 指定されたサイズの内側に画像のサイズを納めますが、 はみ出せば切り捨てられます。 3 画像の縦横の比率を優先的に維持します。 その為、指定されたサイズは必ずしも守られません。 ・ 大きなサイズが指定されれば拡大します。 ・ 小さなサイズが指定されれば縮小します。 ・ 画像の縦横の比率を維持します。 ・ 水増しも切り捨てもされずにスケーリングされるので、 指定されたサイズは必ずしも守られません。 4 指定されたサイズを厳密に守り、縦横比は維持されません。 ・ 大きなサイズが指定されれば拡大します。 ・ 小さなサイズが指定されれば縮小します。 ・ 画像の縦横の比率を維持されません。 ・ 指定されたサイズを厳密に守りスケーリングされます。 縦横比は必ずしも維持されません。 23-5 scalePosition スケーリングする時の始点を指定します。0~8 の数値を指定してください。 0 中央 (初期値です。 ) 1 左下 2 右下 3 下 4 左 5 右 6 上 7 左上 8 右上 113 23-6 scaleFilter 画像に特殊効果をかける場合はフィルターを指定します。 現在指定できるフィルターは、以下の 3 パターンです。 shadow 影付き grayscale グレイスケール shadow: grayscale 影付きグレイスケール 23-7 scaleQuality 画質の度合いをパーセントで指定します。0 ~ 100 の数値で指定してください。 ただし、この指定が有効な画像フォーマット(例えば JPEG など)にしか有効ではありません。 23-8 scaleColor 背景色を指定します。 #888888 といった RGB による色の指定、または、black などの予約文字で指定します。 透明にしたい場合は、transparent と指定します。 23-9 scaleRendermode レンダリングの方法を指定します。0~2 の数値を指定してください。 0 【画質優先】 画像のクオリティを優先にスケーリングします。 変換には、やや時間がかかります。 初期値ですので、指定しない場合はこのモードになります。 1 【中間】 画像優先とスピード優先の中間的な変換処理を行います。 ただし、実質的には、変換速度が画質優先とほとんど変わらないのでお勧めしません。 2 【スピード優先】 スケーリングの変換速度を優先します。 変換に時間はかかりませんが、画質がやや劣化します。 サムネイルを作成する場合か、画質よりも圧倒的にスピードを優先する場合に使用し てください。 114 23-10 partialTag true を指定すると、タグ開始の <img や、終了の /> を表示しません。 CSS によるスタイルの定義や、onClick などの JavaScript を記述したい場合に使用します。 【使用例】 <img <cms:img src="/images/logo.gif" width="300" partialTag="true" /> onClick="location.href='/'" /> 23-11 alt 画像の代わりに表示される代替文字を指定します。 23-12 align 表示位置を指定します。 right や left を使用するとテキストが画像の周りを回り込んで表示されます。 23-13 border 画像の周りの枠線の太さをピクセルで指定します。 23-14 hspace 画像の周りの横方向の余白をピクセル単位で指定します。 23-15 vspace 画像の周りの縦方向の余白をピクセル単位で指定します。 23-16 id id を指定します。CSS や JavaScript で参照されます。 23-17 longdesc このフレームに対する説明が title 属性で示せないくらい長文の場合に、その説明ページの URL を指 定します。 115 23-18 name 名前を指定します。 23-19 style スタイルシートを指定します。 23-20 title タイトルを指定します。 23-21 usemap クリッカブルマップの名前を指定します。 116 24 jquery 『JQuery を呼び出す。』 OpenCms は JQuery を含んでいます。このタグを記述すると、JQuery の JavaScript を読み込むスク リプトを挿入する事ができます。 24-1 js 他に読み込ませたい JavaScript がある場合は、ここにファイル名を記述します。 /system/workplace/resources/jquery/unpacked/ または、 /system/workplace/resources/jquery/packed/ からの相対パスを記述する事になるので、 JavaScript ファイル自体も、このディレクトリの下に置く事になります。 また、拡張子の指定は不要です。 【使用例】 <!-- /system/workplace/resources/jquery/unpacked/jquery.hint.js が読み込まれます。 --> <cms:jquery js="jquery.hint" /> 24-2 css 他に読み込ませたい CSS がある場合は、ここにファイル名を記述します。 /system/workplace/resources/jquery/css/ からの相対パスを記述する事になるので、 CSS ファイル自体も、このディレクトリの下に置く事になります。 また、拡張子の指定は不要です。 【使用例】 <!-- /system/workplace/resources/jquery/css/pagination.css が読み込まれます。 --> <cms:jquery css="pagination" /> 24-3 dynamic js や css で指定した JavaScript や CSS ファイルを動的に読み込みたい場合は true にします。 動的に読み込むと、ページの読み込みが完了した後、onload()の実行でファイルがロードされるので、 読み込み順序が保障されます。 117 25 param 『パラメータを パラメータを指定する 指定する。 する。』 親となるタグ(param タグを囲んでいるタグ)にパラメータを渡します。 親となれるタグは、<cms:include/>と、<cms:img/>です。 渡す値は key と value のペアです。 【使用例】 <cms:include file="../elements/template-nav-top.jsp"> <cms:param name="__locale"><%= locale %></cms:param> <cms:param name="__navpart" value="toprow" /> </cms:include> 25-1 name パラメータの名前(key)を指定します。 25-2 value パラメータの値(value)を指定します。 118 26 式言語関数 26-1 vfs org.opencms.jsp.util.CmsJspVfsAccessBean クラスのオブジェクトを返します。 このオブジェクトから、リソースの情報へのアクセスができます。 【使用例】 getCmsObject().isAdmin() : ${cms:vfs(pageContext).cmsObject.admin}<br/> getCmsRequestContext().getUri() : ${cms:vfs(pageContext).context.uri}<br/> getExists() : ${cms:vfs(pageContext).exists['/news0309.html']}<br/> getExistsXml() : ${cms:vfs(pageContext).existsXml['/news0309.html']}<br/> getFlushCaches() : ${cms:vfs(pageContext).flushCaches}<br/> getLink() : ${cms:vfs(pageContext).link['/news0309.html']}<br/> getProperty() :${cms:vfs(pageContext).property['/news0309.html']['Title']}<br/> getPropertySearch() : ${cms:vfs(pageContext).propertySearch['/news0309.html']['Title']}<br/> getResource() : ${cms:vfs(pageContext).resource['/news0309.html'].rootPath}<br/> getXml().getValue() : ${cms:vfs(pageContext).xml['/news0309.html'].value['body1']}<br/> 26-2 convertDate UNIX TIME(long 型)の日付データを文字列に置き換えます。渡す値はミリ秒単位の UNIX TIME な ので、通常の UNIX TIME を 1000 倍した数値にする必要があります。1970 年という日付が表示され る場合は、1000 倍にして下さい。 また、JSTL の formatDate を使用すれば、更に日付フォーマットを指定できます。 【使用例】 <fmt:formatDate value="${cms:convertDate(1298301230201)}" pattern="yyyy/MM/dd HH:mm:ss" /> 26-3 getCmsObject CmsObject を取得します。 【使用例】 ${cms:getCmsObject(pageContext).requestContext.uri} 119 26-4 convertLocale 文字列から Locale クラスのオブジェクトを返します。 【使用例】 ${cms:convertLocale("ja_JP").country} 26-5 stripHtml HTML のタグを除去した文字列を取得します。 【使用例】 <% request.setAttribute("html", "<b>Welcome!</b></br/>"); %> ${cms:stripHtml(html)} 26-6 trimToSize 指定した長さまでの文字列を返します。 指定した長さ以上の文字列の場合、文字列の最後に、" …"を付与します。 最後に付与される" …"の長さも含めて、指定した長さに切り詰められます。 全角も 1 文字としてカウントされます。 【使用例】 ${cms:trimToSize("ABCDEFGHIJKLMNOPQRSTUVWXYZ", 10)} 26-7 convertUUID 指定された文字列を、CmsUUID クラスのオブジェクトに変換して返します。 【使用例】 <% request.setAttribute("resource_id", "2c78d3b6-2ead-11df-aaef-fb4a75fb97f6"); %> ${cms:convertUUID(resource_id).nullUUID} 120 27 マクロ変数 マクロ変数一覧 変数一覧 マクロとして使用できる文字の一覧です。 %(param.パラメータ名) GET パラメータで渡された値を取得できます。 %(pageContext.変数名) page スコープに保存されている値を取得できます。 %(attribute.変数名) CmsRequestContext.setAttribute("変数名", "値")でセッ トされている値を取得できます。 %(property.プロパティ名) リソースのプロパティに登録されている値を取得できま す。 %(elementProperty.プロパティ名) JSP テンプレートのプロパティに登録されている値を取 得できます。 %(key.キー名) OpenCms のプロパティファイル(*.property)で定義さ れているメッセージを取得できます。 %(currenttime) 現在時刻を取得します。 %(currentou.description) 現在のユーザーの組織ユニットの説明を取得します。 %(currentou.fqn) 現在のユーザーの組織ユニットを取得します。 %(currentuser.displayname) 現在のユーザーの組織情報まで含んだ氏名を取得しま す。 %(currentuser.firstname) 現在のユーザーの名前を取得します。 %(currentuser.lastname) 現在のユーザーの姓を取得します。 %(currentuser.fullname) 現在のユーザーの氏名(フルネーム)を取得します。 %(currentuser.email) 現在のユーザーのメールアドレスを取得します。 %(currentuser.lastlogin) 現在のユーザーの最終ログイン日時を取得します。 %(currentuser.name) 現在のユーザーのユーザーID を取得します。 %(currentuser.country) 現在のユーザーの国籍を取得します。 %(currentuser.zip) 現在のユーザーの郵便番号を取得します。 %(currentuser.city) 現在のユーザーの住所 1(都道府県+市区町村)を取得し ます。 %(currentuser.street) 現在のユーザーの住所 2(マンション名等)を取得します。 %(projectid) 現在のプロジェクトの ID を取得します。 %(request.encoding) リクエストのエンコードを取得します。 %(request.folder) フォルダまでのリクエスト URI を取得します。 %(request.locale) リクエストのロケールを取得します。 %(request.uri) 現在のページのリクエスト URI を取得します。 121 %(validation.path) ヴァリデーションのパスを取得します。 %(validation.regex) ヴァリデーションの正規表現を取得します。 %(validation.value) ヴァリデーションの値を取得します。 %(opencms.uri) 現在のページのリクエスト URI を取得します。 %(opencms.filename) 現在のページのファイル名を取得します。 %(opencms.folder) フォルダまでのリクエスト URI を取得します。 %(opencms.default.encoding) OpenCms のデフォルトエンコードを取得します。 %(opencms.remoteaddress) リクエストのリモートアドレスを取得します。 %(opencms.webapp) ウェブアプリケーション名を取得します。 %(opencms.webbasepath) ウェブアプリケーションの相対パスを取得します。 %(opencms.version) OpenCms のバージョンを取得します。 122