ホームOHPAxBeansログイン  
HOME >  「xoops技術報告書」トップ  >  Smarty・php  >  Smarty  >  Smarty|Cycle関数

スポンサード リンク

   ◆お気に入り・ブックマーク登録>>

順繰りに値を変化させたいときに便利な関数です

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の名前
print 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関数
  • Smarty|regex_replace修正子 (2007-9-10)
    正規表現による置換ができるんですが,日本語に対してはいろいろ問題があります。もっともテンプレートで日本語の正規表現を必要とする場面は余りないと思いますが。 Smarty
  • Smarty|replace修正子 (2007-9-10)
    変数に対して正規表現を用いないシンプルな置換を行います。つまり「〜らしい」でなく,ズバリ「これ」だけを置き換えるんです。 Smarty|replace関数 [20
  • Smarty|php関数 (2007-9-10)
    テンプレートにphpスクリプトを書くことができるようになります。 Smarty|php関数 基本構文 <{php}> phpスクリプト記
  • Smarty|math関数 (2007-9-8)
    Smartyで数式処理ができます。最大・最小・丸め処理なども可能です。 math関数|四則演算から三角関数まで 方程式を使える? と思っていいかもしれませんね。で
  • Smarty|string_format修正子 (2007-9-8)
    基本的には,数字の書式設定をする修正子です。 Smarty|string_format修正子 [2006-03-01 (水) 19:57] 修正子の名前に「
  • Smarty|date_format修正子 (2007-9-8)
    日付と時刻の書式を設定する修正子です。 Smarty|date_format修正子 日付と時間をstrftime()のフォーマットに基づいて整形します。
  • Smarty|strip_tags修正子 (2007-9-8)
    HTMLマークアップタグなどを取り除きます。 Smarty|strip_tags修正子 基本的に、 によって囲まれたマークアップタグを取り除きます。
コメント

題名
ゲスト名   :
投稿本文
より詳細なコメント入力フォームへ
choromo  投稿日時 2008-12-24 10:48
ありがとうございます。
実際にコードを書いてどんなことができるようになるのかをやってみたいのですが,(やれるとしても,間違いなく)来年になります。
最近,xoops,Smartyに触れることがほとんどありません。どんどん忘れていくばかりです。
jk   投稿日時 2008-12-24 10:24
>「values」以外の属性は何の役にも立ちませんねえ。いろいろ試してみたんですが,便利な使い方は見つかりませんでした。
name属性は使うと思うよ。
{cycle name=&quot;aa&quot; valules=&quot;a,b,c,d,e,f&quot;}
{cycle name=&quot;aa&quot;}
{cycle name=&quot;aa&quot;}
{cycle name=&quot;aa&quot;}
{cycle name=&quot;aa&quot;}
{cycle name=&quot;aa&quot;}

>「print=false」は有効でしたが,falseにするんならCycle関数使う意味ないですし。

同様に print=false も上と組み合わせることで便利だと思う。
choromo  投稿日時 2008-11-4 9:55
貴重なご提案をいただいているのですが,現在,超多忙につき,コードを書いて実証することができません。
1月くらいは,手をつけられないと思います。
どなたか,うまくいったら,教えて下さい。
ゲスト   投稿日時 2008-10-29 15:54
&gt;【失敗する例】
name属性に違う名前を設定すればいけるのでは・・・?
RSSフィード(tautech)