<?xml version="1.0" encoding="UTF-8"?>
<!-- Reviewed: no -->
<sect3 id="zend.view.helpers.initial.headmeta">
    <title>Помощник HeadMeta</title>

    <para>
        Элемент <code>&lt;meta&gt;</code> используется для добавления
        мета-информации о вашем HTML-документе, обычно это ключевые слова,
        кодировка документа, директивы управления кэшированием и т.д.
        Метатег может быть одного из следующих типов: 'http-equiv' или 'name',
        должен содержать атрибут 'content', также он может иметь атрибуты
        'lang' и 'scheme'.
    </para>

    <para>
        Помощник <code>HeadMeta</code> поддерживает следующие методы для
        установки и добавления метатегов:
    </para>

    <itemizedlist>
        <listitem><para><code>appendName($keyValue, $content,
                    $conditionalName)</code></para></listitem>
        <listitem><para><code>offsetSetName($index, $keyValue, $content,
                    $conditionalName)</code></para></listitem>
        <listitem><para><code>prependName($keyValue, $content,
                    $conditionalName)</code></para></listitem>
        <listitem><para><code>setName($keyValue, $content,
                    $modifiers)</code></para></listitem>
        <listitem><para><code>appendHttpEquiv($keyValue, $content,
                    $conditionalHttpEquiv)</code></para></listitem>
        <listitem><para><code>offsetSetHttpEquiv($index, $keyValue, $content,
                    $conditionalHttpEquiv)</code></para></listitem>
        <listitem><para><code>prependHttpEquiv($keyValue, $content,
                    $conditionalHttpEquiv)</code></para></listitem>
        <listitem><para><code>setHttpEquiv($keyValue, $content,
                    $modifiers)</code></para></listitem>
    </itemizedlist>

    <para>
        Параметр <code>$keyValue</code> используется для установки значения
        атрибута 'name' или 'http-equiv'; <code>$content</code> является
        значением атрибута 'content', а <code>$modifiers</code> - необязательный
        параметр, который может быть ассоциативным массивом с ключами 'lang'
        и/или 'scheme'.
    </para>

    <para>
        Вы можете также устанавливать метатеги, используя метод
        <code>headMeta()</code>, который имеет следующую сигнатуру:
        <code>headMeta($content,
            $keyValue, $keyType = 'name', $modifiers = array(), $placement =
            'APPEND')</code>. Через <code>$keyValue</code> передается содержимое
        ключа, указанного в <code>$keyType</code> (ключом может быть 'name' или
        'http-equiv'). <code>$placement</code> может иметь одно из следующих
        значений: 'SET' (замена всех ранее сохраненных значений), 'APPEND'
        (добавление в конец стека) или 'PREPEND' (добавление в начало стека).
    </para>

    <para>
        <code>HeadMeta</code> перегружает методы <code>append()</code>,
        <code>offsetSet()</code>, <code>prepend()</code> и <code>set()</code>
        с целью принудительного использования специальных методов, перечисленных
        выше. Внутри себя помощник сохраняет каждый элемент в виде маркера
        <code>stdClass</code>, который затем преобразовывается в строку через
        метод <code>itemToString()</code>. Это позволяет производить проверку
        элементов в стеке и при необходимости модифицировать их, просто
        извлекая объект и изменяя его.
    </para>

    <para>
        Помощник <code>HeadMeta</code> является частной реализацией 
        <link linkend="zend.view.helpers.initial.placeholder">помощника
            Placeholder</link>.
    </para>

    <example id="zend.view.helpers.initial.headmeta.basicusage">
        <title>Использование помощника HeadMeta</title>

        <para>
            Вы можете указывать новые метатеги в любой момент времени. Обычно
            это правила кэширования для клиентской стороны и ключевые слова для
            поисковой оптимизации.
        </para>

        <para>
            Например, если вы хотите указать ключевые слова для поисковой
            оптимизации, то вам нужно создать метатег с именем 'keywords'
            и ключевыми словами для вашей страницы:
        </para>

        <programlisting role="php"><![CDATA[
// установка мета-ключевых слов
$this->headMeta()->appendName('keywords', 'framework php productivity');
]]></programlisting>

        <para>
            Если требуется установить правила кэширования для
            клиентской стороны, то вы можете установить теги http-equiv
            с требуемыми правилами кэширования:
        </para>

        <programlisting role="php"><![CDATA[
// отключает кэширование на клиентской стороне
$this->headMeta()->appendHttpEquiv('expires',
                                   'Wed, 26 Feb 1997 08:21:57 GMT')
                 ->appendHttpEquiv('pragma', 'no-cache')
                 ->appendHttpEquiv('Cache-Control', 'no-cache');
]]></programlisting>

        <para>
            Другие распространенные случаи использования - установка типа
            содержимого, кодировки и языка документа:
        </para>

        <programlisting role="php"><![CDATA[
// установка типа содержимого и кодировки
$this->headMeta()->appendHttpEquiv('Content-Type',
                                   'text/html; charset=UTF-8')
                 ->appendHttpEquiv('Content-Language', 'en-US');
]]></programlisting>

        <para>
            И последний пример - мета-обновление как простой способ отображения
            промежуточного сообщения до перенаправления:
        </para>

        <programlisting role="php"><![CDATA[
// установка мета-обновления через 3 секунды с новым URL:
$this->headMeta()->appendHttpEquiv('Refresh',
                                   '3;URL=http://www.some.org/some.html');
]]></programlisting>

        <para>
            Когда все будет готово для помещения тегов в макет, просто
            "выводите" помощника:
        </para>

        <programlisting role="php"><![CDATA[
<?php echo $this->headMeta() ?>
]]></programlisting>
    </example>
</sect3>
<!--
vim:se ts=4 sw=4 et:
-->
