| 
									
										
										
										
											2004-04-13 11:47:32 +00:00
										 |  |  | <?xml version="1.0" encoding="iso-8859-1"?> | 
					
						
							|  |  |  | <!-- $Revision$ --> | 
					
						
							| 
									
										
										
										
											2004-07-16 14:32:31 +00:00
										 |  |  | <!-- EN-Revision: 1.2 Maintainer: andreas Status: ready --> | 
					
						
							| 
									
										
										
										
											2004-04-13 11:47:32 +00:00
										 |  |  |   <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> | 
					
						
							|  |  |  |     </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> | 
					
						
							| 
									
										
										
										
											2004-07-16 14:32:31 +00:00
										 |  |  | <![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) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     if (isset($content)) { | 
					
						
							|  |  |  |         $lang = $params['lang']; | 
					
						
							|  |  |  | 		// den $content irgendwie intelligent übersetzen | 
					
						
							|  |  |  |         return $translation; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | ?> | 
					
						
							|  |  |  | ]]> | 
					
						
							|  |  |  |      </programlisting> | 
					
						
							| 
									
										
										
										
											2004-04-13 11:47:32 +00:00
										 |  |  |    </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 | 
					
						
							| 
									
										
										
										
											2004-07-16 14:32:31 +00:00
										 |  |  | --> |