Files
smarty/docs/it/programmers/plugins/plugins-block-functions.xml

119 lines
4.5 KiB
XML

<?xml version="1.0" encoding="iso-8859-1"?>
<!-- $Revision$ -->
<sect1 id="plugins.block.functions"><title>Funzioni sui blocchi</title>
<funcsynopsis>
<funcprototype>
<funcdef>void <function>smarty_block_<replaceable>name</replaceable></function></funcdef>
<paramdef>array <parameter>$params</parameter></paramdef>
<paramdef>mixed <parameter>$content</parameter></paramdef>
<paramdef>object <parameter>&amp;$smarty</parameter></paramdef>
<paramdef>boolean <parameter>&amp;$repeat</parameter></paramdef>
</funcprototype>
</funcsynopsis>
<para>
Le funzioni sui blocchi sono funzioni che appaiono nel template nella
forma: {func} .. {/func}. In altre parole, racchiudono un blocco del
template e lavorano sul contenuto di questo blocco. Le funzioni di blocco
hanno la precedenza sulle funzioni personalizzate con lo stesso nome,
il che significa che non potete avere una funzione personalizzata {func}
ed allo stesso tempo una funzione di blocco {func} .. {/func}.
</para>
<para>
Per default la funzione di implementazione viene chiamata due volte
da Smarty: una per il tag di apertura, e una per il tag di chiusura
(guardate sotto <literal>&amp;$repeat</literal> per capire come
modificare questo comportamento).
</para>
<para>
Solo il tag di apertura della funzione di blocco può avere attributi.
Tutti gli attributi passati dal template alle funzioni relative sono
contenuti in <parameter>$params</parameter> nella forma di array
associativo. Potete accedere a questi valori, ad esempio, con
<varname>$params['start']</varname>. Gli attributi del tag di apertura
sono accessibili alla funzione anche in fase di elaborazione del tag
di chiusura.
</para>
<para>
Il valore di <parameter>$content</parameter> dipende se la funzione
viene chiamata per il tag di apertura o per quello di chiusura. Nel
caso del tag di apertura, sarà <literal>null</literal>, mentre nel
caso del tag di chiusura sarà il contenuto del blocco di template.
Notate che il blocco sarà già stato elaborato da Smarty, quindi ciò
che riceverete sarà l'output del template, non il sorgente.
</para>
<para>
Il parametro <parameter>&amp;$repeat</parameter> è passato alla
funzione per riferimento e le fornisce la possibilità di controllare
quante volte il blocco viene visualizzato. Per default
<parameter>$repeat</parameter> è <literal>true</literal> alla prima
chiamata della funzione (al tag di apertura), e <literal>false</literal>
per tutte le chiamate successive (al tag di chiusura).
Ogni volta che la funzione termina con il valore di
<parameter>&amp;$repeat</parameter> a true, il contenuto compreso
fra {func} e {/func} viene valorizzato e la funzione viene chiamata
di nuovo con il nuovo contenuto del blocco nel parametro
<parameter>$content</parameter>.
</para>
<para>
Se avete funzioni di blocco nidificate, potete scoprire qual è il
blocco genitore attraverso la variabile
<varname>$smarty->_tag_stack</varname>. Fate un var_dump() su
questa variabile e la struttura dovrebbe apparirvi evidente.
</para>
<para>
Vedere anche:
<link linkend="api.register.block">register_block()</link>,
<link linkend="api.unregister.block">unregister_block()</link>.
</para>
<example>
<title>funzione di blocco</title>
<programlisting role="php">
<![CDATA[
<?php
/*
* Smarty plugin
* -------------------------------------------------------------
* File: block.translate.php
* Type: block
* Name: translate
* Purpose: translate a block of text
* -------------------------------------------------------------
*/
function smarty_block_translate($params, $content, &$smarty, &$repeat)
{
if (isset($content)) {
$lang = $params['lang'];
// fate qui una traduzione intelligente di $content
return $translation;
}
}
?>
]]>
</programlisting>
</example>
</sect1>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"../../../../manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->