mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-11-04 06:11:37 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			111 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			XML
		
	
	
	
	
	
<?xml version="1.0" encoding="iso-8859-1"?>
 | 
						|
<!-- $Revision$ -->
 | 
						|
<!-- EN-Revision: 1.3 Maintainer: andreas Status: ready -->
 | 
						|
  <sect1 id="plugins.block.functions"><title>Block-Funktionen</title>
 | 
						|
   <funcsynopsis>
 | 
						|
    <funcprototype>
 | 
						|
     <funcdef>void <function>smarty_function_<replaceable>name</replaceable></function></funcdef>
 | 
						|
     <paramdef>array <parameter>$params</parameter></paramdef>
 | 
						|
     <paramdef>mixed <parameter>$content</parameter></paramdef>
 | 
						|
     <paramdef>object <parameter>&$smarty</parameter></paramdef>
 | 
						|
     <paramdef>boolean <parameter>&$repeat</parameter></paramdef>
 | 
						|
    </funcprototype>
 | 
						|
   </funcsynopsis>
 | 
						|
   <para>
 | 
						|
    Block-Funktionen sind Funktionen, die in der Form {func} .. {/func} notiert
 | 
						|
    werden. Mit anderen Worten umschliessen sie einen Template-Abschnitt und
 | 
						|
    arbeiten danach auf dessen Inhalt. Eine Block-Funktion {func} .. {/func} 
 | 
						|
    kann nicht mir einer gleichnamigen Template-Funktion {func}
 | 
						|
    überschrieben werden.
 | 
						|
   </para>
 | 
						|
   <para>
 | 
						|
    Ihre Funktions-Implementation wird von Smarty zweimal
 | 
						|
    aufgerufen: einmal für das öffnende und einmal
 | 
						|
    für das schliessende Tag. (konsultieren Sie den Abschnitt zu <literal>&$repeat</literal>
 | 
						|
    um zu erfahren wie Sie dies ändern können.)
 | 
						|
   </para>
 | 
						|
   <para>
 | 
						|
    Nur das Öffnungs-Tag kann Attribute enthalten. Alle so übergebenen Attribute
 | 
						|
    werden als assoziatives Array <parameter>$params</parameter> der Template-Funktion
 | 
						|
    übergeben. Sie können auf die Werte entweder direkt mit <varname>$params['start']</varname>
 | 
						|
    zugreifen oder sie mit <varname>extract($params)</varname> in die Symbol-Tabelle
 | 
						|
    importieren. Die Attribute aus dem Öffnungs-Tag stehen auch beim Aufruf für das
 | 
						|
    schliessende Tag zur Verfügung.
 | 
						|
   </para>
 | 
						|
   <para>
 | 
						|
    Der Inhalt der <parameter>$content</parameter> Variable hängt davon
 | 
						|
    ab, ob die Funktion für das öffnende Tag oder für das schliessende
 | 
						|
    Tag aufgerufen wird. Für das öffnende Tag ist der Wert <literal>null</literal>,
 | 
						|
    für das schliessende Tag ist es der Inhalt des Template-Abschnitts.
 | 
						|
    Achtung: Der Template-Abschnitt den Sie erhalten, wurde bereits von
 | 
						|
    Smarty bearbeitet. Sie erhalten also die Template-Ausgabe, nicht den Template-Quelltext.
 | 
						|
   </para>
 | 
						|
   <para>
 | 
						|
    Der Parameter <parameter>&$repeat</parameter> wird als Referenz übergeben und
 | 
						|
    kontrolliert wie oft ein Block dargestellt werden soll. Standardwert von <parameter>$repeat</parameter>
 | 
						|
    ist beim ersten Aufruf (für das öffnende Tag) <literal>true</literal>, danach immer
 | 
						|
    <literal>false</literal>.
 | 
						|
    Jedes Mal wenn eine Funktion für <parameter>&$repeat</parameter> TRUE zurück gibt,
 | 
						|
    wird der Inhalt zwischen {func} .. {/func} erneut mit dem veränderten
 | 
						|
    Inhalt als <parameter>$content</parameter> Parameter aufgerufen.
 | 
						|
   </para>
 | 
						|
   <para>
 | 
						|
    Wenn Sie verschachtelte Block-Funktionen haben, können Sie 
 | 
						|
    die Eltern-Block-Funktion mit der <varname>$smarty->_tag_stack</varname> Variable 
 | 
						|
    herausfinden. Lassen Sie sich ihren Inhalt mit 'var_dump()' ausgeben.
 | 
						|
    Die Struktur sollte selbsterklärend sein.
 | 
						|
   </para>
 | 
						|
   <para>
 | 
						|
    
 | 
						|
    Sehen Sie dazu:
 | 
						|
    <link linkend="api.register.block">register_block()</link>,
 | 
						|
    <link linkend="api.unregister.block">unregister_block()</link>.
 | 
						|
   </para>
 | 
						|
   <example>
 | 
						|
    <title>Block-Funktionen</title>
 | 
						|
    <programlisting>
 | 
						|
<![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'];
 | 
						|
		// den $content irgendwie intelligent übersetzen
 | 
						|
        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
 | 
						|
-->
 |