関数索引
searchText() 関数は全ページを対象に、指定された文字列を検索します。検索の結果として、一致する文字列を含むページのリストを返します。返されるリストの要素は Page オブジェクトです。
検索対象は、文字列系の要素(1行テキスト、複数行テキスト、WYSIWYGエディタ)に入力された文字列です。テンプレートに記述された展開やメソッド中の文字列は検索対象にはなりません。また、展開の結果、使われずに、最終的に公開サーバにアップロードされるコンテンツに含まれることのない要素に入力されている文字列も検索の対象となります。
この関数を公開テンプレートまたはページデータテンプレートの展開やメソッドから呼び出した場合、公開テンプレートまたはページデータテンプレートで作成されたページのみ検索対象となります。非公開テンプレートで作成されたページは検索結果には含まれないことに注意してください。この関数を非公開テンプレートの展開またはメソッドから呼び出した場合、すべてのタイプのテンプレートで作成されたページが検索対象となります。
検索対象は全ページです。特定のページまたはページ群に対してのみの検索はできません。
本関数はあまり性能がよくありません。多用するとコンテンツ生成時間が長くなってしまいますので利用範囲を限定して利用してください。
regexp という1行文字列の要素に入力されたパターンを含むページの一覧を作成してみましょう。
Preview 専用ページとして、このようなページを作成しておくことで、保有しているコンテンツに対する検索を実行することができます。
<body>
<wr-variable name="count" value="0" />
<wr-for list="searchText(regexp)" variable="aPage">
<wr-if condition="pageID(aPage) != pageID(thisPage())">
<a href="%aPage%" target="_blank">%pageTitle(aPage)%</a><br />
<wr-variable name="count" value="count + 1" />
</wr-if>
</wr-for>
該当するページは %count% ページでした。<br />
</body>
searchText() の結果に自分自身が含まれてしまう場合があるので、それを除外しています。Page オブジェクト同士を直接 == や != 演算子で比較することができないため pageID() 関数で pageID を取得して、それを比較することで、検索結果から自分自身を除外しています。
isPageData() メソッドの利用例も参考にしてください。