スポンサード リンク
◆お気に入り・ブックマーク登録>>
順繰りに値を変化させたいときに便利な関数です
Smarty|Cycle関数
Cycle関数|値を順繰りに指定する
[2006-01-21 (土) 16:37]
テーブル内のセルの色を交互に2色またはそれ以上の色に変更したり、配列の値を順番に表示するような事が簡単にできます。
基本構文
<{cycle name values print advance delimiter assign}>
【属性(引数)】
| 属性名 | 型 | 必須 | デフォルト | 概要 |
|---|---|---|---|---|
| values | mixed | Yes | N/A | カンマを境界としたリスト(delimiter属性を参照) 又は値の配列のどちらかによって循環される値 |
| name | string | No | default | cycleの名前 |
| boolean | No | TRUE | 値を表示するかどうか | |
| advance | boolean | No | TRUE | 次の値に進むかどうか |
| delimiter | string | No | , | values属性で使用するためのデリミタ |
| assign | string | No | n/a | 出力が割り当てられるテンプレート変数 |
「values」以外の属性は何の役にも立ちませんねえ。いろいろ試してみたんですが,便利な使い方は見つかりませんでした。「print=false」は有効でしたが,falseにするんならCycle関数使う意味ないですし。
実例集
【実例1:テーブルの自動作成】
練習用ファイル=WeBLOGのテンプレート「weblog_entries.html」
いくつあるか分からないデータを3列に格納していきます。Excelに例えれば,1行目の3列目に値が入ると自動的に2行目に移動する,って感じですね。
<table><tr>
<{foreach item="entry" from=$entries}>
<td>
<{$entry.title}>
<{cycle values="<td>,<td>,</td></tr><tr>"}>
<{/foreach}>
</tr></table>
【実例2:1行置きにクラス(class)を変える】
練習用ファイル=WeBLOGのテンプレート「weblog_entries.html」
クラス指定を順繰りに変化させます
<{foreach item="entry" from=$entries}>
<p class=<{cycle values="red,blue,green,black"}>><{$entry.title}></p>
<{/foreach}>
【失敗する例】
練習用ファイル=WeBLOGのテンプレート「weblog_entries.html」
実例1と2を見ると,下記のようなことができそうな気になりますが,これは失敗します。
<table><tr>
<{foreach item="entry" from=$entries}>
<td class=<{cycle values="red,blue,green,black"}>>
<{$entry.title}>
<{cycle values="<td>,<td>,</td></tr><tr>"}>
<{/foreach}>
</tr></table>
開始タグの最初の値と閉じタグの最初の値が対になって出てくれればいいんですが……。残念ながらそううまくはいきませんでした。
でも,テーブルを作っていて,行にスタイルを指定することはできるんですが,列に対してはひとつ一つのセルにclassかstyle指定しなければなりませんよね。第1列目のフォントサイズは全部20pxなんて指定,一度ではできません。だからこの関数で何とかならないかなあ,と期待したんですが。淡い夢でした。
◆お気に入り・ブックマーク登録>>
|
Smarty|IF関数 |
Smarty |
Smarty|Foreach関数 |
コメント
choromo
投稿日時 2008-12-24 10:48
ありがとうございます。
実際にコードを書いてどんなことができるようになるのかをやってみたいのですが,(やれるとしても,間違いなく)来年になります。
最近,xoops,Smartyに触れることがほとんどありません。どんどん忘れていくばかりです。
実際にコードを書いてどんなことができるようになるのかをやってみたいのですが,(やれるとしても,間違いなく)来年になります。
最近,xoops,Smartyに触れることがほとんどありません。どんどん忘れていくばかりです。
jk
投稿日時 2008-12-24 10:24
>「values」以外の属性は何の役にも立ちませんねえ。いろいろ試してみたんですが,便利な使い方は見つかりませんでした。
name属性は使うと思うよ。
{cycle name="aa" valules="a,b,c,d,e,f"}
{cycle name="aa"}
{cycle name="aa"}
{cycle name="aa"}
{cycle name="aa"}
{cycle name="aa"}
>「print=false」は有効でしたが,falseにするんならCycle関数使う意味ないですし。
同様に print=false も上と組み合わせることで便利だと思う。
name属性は使うと思うよ。
{cycle name="aa" valules="a,b,c,d,e,f"}
{cycle name="aa"}
{cycle name="aa"}
{cycle name="aa"}
{cycle name="aa"}
{cycle name="aa"}
>「print=false」は有効でしたが,falseにするんならCycle関数使う意味ないですし。
同様に print=false も上と組み合わせることで便利だと思う。
choromo
投稿日時 2008-11-4 9:55
貴重なご提案をいただいているのですが,現在,超多忙につき,コードを書いて実証することができません。
1月くらいは,手をつけられないと思います。
どなたか,うまくいったら,教えて下さい。
1月くらいは,手をつけられないと思います。
どなたか,うまくいったら,教えて下さい。
ゲスト
投稿日時 2008-10-29 15:54
>【失敗する例】
name属性に違う名前を設定すればいけるのでは・・・?
name属性に違う名前を設定すればいけるのでは・・・?





