section,sectionelse Nombre del Atributo Tipo Requerido Default Descripción name string Si n/a El nombre de la section loop [$variable_name] Si n/a El nombre de la variable para determinar el número de iteracciones start integer No 0 La posición del índice de la section donde va a comenzar. Si el valor es negativo, la posición del inicio se calculara a partir del final de la matriz. Por ejemplo, si hubieran 7 valores en la matriz y comienza por -2, el índice inicial es 5. Valores inválidos (valores fuera del tamaño de la matriz) son automáticamente truncados para el valor valido mas próximo. step integer No 1 El valor del step que sera usado para el loop de la matriz. Por ejemplo, step=2 realizara el loop con los índices 0,2,4, etc. Si step es negativo, este avanzara en la matriz de atras para adelante. max integer No n/a Defíne el número máximo de ciclos(loops) para la section. show boolean No true Determina cuando mostrar o no esta sección Las section del template son usada para realizar un ciclo(loop) de un arreglo de datos. Todas las etiquetas section deben tener su par /section. Los parámetros requeridos son name y loop. El nombre de la section puede ser el que usted quiera, formado por letras, números y subrayados. Las sections pueden ser anidadas, y los nombres de la section anidadas deben ser diferentes unos de otros. Las variables del loop (normalmente una matriz de valores) determina el número de veces del loop de la section. Cuando estuviera mostrando una variable dentro de una section, el nombre de la section debe estar al lado de la variable dentro de corchetes []. sectionelse es ejecutado cuando no hubiera valores para la variable del loop(ciclo). section {* este ejemplo muestra todos los valores del arreglo $custid *} {section name=customer loop=$custid} id: {$custid[customer]}<br> {/section} SALIDA: id: 1000<br> id: 1001<br> id: 1002<br> loop(ciclo) de la variable section {* la variable del loop solo determina el número de veces del ciclo. Usted puede accesar a cualquier variable del template dentro de la section. Este ejemplo asume que $custid, $name y $address son todas matrizes conteniendo el mismo número de valores *} {section name=customer loop=$custid} id: {$custid[customer]}<br> name: {$name[customer]}<br> address: {$address[customer]}<br> <p> {/section} SALIDA: id: 1000<br> name: John Smith<br> address: 253 N 45th<br> <p> id: 1001<br> name: Jack Jones<br> address: 417 Mulberry ln<br> <p> id: 1002<br> name: Jane Munson<br> address: 5605 apple st<br> <p> Nombres de section {* El nombre de la section puede ser el que usted quiera, y es usado para referenciar los datos dentro de una section *} {section name=mydata loop=$custid} id: {$custid[mydata]}<br> name: {$name[mydata]}<br> address: {$address[mydata]}<br> <p> {/section} sections anidadas {* Las sections pueden ser anidados tan profundamente como usted quiera. Con las sections anidadas, usted puede accesar a estructuras complejas, como una matriz multi-dimensional. En este ejemplo, $contact_type[customer] es una matriz de tipos de contacto para el cliente actual. *} {section name=customer loop=$custid} id: {$custid[customer]}<br> name: {$name[customer]}<br> address: {$address[customer]}<br> {section name=contact loop=$contact_type[customer]} {$contact_type[customer][contact]}: {$contact_info[customer][contact]}<br> {/section} <p> {/section} SALIDA: id: 1000<br> name: John Smith<br> address: 253 N 45th<br> home phone: 555-555-5555<br> cell phone: 555-555-5555<br> e-mail: john@mydomain.com<br> <p> id: 1001<br> name: Jack Jones<br> address: 417 Mulberry ln<br> home phone: 555-555-5555<br> cell phone: 555-555-5555<br> e-mail: jack@mydomain.com<br> <p> id: 1002<br> name: Jane Munson<br> address: 5605 apple st<br> home phone: 555-555-5555<br> cell phone: 555-555-5555<br> e-mail: jane@mydomain.com<br> <p> sections y matrices asociativas {* Este es un ejemplo que muestra los datos de una matriz asociativa dentro de una section *} {section name=customer loop=$contacts} name: {$contacts[customer].name}<br> home: {$contacts[customer].home}<br> cell: {$contacts[customer].cell}<br> e-mail: {$contacts[customer].email}<p> {/section} SALIDA: name: John Smith<br> home: 555-555-5555<br> cell: 555-555-5555<br> e-mail: john@mydomain.com<p> name: Jack Jones<br> home phone: 555-555-5555<br> cell phone: 555-555-5555<br> e-mail: jack@mydomain.com<p> name: Jane Munson<br> home phone: 555-555-5555<br> cell phone: 555-555-5555<br> e-mail: jane@mydomain.com<p> sectionelse {* sectionelse se ejecutara si no hubieran valores en $custid *} {section name=customer loop=$custid} id: {$custid[customer]}<br> {sectionelse} there are no values in $custid. {/section} Las sections también tiene sus propias variables que manipulan las propiedades de section. Estas son indicadas asi: {$smarty.section.sectionname.varname} NOTA: a partir de Smarty 1.5.0, la sintaxis de las variables de las propiedades de section ha sido cambiadas de {%sectionname.varname%} a {$smarty.section.sectionname.varname}. La sintaxis antigua es aun soportada, pero usted puede ver la referencia de la sintaxis nueva en los ejemplos del manual. index index es usado para mostrar el índice actual del cliclo(loop), comenzando en cero (o comienza con el atributo dado), e incrementando por uno (o por un atributo de paso dado). Nota Tecnica Si las propiedades de paso y comienzo del section son modificadas, entonces estas funcionan igual a las propiedades de iteration de la section, exepto que comienzan en 0 en vez de 1. section propiedades del index {section name=customer loop=$custid} {$smarty.section.customer.index} id: {$custid[customer]}<br> {/section} SALIDA: 0 id: 1000<br> 1 id: 1001<br> 2 id: 1002<br> index_prev El index_prev es usado para mostrar el índice anterior del loop(ciclo). del primer loop(ciclo) esto es definido como -1. section propiedades del index_prev {section name=customer loop=$custid} {$smarty.section.customer.index} id: {$custid[customer]}<br> {* FYI, $custid[customer.index] and $custid[customer] are identical in meaning *} {if $custid[customer.index_prev] ne $custid[customer.index]} The customer id changed<br> {/if} {/section} SALIDA: 0 id: 1000<br> The customer id changed<br> 1 id: 1001<br> The customer id changed<br> 2 id: 1002<br> The customer id changed<br> index_next El index_next es usado para mostrar el próximo indice del loop. del último loop, esto es uno mas que el índice actual( respetando la definición del atributo step que se a dado.) section propiedades del index_next {section name=customer loop=$custid} {$smarty.section.customer.index} id: {$custid[customer]}<br> {* FYI, $custid[customer.index] and $custid[customer] are identical in meaning *} {if $custid[customer.index_next] ne $custid[customer.index]} The customer id will change<br> {/if} {/section} SALIDA: 0 id: 1000<br> The customer id will change<br> 1 id: 1001<br> The customer id will change<br> 2 id: 1002<br> The customer id will change<br> iteration iteration es usado para mostrar la iteración actual del loop(ciclo). Esto no es afectado por las propiedades del section start, step y max, distinto de las propriedades del index. Iteration también comineza con 1 en vez de 0 como index. rownum es un alias de iteration, estas funcionan de manera identica. section propiedades de iteration {section name=customer loop=$custid start=5 step=2} current loop iteration: {$smarty.section.customer.iteration}<br> {$smarty.section.customer.index} id: {$custid[customer]}<br> {* FYI, $custid[customer.index] and $custid[customer] are identical in meaning *} {if $custid[customer.index_next] ne $custid[customer.index]} The customer id will change<br> {/if} {/section} SALIDA: current loop iteration: 1 5 id: 1000<br> The customer id will change<br> current loop iteration: 2 7 id: 1001<br> The customer id will change<br> current loop iteration: 3 9 id: 1002<br> The customer id will change<br> first first es definido como true se la iteración actual de la section es la primera. section propiedades de first {section name=customer loop=$custid} {if $smarty.section.customer.first} <table> {/if} <tr><td>{$smarty.section.customer.index} id: {$custid[customer]}</td></tr> {if $smarty.section.customer.last} </table> {/if} {/section} SALIDA: <table> <tr><td>0 id: 1000</td></tr> <tr><td>1 id: 1001</td></tr> <tr><td>2 id: 1002</td></tr> </table> last last es definido como true si la iteración actual del section es la ultima. section propiedades de last {section name=customer loop=$custid} {if $smarty.section.customer.first} <table> {/if} <tr><td>{$smarty.section.customer.index} id: {$custid[customer]}</td></tr> {if $smarty.section.customer.last} </table> {/if} {/section} SALIDA: <table> <tr><td>0 id: 1000</td></tr> <tr><td>1 id: 1001</td></tr> <tr><td>2 id: 1002</td></tr> </table> rownum rownum es usado para mostrar la interación actual del loop(ciclo), comenzando con 1. Es un alias para iteration, estas funcionan de modo identico. section propiedades de rownum {section name=customer loop=$custid} {$smarty.section.customer.rownum} id: {$custid[customer]}<br> {/section} SALIDA: 1 id: 1000<br> 2 id: 1001<br> 3 id: 1002<br> loop loop es usado para mostrar el ultimo número del índice del loop(ciclo) de esta section. Esto puede ser usado dentro o fuera del section. section propiedades de index {section name=customer loop=$custid} {$smarty.section.customer.index} id: {$custid[customer]}<br> {/section} There were {$smarty.section.customer.loop} customers shown above. SALIDA: 0 id: 1000<br> 1 id: 1001<br> 2 id: 1002<br> There were 3 customers shown above. show showEs usado como parámetro para section. show Es un valor booleano, true o false. Si es false, la section no será mostrada. Si existiera un sectionelse presente, este será alternativamente mostrado. section atributos de show {* $show_customer_info debe ser pasado de la aplicacion PHP, para regular cuando mostrar o no esta section shows*} {section name=customer loop=$custid show=$show_customer_info} {$smarty.section.customer.rownum} id: {$custid[customer]}<br> {/section} {if $smarty.section.customer.show} the section was shown. {else} the section was not shown. {/if} SALIDA: 1 id: 1000<br> 2 id: 1001<br> 3 id: 1002<br> the section was shown. total total es usado para mostrar el número de iteraciones que está section tendra. Este puede ser usado dentro o fuera del section. section propiedades de total {section name=customer loop=$custid step=2} {$smarty.section.customer.index} id: {$custid[customer]}<br> {/section} There were {$smarty.section.customer.total} customers shown above. SALIDA: 0 id: 1000<br> 2 id: 1001<br> 4 id: 1002<br> There were 3 customers shown above.