『Selectタイプフィールドに設定(※1)した、結合先テーブル』の、『任意のフィールド(※2)のデータ』を表示することができます。
※1 ・・・ 管理ページで設定します。
※2 ・・・ テンプレートで設定します。
例1)
┌─┬────────┐
│id│products(Select)│「アイテム拡張用」テーブル
├─┼────────┤
│ │
┌─┘ │productsフィールドの設定(管理ページ)で指定
↓結合 ↓
┌─┬──────┬─────┬───────┬───────┬────────┐
│id│pname(Text) │pic(Image)│desc(Textarea)│price(Number) │material(Select)│「商品」テーブル
├─┼──────┼─────┼───────┼───────┼────────┤
といったテーブルとフィールドがある時、
「商品」テーブルの、「pname」フィールドのデータを表示する場合
<%znItemFieldEX(products->pname)%>
「商品」テーブルの、「pic」フィールドの画像を表示する場合
<%znItemFieldEX(products->pic)%>
のような記述になります。
また、複数の"->"で、1つ以上のテーブルとリレーションさせることも可能です。
例2)
上記、例1に加え、更に
─┬────────┐
│material(Select)│「商品」テーブル
─┼────────┤
│ │
┌─┘ │materialフィールドの設定(管理ページ)で指定
↓結合 ↓
┌─┬──────┬───────┐
│id│mname(Text) │desc(Textarea)│「材質」テーブル
├─┼──────┼───────┤
といったテーブルとフィールドがある時、
「商品」テーブルの、「material」フィールドに設定している「材質」テーブルの「mname」フィールドを表示する場合
<%znItemFieldEX(products->material->mname)%>
「商品」テーブルの、「material」フィールドに設定している「材質」テーブルの「desc」フィールドを表示する場合
<%znItemFieldEX(products->material->desc)%>
のような記述になります。
あまり使い道はないかと思いますが、構造上は、複数の"->"でつなげることにより、いくつものテーブルをつなげることが可能です。
もう一度整理すると、
<%znItemFieldEX(products->pic)%>
↑ 『
アイテム拡張用テーブルのproductsフィールドに(管理ページで)設定してある
商品テーブルの、picフィールド』となり、
<%znItemFieldEX(products->material->desc)%>
↑ 『
アイテム拡張用テーブルのproductsフィールドに(管理ページで)設定してある
商品テーブルの、materialフィールドに(管理ページで)設定してある
材質テーブルの、descフィールド』となります。
【リレーションSQLの生成】
テンプレートに記述したリレーション構造(aaa->bbb->ccc)で、動的にSQLを生成しているのですが、アイテムが表示されるたびに動的生成していたのでは、無駄なオーバーヘッドが発生してしまいます。そこで、一度生成したSQLは、キャッシュして使いまわしています。キャッシュは、フィールド編集をした時にクリアされます。