{section},{sectionelse} {section} adalah untuk mengulang melalui array data, tidak seperti {foreach} yang dipakai untuk mengulang melalui satu array asosiatif. Setiap {section} tag harus dipasangkan dengan penutup{/section} tag. Nama Atribut Tipe Diperlukan Default Deskripsi name string Ya n/a Nama seksi loop mixed Ya n/a Nilai untuk menentukan sumber iterasi pengulangan start integer Tidak 0 Posisi indeks di mana seksi akan diulang. Jika nilai negatif, awal posisi dihitung dari akhir array. Sebagai contoh, jika ada tujuh nilai dalam pengulangan array dan awalnya adalah -2, indeks awal adalah 5. Nilai yang tidak benar (nilai di luar panjang pengulangan array) otomatis dipotong ke nilai terdekat yang benar. step integer Tidak 1 Nilai step akan dipakai untuk melewati pengulangan array. Sebagai contoh, step=2 akan berulang pada indeks 0,2,4, dst. Jika step negatif, ia akan mundur kembali melewati array. max integer Tidak n/a Menyetel angka maksimum berapa kali seksi akan mengulang. show boolean Tidak &true; Menentukan apakan menampilkan seksi ini atau tidak Atribut yang diperlukan adalah name dan loop. name dari {section} bisa berupa apapun yang anda suka, terdiri dari huruf, angka dan garis bawah, seperti variabel PHP. {section} dapat diulang, dan nama {section} yang diulang harus unik dari yang lainnya. Atribut loop, biasanya sebuah array nilai, menentukan jumlah berapa kali {section} akan mengulang. Anda juga dapat mengirimkan integer sebagai nilai pengulangan. Ketika mencetak variabel di dalam {section}, {section} name harus diberikan di sebelah nama variabel dalam [kurung kotak]. {sectionelse} dijalankan saat tidak ada lagi nilai dalam variabel loop. {section} juga memiliki variabelnya sendiri yang menangani properti {section}. Properti ini dapat diakses sebagai: {$smarty.section.name.property} di mana name adalah atribut name. properti {section} adalah index, index_prev, index_next, iteration, first, last, rownum, loop, show, total. Mengulang array sederhana dengan {section} assign() array ke Smarty assign('custid',$data); ?> ]]> Template yang menampilkan array {/section}
{* mengeluarkan semua nilai array $custid secara terbalik *} {section name=foo loop=$custid step=-1} {$custid[foo]}
{/section} ]]>
Contoh di atas akan menampilkan: id: 1001
id: 1002

id: 1002
id: 1001
id: 1000
]]>
{section} tanpa array yang ditempati {section name=bar loop=21 max=6 step=-2} {$smarty.section.bar.index} {/section} ]]> Contoh di atas akan menampilkan: 20 18 16 14 12 10 ]]> Penamaan {section} name dari {section} bisa apa saja sesuai yang anda inginkan, lihat variabel PHP. Ini dipakai untuk mereferensi data di dalam {section}. Pengulangan array asosiatif dengan {section} Ini adalah contoh pencetakan array data asosiatif dengan {section}. Berikut adalah naskah php untuk menempatkan array $contacts ke Smarty. 'John Smith', 'home' => '555-555-5555', 'cell' => '666-555-5555', 'email' => 'john@myexample.com'), array('name' => 'Jack Jones', 'home' => '777-555-5555', 'cell' => '888-555-5555', 'email' => 'jack@myexample.com'), array('name' => 'Jane Munson', 'home' => '000-555-5555', 'cell' => '123456', 'email' => 'jane@myexample.com') ); $smarty->assign('contacts',$data); ?> ]]> Template untuk menampilkan $contacts name: {$contacts[customer].name}
home: {$contacts[customer].home}
cell: {$contacts[customer].cell}
e-mail: {$contacts[customer].email}

{/section} ]]>
Contoh di atas akan menampilkan: name: John Smith
home: 555-555-5555
cell: 666-555-5555
e-mail: john@myexample.com

name: Jack Jones
home phone: 777-555-5555
cell phone: 888-555-5555
e-mail: jack@myexample.com

name: Jane Munson
home phone: 000-555-5555
cell phone: 123456
e-mail: jane@myexample.com

]]>
{section} mendemonstrasikan variabel <varname>loop</varname> Contoh ini mengasumsikan bahwa $custid, $name dan $address adalah semua array yang berisi jumlah nilai yang sama. Pertama naskah php menempatkan array ke Smarty. assign('custid',$id); $fullnames = array('John Smith','Jack Jones','Jane Munson'); $smarty->assign('name',$fullnames); $addr = array('253 Abbey road', '417 Mulberry ln', '5605 apple st'); $smarty->assign('address',$addr); ?> ]]> Variabel loop hanya menentukan jumlah berapa kali untuk mengulang. Anda dapat mengakses variabel MANAPUN dari template di dalam {section} id: {$custid[customer]}
name: {$name[customer]}
address: {$address[customer]}

{/section} ]]>
Contoh di atas akan menampilkan: id: 1000
name: John Smith
address: 253 Abbey road

id: 1001
name: Jack Jones
address: 417 Mulberry ln

id: 1002
name: Jane Munson
address: 5605 apple st

]]>
{section} yang berulang {section} dapat diulang sedalam yang anda suka. Dengan {section} yang diulang, anda bisa mengakses struktur data yang kompleks, seperti array multi dimensi. Ini adalah contoh naskah .php yang menempatkan array. assign('custid',$id); $fullnames = array('John Smith','Jack Jones','Jane Munson'); $smarty->assign('name',$fullnames); $addr = array('253 N 45th', '417 Mulberry ln', '5605 apple st'); $smarty->assign('address',$addr); $types = array( array( 'home phone', 'cell phone', 'e-mail'), array( 'home phone', 'web'), array( 'cell phone') ); $smarty->assign('contact_type', $types); $info = array( array('555-555-5555', '666-555-5555', 'john@myexample.com'), array( '123-456-4', 'www.example.com'), array( '0457878') ); $smarty->assign('contact_info', $info); ?> ]]> Dalam contoh ini, $contact_type[customer] adalah sebuah array tipe kontak untuk kustomer saat ini. id: {$custid[customer]}
name: {$name[customer]}
address: {$address[customer]}
{section name=contact loop=$contact_type[customer]} {$contact_type[customer][contact]}: {$contact_info[customer][contact]}
{/section} {/section} ]]>
Contoh di atas akan menampilkan: id: 1000
name: John Smith
address: 253 N 45th
home phone: 555-555-5555
cell phone: 666-555-5555
e-mail: john@myexample.com

id: 1001
name: Jack Jones
address: 417 Mulberry ln
home phone: 123-456-4
web: www.example.com

id: 1002
name: Jane Munson
address: 5605 apple st
cell phone: 0457878
]]>
Contoh database dengan {sectionelse} Hasil pencarian database (misal ADODB atau PEAR) ditempatkan ke Smarty assign('contacts', $db->getAll($sql)); ?> ]]> Template yang menampilkan hasil database dalam tabel HTML  Name>HomeCellEmail {section name=co loop=$contacts} view {$contacts[co].name} {$contacts[co].home} {$contacts[co].cell} {$contacts[co].email} {sectionelse} Tidak ada item yang ditemukan {/section} ]]> .index index berisi indeks array saat ini, dimulai dengan nol atau atribut start bila diberikan. Ia bertambah satu atau dengan atribut step bila diberikan. Catatan Teknis Jika properti step dan start tidak diubah, maka pekerjaan ini sama seperti properti iteration, kecuali ia dimulai dengan nol daripada satu. {section} <varname>index</varname> property FYI $custid[customer.index] dan $custid[customer] adalah sama. {/section} ]]> Contoh di atas akan menampilkan: 1 id: 1001
2 id: 1002
]]>
.index_prev index_prev adalah indeks pengulangan sebelumnya. Pada pengulangan pertama, ini disetel -1. .index_next index_next adalah indeks pengulangan berikutnya. Pada pengulangan terakhir, ini masih satu lagi daripada indeks saat ini, memperhatikan setelan atribut step, jika diberikan. properti <varname>index</varname>, <varname>index_next</varname> dan <varname>index_prev</varname> assign('rows',$data); ?> ]]> Template untuk menampilkan array di atas dalam sebuah tabel indexid index_prevprev_id index_nextnext_id {section name=row loop=$rows} {$smarty.section.row.index}{$rows[row]} {$smarty.section.row.index_prev}{$rows[row.index_prev]} {$smarty.section.row.index_next}{$rows[row.index_next]} {/section} ]]> Contoh di atas akan menampilkan tabel yang berisi sebagai berikut: .iteration iteration berisi iterasi pengulangan saat ini dan dimulai dari satu. Ini tidak dipengaruhi oleh properti {section} start, step dan max, tidak seperti properti index. iteration juga dimulai dengan satu daripada nol tidak seperti index. rownum adalah alias untuk iteration, keduanya sama. Properti <varname>iteration</varname> dari seksi assign('arr',$id); ?> ]]> Template untuk menampilkan setiap elemen lain array $arr dengan step=2 {/section} ]]> Contoh di atas akan menampilkan: iteration=2 index=7 id=3007
iteration=3 index=9 id=3009
iteration=4 index=11 id=3011
iteration=5 index=13 id=3013
iteration=6 index=15 id=3015
]]>
Contoh lain yang menggunakan properti iteration untuk mengeluarkan blok header tabel setiap lima baris. Menggunakan fungsi {if} dengan operator mod. {section name=co loop=$contacts} {if $smarty.section.co.iteration % 5 == 1}  Name>HomeCellEmail {/if}
view {$contacts[co].name} {$contacts[co].home} {$contacts[co].cell} {$contacts[co].email} {/section} ]]> .first first disetel &true; jika iterasi {section} saat ini adalah yang pertama. .last last disetel &true; jika iterasi seksi saat ini adalah yang terakhir. properti {section} <varname>first</varname> dan <varname>last</varname> Contoh ini mengulang array $customers, mengeluarkan blok header pada iterasi pertama dan terakhir mengeluarkan blok footer. Juga menggunakan properti total. idkustomer {/if} {$customers[customer].id}} {$customers[customer].name} {if $smarty.section.customer.last} {$smarty.section.customer.total} kustomer {/if} {/section} ]]> .rownum rownum berisi iterasi pengulangan saat ini, dimulai dengan satu. Ini adalah nama lain dari iterasi, cara kerjanya sama persis. .loop loop berisi angka indeks terakhir yang mengulang {section}. Ini bisa dipakai di dalam atau setelah {section}. properti {section} <varname>loop</varname> {/section} Ada {$smarty.section.customer.loop} kustomer yang ditampilkan di atas. ]]> Contoh di atas akan menampilkan: 1 id: 1001
2 id: 1002
Ada 3 kustomer yang ditampilkan di atas. ]]>
.show show dipakai sebagai parameter ke seksi dan berupa nilai boolean. Jika &false;, seksi tidak akan ditampilkan. Jika terdapat {sectionelse}, akan ditampilkan sebagai alternatif. <varname>show</varname> properti Boolean $show_customer_info sudah dikirimkan dari aplikasi PHP, untuk mengatur apakah seksi ditampilkan atau tidak. {/section} {if $smarty.section.customer.show} seksi ditampilkan. {else} seksi tidak ditampilkan. {/if} ]]> Contoh di atas akan menampilkan: 2 id: 1001
3 id: 1002
the section was shown. ]]>
.total total berisi jumlah iterasi yang akan {section} mengulangnya. Ini bisa dipakai di dalam atau setelah {section}. <varname>total</varname> contoh properti {/section} Ada {$smarty.section.customer.total} kustomer yang ditampilkan di atas. ]]> Lihat juga {foreach} dan $smarty.section.