mirror of
https://github.com/smarty-php/smarty.git
synced 2025-10-08 02:01:00 +02:00
105 lines
4.3 KiB
XML
105 lines
4.3 KiB
XML
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
<!-- $Revision$ -->
|
|
<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>
|
|
<?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 übersetzuen
|
|
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
|
|
--> |