XOOPS Brasil

 

section,sectionelse

Nome do atributo Tipo Obrigatório Padrão Descrição
name string Sim n/d O nome da seção
loop [$variable_name] Sim n/d O nome da variável para determinar o número de interações
start integer Não 0 A posição do índice que a seção vai começar. Se o valor é negativo, a posição de inicio é calculada a partir do final da matriz. Por exemplo, se houverem sete valores na matriz e 'start' for -2, o índice inicial é 5. Valores inválidos (valores fora do tamanho da matriz) são automaticamente corrigidos para o valor válido mais próximo.
step integer Não 1 O valor do passo que será usado para percorrer a matriz. Por exemplo, step=2 irá percorrer os índices 0,2,4, etc. Se step for negativo, ele irá caminhar pela matriz de trás para frente.
max integer Não 1 Define o número máximo de loops para a section.
show boolean Não true Determina quando mostrar ou não esta section

Os 'sections' de template são usados para percorrer os dados de uma matriz. Todas as tags section devem ser finalizadas com /section. Os parâmetros obrigatórios são name e loop. O nome da 'section' pode ser o que você quiser, contendo letras, números e sublinhados. As 'sections' podem ser aninhadas, e os nomes das sections devem ser únicos. A variável 'loop' (normalmente uma matriz de valores) determina o número de vezes que a section será percorrida. Quando estiver exibindo uma variável dentro de uma section, o nome da section deve estar ao lado da variável dentro de conchetes []. sectionelse é executado quando não houver valores na variável 'loop'.

Example 7.15. section


{* este exemplo irá mostrar todos os valores da matriz $custid *}
{section name=consumidor loop=$custid}
	id: {$custid[consumidor]}<br>
{/section}

MOSTRA:


id: 1000<br>
id: 1001<br>
id: 1002<br>


Example 7.16. loop de variável section


{* a variável 'loop' somente determina o número de vezes que irá percorrer a matriz. 
   Você pode acessar qualquer variável do template dentro da section. 
   Este exemplo assume que $custid, $nome e $endereco são todas 
   matrizes contendo o mesmo número de valores *}

{section name=consumidor loop=$custid}
	id: {$custid[consumidor]}<br>
	nome: {$nome[consumidor]}<br>
	endereço: {$endereco[customer]}<br>
	<p>
{/section}

MOSTRA:


id: 1000<br>
nome: John Smith<br>
endereço: 253 N 45th<br>
<p>
id: 1001<br>
nome: Jack Jones<br>
endereço: 417 Mulberry ln<br>
<p>
id: 1002<br>
nome: Jane Munson<br>
endereço: 5605 apple st<br>
<p>


Example 7.17. Nomes de section


{* o nome da seção pode ser o que você qusier, 
   e é usado para referenciar os dados contido na seção *}

{section name=meusdados loop=$custid}
	id: {$custid[meusdados]}<br>
	nome: {$nome[meusdados]}<br>
	endereço: {$endereco[meusdados]}<br>
	<p>
{/section}


Example 7.18. sections aninhadas


{* sections podem ser aninhadas até o nível que você quiser. Com sections aninhadas, 
   você pode acessar complexas estruturas de dados, tais como matrizes multi-dimensionais. 
   Neste exemplo, $contact_type[customer] é uma matriz contendo os tipos de contatos 
   do consumidor atualmente selecionado. *}

{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}

MOSTRA:


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>


Example 7.19. sections e matrizes associativas


{* Este é um exemplo de exibição de uma matriz associativa 
   dentro de uma seção *}

{section name=consumidor loop=$contatos}
	nome: {$contatos[consumidor].nome}<br>
	telefone: {$contatos[consumidor].telefone}<br>
	celular: {$contatos[consumidor].celular}<br>
	e-mail: {$contatos[consumidor].email}<p>
{/section}

MOSTRA:


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>


Example 7.20. sectionelse


{* sectionelse irá executar se não houverem mais valores em $custid *}

{section name=consumidor loop=$custid}
	id: {$custid[consumidor]}<br>
{sectionelse}
	não há valores em $custid.
{/section}


Sections também tem as suas próprias variáveis que manipulam as propriedades da section. Estas são indicadas assim: {$smarty.section.nomesection.nomevariavel}

Nota

A partir do Smarty 1.5.0, a sintaxe para as variáveis de propriedades da section mudou de {%nomesecao.nomevariavel%} para {$smarty.section.nomesection.nomevariavel}. A sintaxe antiga ainda é suportada, mas você verá referências somente à nova sintaxe no manual.

index

index é usado para mostrar o índice atual do loop, começando em zero (ou pelo atributo start caso tenha sido definido), e incrementado por um (ou pelo atributo step caso tenha sido definido).

Nota Técnica:

Se as propriedades 'start' e 'step' da section não foram modificadas, elas irão funcionar da mesma maneira que a propriedade 'interation' da section funcionam, exceto que ela começa do 0 ao invés de 1.

Example 7.21. propriedade index da section


{section name=consumidor loop=$custid}
	{$smarty.section.consumidor.index} id: {$custid[consumidor]}<br>
{/section}

MOSTRA:


0 id: 1000<br>
1 id: 1001<br>
2 id: 1002<br>


index_prev

index_prev é usado para mostrar o índice anterior do loop. No primeiro loop, o valor dele é -1.

Example 7.22. propriedade index_prev da section


{section name=consumidor loop=$custid}
	{$smarty.section.consumidor.index} id: {$custid[consumidor]}<br>
	{* Para sua informação, $custid[consumidor.index] e $custid[consumidor] tem o mesmo significado *}
	{if $custid[consumidor.index_prev] ne $custid[consumidor.index]}
		O id do consumidor irá mudar<br>
	{/if}
{/section}

MOSTRA:


0 id: 1000<br>
   	O id do consumidor irá mudar<br>
1 id: 1001<br>
   	O id do consumidor irá mudar<br>
2 id: 1002<br>
   	O id do consumidor irá mudar<br>


index_next

index_next é usado para mostrar o próximo indice do loop. No último loop, isto ainda é um mais o índice atual( respeitando a definição do atributo step, caso tenha sido definido.)

Example 7.23. propriedade index_next section


{section name=consumidor loop=$custid}
	{$smarty.section.consumidor.index} id: {$custid[consumidor]}<br>
	{* Para sua informação, $custid[consumidor.index] e $custid[consumidor] tem o mesmo significado *}
	{if $custid[consumidor.index_next] ne $custid[consumidor.index]}
    	O id do consumidor irá mudar<br>
	{/if}
{/section}

MOSTRA:


0 id: 1000<br>
   	O id do consumidor irá mudar<br>
1 id: 1001<br>
   	O id do consumidor irá mudar<br>
2 id: 1002<br>
   	O id do consumidor irá mudar<br>


iteration

iteration é usado para mostrar a interação atual do loop.

Nota:

'interation' não é afetado pelas propriedades start, step e max da section, diferentemente da propriedade index. Interation diferente de 'index' começa com 1 ao invés de 0. 'rownum' é um sinônimo de 'interation', eles exercem a mesma função.

Example 7.24. propriedade interation da section


{section name=consumidor loop=$custid start=5 step=2}
	interação atual do loop: {$smarty.section.consumidor.iteration}<br>
	{$smarty.section.consumidor.index} id: {$custid[consumidor]}<br>
	{* Para sua informação, $custid[consumidor.index] e $custid[consumidor] tem o mesmo significado *}
	{if $custid[consumidor.index_next] ne $custid[consumidor.index]}
    	O id do consumidor irá mudar<br>
	{/if}
{/section}

MOSTRA:


interação atual do loop: 1
5 id: 1000<br>
   	O id do consumidor irá mudar<br>
interação atual do loop: 2
7 id: 1001<br>
   	O id do consumidor irá mudar<br>
interação atual do loop: 3
9 id: 1002<br>
   	O id do consumidor irá mudar<br>


first

first é definido como true se a interação atual da section é a primeira.

Example 7.25. propriedade first da section


{section name=consumidor loop=$custid}
	{if $smarty.section.consumidor.first}
    	<table>
	{/if}

	<tr><td>{$smarty.section.consumidor.index} id: {$custid[consumidor]}</td></tr>

	{if $smarty.section.consumidor.last}
    	</table>
	{/if}
{/section}

MOSTRA:


<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 é definido como true se a interação atual da section é a última.

Example 7.26. propriedade last da section


{section name=consumidor loop=$custid}
	{if $smarty.section.consumidor.first}
    	<table>
	{/if}

	<tr><td>{$smarty.section.consumidor.index} id: {$custid[consumidor]}</td></tr>

	{if $smarty.section.consumidor.last}
    	</table>
	{/if}
{/section}

MOSTRA:


<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 é usado para mostrar a interação atual do loop, começando em um. É um sinônimo de iteration, eles exercem a mesma função.

Example 7.27. propriedade rownum da section


{section name=consumidor loop=$custid}
	{$smarty.section.consumidor.rownum} id: {$custid[consumidor]}<br>
{/section}

MOSTRA:


1 id: 1000<br>
2 id: 1001<br>
3 id: 1002<br>


loop

loop é usado para exibir o número do último índice que a section percorreu. Ele pode ser usado dentro ou após o término da section.

Example 7.28. propridade index da section


{section name=consumidor loop=$custid}
	{$smarty.section.consumidor.index} id: {$custid[consumidor]}<br>
{/section}

	Foram mostrados {$smarty.section.customer.loop} consumidores acima.

MOSTRA:


0 id: 1000<br>
1 id: 1001<br>
2 id: 1002<br>

Foram mostrados 3 consumidores acima.


show

show é usado como um parâmetro da section. show é um valor booleano, verdadeiro ou falso. Caso seja falso, a section não será mostrada. Se existir uma sectionelse presente, ela será exibida.

Example 7.29. atributo show da section


{* $mostrar_info_consumidor talvez tenha que ser enviada pela 
   aplicação PHP, para decidir quando mostrar ou não mostrar esta section *}

{section name=consumidor loop=$custid show=$mostrar_info_consumidor}
	{$smarty.section.consumidor.rownum} id: {$custid[consumidor]}<br>
{/section}

{if $smarty.section.consumidor.show}
	a section foi mostrada.
{else}
	a section não foi mostrada.
{/if}

MOSTRA:


1 id: 1000<br>
2 id: 1001<br>
3 id: 1002<br>

a section foi mostrada.


total

total é usado para exibir o número de interações que esta section irá percorrer. Ela pode ser usada dentro ou após a section.

Example 7.30. propriedade total da section


{section name=consumidor loop=$custid step=2}	
	{$smarty.section.consumidor.index} id: {$custid[consumidor]}<br>
{/section}

	Foram mostrados {$smarty.section.customer.loop} consumidores acima.

MOSTRA:


0 id: 1000<br>
2 id: 1001<br>
4 id: 1002<br>

Foram mostrados 3 consumidores acima.