mirror of
				https://github.com/smarty-php/smarty.git
				synced 2025-10-30 03:41:36 +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
 | |
| -->
 |