Zend_View-Helpers-HeadStyle.xml 8.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 20794 -->
  3. <!-- Reviewed: no -->
  4. <sect3 id="zend.view.helpers.initial.headstyle">
  5. <title>HeadStyle Helfer</title>
  6. <para>
  7. Das HTML Element <emphasis>&lt;style&gt;</emphasis> wird verwendet um <acronym>CSS</acronym>
  8. Stylesheets im HTML Element <emphasis>&lt;head&gt;</emphasis> zu inkludieren.
  9. </para>
  10. <note>
  11. <title>HeadLink verwenden um CSS Dateien zu verlinken</title>
  12. <para>
  13. <link linkend="zend.view.helpers.initial.headlink">HeadLink</link> sollte verwendet
  14. werden um <emphasis>&lt;link&gt;</emphasis> Elemente zu Erstellen die externe
  15. Stylesheets enthalten. <classname>HeadStyle</classname> wird verwendet wenn man
  16. Stylesheets inline definieren will.
  17. </para>
  18. </note>
  19. <para>
  20. Der <classname>HeadStyle</classname> Helfer unterstützt die folgenden Methoden für das
  21. Setzen und Hinzufügen von Stylesheet Deklarationen:
  22. </para>
  23. <itemizedlist>
  24. <listitem>
  25. <para>
  26. <command>appendStyle($content, $attributes = array())</command>
  27. </para>
  28. </listitem>
  29. <listitem>
  30. <para>
  31. <command>offsetSetStyle($index, $content, $attributes = array())</command>
  32. </para>
  33. </listitem>
  34. <listitem>
  35. <para>
  36. <command>prependStyle($content, $attributes = array())</command>
  37. </para>
  38. </listitem>
  39. <listitem>
  40. <para>
  41. <command>setStyle($content, $attributes = array())</command>
  42. </para>
  43. </listitem>
  44. </itemizedlist>
  45. <para>
  46. In allen Fällen ist <varname>$content</varname> die aktuelle <acronym>CSS</acronym>
  47. Deklaration. <varname>$attributes</varname> sind alle zusätzlichen Attribute die das
  48. <property>style</property> Tag erhalten soll: lang, title, media, oder dir sind alle
  49. möglich.
  50. </para>
  51. <note>
  52. <title>Abhängige Kommentare setzen</title>
  53. <para>
  54. <classname>HeadStyle</classname> erlaubt es ein Script Tag in abhängige Kommentare zu
  55. setzen, das es erlaubt es vor speziellen Browsern zu verstecken. Um abhängige Tags zu
  56. setzen, muß der abhängige Wert als Teil des <varname>$attrs</varname> Parameters im
  57. Methodenaufruf übergeben werden.
  58. </para>
  59. <example id="zend.view.helpers.initial.headstyle.conditional">
  60. <title>Headstyle mit abhängigen Kommentaren</title>
  61. <programlisting language="php"><![CDATA[
  62. // Skripte hinzufügen
  63. $this->headStyle()->appendStyle($styles, array('conditional' => 'lt IE 7'));
  64. ]]></programlisting>
  65. </example>
  66. </note>
  67. <para>
  68. <classname>HeadStyle</classname> erlaubt auch das Erfassen von Style Deklarationen; das kann
  69. nützlich sein wenn eine Deklaration programmtechnisch erstellt werden soll und Sie dann
  70. woanders platziert wird. Die Verwendung hierfür wird in einem unten angeführten Beispiel
  71. gezeigt.
  72. </para>
  73. <para>
  74. Letztendlich kann auch die <methodname>headStyle()</methodname> Methode verwendet werden um
  75. schnellstens Deklarationselemente hinzuzufügen; die Signatur dafür ist
  76. <methodname>headStyle($content$placement = 'APPEND', $attributes = array())</methodname>.
  77. <varname>$placement</varname> sollte entweder 'APPEND', 'PREPEND', oder 'SET' sein.
  78. </para>
  79. <para>
  80. <classname>HeadStyle</classname> überschreibt jedes <methodname>append()</methodname>,
  81. <methodname>offsetSet()</methodname>, <methodname>prepend()</methodname>, und
  82. <methodname>set()</methodname> um die Verwendung der oben gelisteten speziellen Methoden zu
  83. forcieren. Intern wird jeder Teil als <property>stdClass</property> Token gespeichert,
  84. welches später serialisiert wird durch Verwendung der
  85. <methodname>itemToString()</methodname> Methode. Das erlaubt es die Teile im Stack zu
  86. Prüfen, und optional auch zu Ändern durch einfaches Modifizieren des zurückgegebenen
  87. Objektes.
  88. </para>
  89. <para>
  90. Der <classname>HeadStyle</classname> Helfer ist eine konkrete Implementation des
  91. <link linkend="zend.view.helpers.initial.placeholder">Platzhalter Helfers</link>.
  92. </para>
  93. <note>
  94. <title>Standardmäßig wird die UTF-8 Kodierung verwendet</title>
  95. <para>
  96. Standardmäßig verwendet Zend Framework <acronym>UTF-8</acronym> als seine
  97. Standardkodierung, und speziell in diesem Fall, macht das
  98. <classname>Zend_View</classname> genauso. Die Zeichenkodierung kann im View Objekt
  99. selbst auf etwas anderes gesetzt werden indem die Methode
  100. <methodname>setEncoding()</methodname> verwendet wird (oder der Parameter
  101. <varname>encoding</varname> bei der Instanzierung angegeben wird). Trotzdem, da
  102. <classname>Zend_View_Interface</classname> keine Zugriffsmethoden für die Kodierung
  103. anbietet ist es möglich dass, wenn man eine eigene View Implementation verwendet, man
  104. keine <methodname>getEncoding()</methodname> Methode hat, welche der View Helfer intern
  105. für die Erkennung des Zeichensets verwendet in das kodiert werden soll.
  106. </para>
  107. <para>
  108. Wenn man <acronym>UTF-8</acronym> in solch einer Situation nicht verwenden will, muss
  109. man in der eigenen View Implementation eine <methodname>getEncoding()</methodname>
  110. Methode implementieren.
  111. </para>
  112. </note>
  113. <example id="zend.view.helpers.initial.headstyle.basicusage">
  114. <title>Grundsätzliche Verwendung des HeadStyle Helfers</title>
  115. <para>
  116. Ein neues Style Tag kann jederzeit spezifiziert werden:
  117. </para>
  118. <programlisting language="php"><![CDATA[
  119. // Stile hinzufügen
  120. $this->headStyle()->appendStyle($styles);
  121. ]]></programlisting>
  122. <para>
  123. Die Reihenfolge ist in <acronym>CSS</acronym> sehr wichtig; es könnte sein das man
  124. sichergestellen muß das Deklarationen in einer speziellen Reihenfolge geladen werden
  125. wegen der Reihenfolge der Kaskade; die verschiedenen append, prepend und offsetSet
  126. Direktiven können für diesen Zweck verwendet werden:
  127. </para>
  128. <programlisting language="php"><![CDATA[
  129. // Styles in Reihenfolge bringen
  130. // Ein spezielles Offset platzieren:
  131. $this->headStyle()->offsetSetStyle(100, $customStyles);
  132. // Am Ende platzieren:
  133. $this->headStyle()->appendStyle($finalStyles);
  134. // Am Anfang platzieren:
  135. $this->headStyle()->prependStyle($firstStyles);
  136. ]]></programlisting>
  137. <para>
  138. Wenn man damit fertig ist und alle Style Deklarationen im Layout Skript ausgegeben
  139. werden können kann der Helfer einfach wiederholt werden:
  140. </para>
  141. <programlisting language="php"><![CDATA[
  142. <?php echo $this->headStyle() ?>
  143. ]]></programlisting>
  144. </example>
  145. <example id="zend.view.helpers.initial.headstyle.capture">
  146. <title>Den HeadStyle Helfer verwenden um Style Deklarationen zu Erfassen</title>
  147. <para>
  148. Hier und da müssen <acronym>CSS</acronym> Style Deklarationen programmtechnisch erstellt
  149. werden. Wärend String Kopplungen, HereDocs und ähnliches verwendet werden könnte, ist es
  150. oft einfacher das durch erstellen der Styles und deren Einfügung in
  151. <acronym>PHP</acronym> Tags zu machen. <classname>HeadStyle</classname> lässt das zu
  152. indem es in den Stack erfasst wird:
  153. </para>
  154. <programlisting language="php"><![CDATA[
  155. <?php $this->headStyle()->captureStart() ?>
  156. body {
  157. background-color: <?php echo $this->bgColor ?>;
  158. }
  159. <?php $this->headStyle()->captureEnd() ?>
  160. ]]></programlisting>
  161. <para>
  162. Die folgenden Annahmen werden gemacht:
  163. </para>
  164. <itemizedlist>
  165. <listitem>
  166. <para>
  167. Die Style Deklarationen werden dem Stack angefügt. Wenn Sie den Stack ersetzen
  168. sollen oder an den Anfang hinzugefügt werden sollten muß 'SET' oder 'PREPEND'
  169. als erstes Argument an <methodname>captureStart()</methodname> übergeben werden
  170. </para>
  171. </listitem>
  172. <listitem>
  173. <para>
  174. Wenn zusätzliche Attribute für das <emphasis>&lt;style&gt;</emphasis> Tag
  175. spezifiziert werden sollen, dann müssen diese in einem Array als zweites
  176. Argument an <methodname>captureStart()</methodname> übergeben werden.
  177. </para>
  178. </listitem>
  179. </itemizedlist>
  180. </example>
  181. </sect3>