2
0

Zend_View-Helpers-HeadStyle.xml 7.2 KB

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