| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- Reviewed: no -->
- <sect3 id="zend.view.helpers.initial.headstyle">
- <title>HeadStyle Helfer</title>
- <para>
- Das <acronym>HTML</acronym> Element <emphasis><style></emphasis> wird verwendet um
- <acronym>CSS</acronym> Stylesheets im <acronym>HTML</acronym> Element
- <emphasis><head></emphasis> zu inkludieren.
- </para>
- <note>
- <title>HeadLink verwenden um CSS Dateien zu verlinken</title>
- <para>
- <link linkend="zend.view.helpers.initial.headlink">HeadLink</link> sollte verwendet
- werden um <emphasis><link></emphasis> Elemente zu Erstellen die externe
- Stylesheets enthalten. <classname>HeadStyle</classname> wird verwendet wenn man
- Stylesheets inline definieren will.
- </para>
- </note>
- <para>
- Der <classname>HeadStyle</classname> Helfer unterstützt die folgenden Methoden für das
- Setzen und Hinzufügen von Stylesheet Deklarationen:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- <command>appendStyle($content, $attributes = array())</command>
- </para>
- </listitem>
- <listitem>
- <para>
- <command>offsetSetStyle($index, $content, $attributes = array())</command>
- </para>
- </listitem>
- <listitem>
- <para>
- <command>prependStyle($content, $attributes = array())</command>
- </para>
- </listitem>
- <listitem>
- <para>
- <command>setStyle($content, $attributes = array())</command>
- </para>
- </listitem>
- </itemizedlist>
- <para>
- In allen Fällen ist <varname>$content</varname> die aktuelle <acronym>CSS</acronym>
- Deklaration. <varname>$attributes</varname> sind alle zusätzlichen Attribute die das
- <property>style</property> Tag erhalten soll: lang, title, media, oder dir sind alle
- möglich.
- </para>
- <note>
- <title>Abhängige Kommentare setzen</title>
- <para>
- <classname>HeadStyle</classname> erlaubt es ein Script Tag in abhängige Kommentare zu
- setzen, das es erlaubt es vor speziellen Browsern zu verstecken. Um abhängige Tags zu
- setzen, muß der abhängige Wert als Teil des <varname>$attrs</varname> Parameters im
- Methodenaufruf übergeben werden.
- </para>
- <example id="zend.view.helpers.initial.headstyle.conditional">
- <title>Headstyle mit abhängigen Kommentaren</title>
- <programlisting language="php"><![CDATA[
- // Skripte hinzufügen
- $this->headStyle()->appendStyle($styles, array('conditional' => 'lt IE 7'));
- ]]></programlisting>
- </example>
- </note>
- <para>
- <classname>HeadStyle</classname> erlaubt auch das Erfassen von Style Deklarationen; das kann
- nützlich sein wenn eine Deklaration programmtechnisch erstellt werden soll und Sie dann
- woanders platziert wird. Die Verwendung hierfür wird in einem unten angeführten Beispiel
- gezeigt.
- </para>
- <para>
- Letztendlich kann auch die <methodname>headStyle()</methodname> Methode verwendet werden um
- schnellstens Deklarationselemente hinzuzufügen; die Signatur dafür ist
- <methodname>headStyle($content$placement = 'APPEND', $attributes = array())</methodname>.
- <varname>$placement</varname> sollte entweder 'APPEND', 'PREPEND', oder 'SET' sein.
- </para>
- <para>
- <classname>HeadStyle</classname> überschreibt jedes <methodname>append()</methodname>,
- <methodname>offsetSet()</methodname>, <methodname>prepend()</methodname>, und
- <methodname>set()</methodname> um die Verwendung der oben gelisteten speziellen Methoden zu
- forcieren. Intern wird jeder Teil als <property>stdClass</property> Token gespeichert,
- welches später serialisiert wird durch Verwendung der
- <methodname>itemToString()</methodname> Methode. Das erlaubt es die Teile im Stack zu
- Prüfen, und optional auch zu Ändern durch einfaches Modifizieren des zurückgegebenen
- Objektes.
- </para>
- <para>
- Der <classname>HeadStyle</classname> Helfer ist eine konkrete Implementation des
- <link linkend="zend.view.helpers.initial.placeholder">Platzhalter Helfers</link>.
- </para>
- <note>
- <title>Standardmäßig wird die UTF-8 Kodierung verwendet</title>
- <para>
- Standardmäßig verwendet Zend Framework <acronym>UTF-8</acronym> als seine
- Standardkodierung, und speziell in diesem Fall, macht das
- <classname>Zend_View</classname> genauso. Die Zeichenkodierung kann im View Objekt
- selbst auf etwas anderes gesetzt werden indem die Methode
- <methodname>setEncoding()</methodname> verwendet wird (oder der Parameter
- <varname>encoding</varname> bei der Instanzierung angegeben wird). Trotzdem, da
- <classname>Zend_View_Interface</classname> keine Zugriffsmethoden für die Kodierung
- anbietet ist es möglich dass, wenn man eine eigene View Implementation verwendet, man
- keine <methodname>getEncoding()</methodname> Methode hat, welche der View Helfer intern
- für die Erkennung des Zeichensets verwendet in das kodiert werden soll.
- </para>
- <para>
- Wenn man <acronym>UTF-8</acronym> in solch einer Situation nicht verwenden will, muss
- man in der eigenen View Implementation eine <methodname>getEncoding()</methodname>
- Methode implementieren.
- </para>
- </note>
- <example id="zend.view.helpers.initial.headstyle.basicusage">
- <title>Grundsätzliche Verwendung des HeadStyle Helfers</title>
- <para>
- Ein neues Style Tag kann jederzeit spezifiziert werden:
- </para>
- <programlisting language="php"><![CDATA[
- // Stile hinzufügen
- $this->headStyle()->appendStyle($styles);
- ]]></programlisting>
- <para>
- Die Reihenfolge ist in <acronym>CSS</acronym> sehr wichtig; es könnte sein das man
- sichergestellen muß das Deklarationen in einer speziellen Reihenfolge geladen werden
- wegen der Reihenfolge der Kaskade; die verschiedenen append, prepend und offsetSet
- Direktiven können für diesen Zweck verwendet werden:
- </para>
- <programlisting language="php"><![CDATA[
- // Styles in Reihenfolge bringen
- // Ein spezielles Offset platzieren:
- $this->headStyle()->offsetSetStyle(100, $customStyles);
- // Am Ende platzieren:
- $this->headStyle()->appendStyle($finalStyles);
- // Am Anfang platzieren:
- $this->headStyle()->prependStyle($firstStyles);
- ]]></programlisting>
- <para>
- Wenn man damit fertig ist und alle Style Deklarationen im Layout Skript ausgegeben
- werden können kann der Helfer einfach wiederholt werden:
- </para>
- <programlisting language="php"><![CDATA[
- <?php echo $this->headStyle() ?>
- ]]></programlisting>
- </example>
- <example id="zend.view.helpers.initial.headstyle.capture">
- <title>Den HeadStyle Helfer verwenden um Style Deklarationen zu Erfassen</title>
- <para>
- Hier und da müssen <acronym>CSS</acronym> Style Deklarationen programmtechnisch erstellt
- werden. Wärend String Kopplungen, HereDocs und ähnliches verwendet werden könnte, ist es
- oft einfacher das durch erstellen der Styles und deren Einfügung in
- <acronym>PHP</acronym> Tags zu machen. <classname>HeadStyle</classname> lässt das zu
- indem es in den Stack erfasst wird:
- </para>
- <programlisting language="php"><![CDATA[
- <?php $this->headStyle()->captureStart() ?>
- body {
- background-color: <?php echo $this->bgColor ?>;
- }
- <?php $this->headStyle()->captureEnd() ?>
- ]]></programlisting>
- <para>
- Die folgenden Annahmen werden gemacht:
- </para>
- <itemizedlist>
- <listitem>
- <para>
- Die Style Deklarationen werden dem Stack angefügt. Wenn Sie den Stack ersetzen
- sollen oder an den Anfang hinzugefügt werden sollten muß 'SET' oder 'PREPEND'
- als erstes Argument an <methodname>captureStart()</methodname> übergeben werden
- </para>
- </listitem>
- <listitem>
- <para>
- Wenn zusätzliche Attribute für das <emphasis><style></emphasis> Tag
- spezifiziert werden sollen, dann müssen diese in einem Array als zweites
- Argument an <methodname>captureStart()</methodname> übergeben werden.
- </para>
- </listitem>
- </itemizedlist>
- </example>
- </sect3>
|