diff --git a/docs/ru/designers/language-builtin-functions/language-function-capture.xml b/docs/ru/designers/language-builtin-functions/language-function-capture.xml
index feb6480a..53768d04 100644
--- a/docs/ru/designers/language-builtin-functions/language-function-capture.xml
+++ b/docs/ru/designers/language-builtin-functions/language-function-capture.xml
@@ -1,42 +1,83 @@
-
+
- capture
+ {capture}
- {capture} используется для того, чтобы собрать результат обработки
- части шаблона между тэгами
- в какую-то переменную, вместо того, чтобы вывести результат браузеру.
- Любое содержимое между {capture name='foo'} и {/capture} сохраняется в
- переменную, указанную в атрибуте name.
+ {capture} используется для того, чтобы собрать результат
+ обработки части шаблона между тэгами в какую-то переменную, вместо того,
+ чтобы отобразить результат.
+ Любое содержимое между {capture name='foo'} и
+ {/capture} сохраняется в переменную, указанную в атрибуте
+ name.
Захваченные данные могут в дальнейшем использоваться в
шаблоне при помощи специальной переменной $smarty.capture.foo,
- где "foo" - значение, переданное атрибуту name. Если атрибут name не указан,
- то используется "default".
+ linkend="language.variables.smarty.capture">$smarty.capture.foo,
+ где foo - значение, переданное атрибуту name.
+ Если атрибут name не указан,
+ то используется default, т.е. $smarty.capture.default.
- Команда capture поддерживает вложенность.
+ Функция {capture} поддерживает вложенность.
-
-
+
+
+
+
+
+
+
+
+
+
+ Имя атрибута
+ Тип
+ Обязателен
+ По умолчанию
+ Описание
+
+
+
+
+ name
+ string
+ Нет
+ default
+ Имя блока для сохранения
+
+
+ assign
+ string
+ Нет
+ n/a
+ Имя переменной для сохранения результатов
+
+
+
+
+
+
+ Внимание
- Будте осторожны, сохраняя вывод команды {insert}.
- Если вы используете кэширование
+ Будте осторожны, сохраняя результат команды {insert}.
+ Если вы используете
+ кэширование
и в области кэширования встречаются команды
- insert, то не сохраняйте данный вывод.
+ {insert},
+ то не сохраняйте данный вывод.
-
+
+
- Сохранение вывода шаблона
+ Сохранение вывода шаблона в указанный атрибут
- сохранение содержимого в переменную
+ Сохранение содержимого в переменную
Этот пример также демонстрирует функцию
- {popup}
+ {popup}
-Your ip is {$smarty.server.REMOTE_ADDR}.
+Имя сервера: {$smarty.server.SERVER_NAME|upper}
+Адрес сервера: {$smarty.server.SERVER_ADDR}
+Ваш IP: {$smarty.server.REMOTE_ADDR}.
{/capture}
-help
+help
]]>
См. также
- $smarty.capture,
- {eval},
- {fetch},
- fetch()
- и {assign}.
+ $smarty.capture,
+ {eval},
+ {fetch},
+ fetch()
+ и {assign}.
-
+
{config_load}
- {config_load} используется для загрузки конфигурационных переменных
- (#variable#) из
+ {config_load} используется для загрузки
+ конфигурационных переменных
+ (#variables#) из
конфигурационных файлов в шаблон.
@@ -72,7 +73,9 @@
{config_load}
- example.conf
+
+ Файл example.conf.
+
Конфигурационные файлы
могут также содержать секции. Вы можете загружать
переменные из определенной секции, указав атрибут
- 'section'.
+ section. Имейте в виду, что глобальные
+ конфигурационные переменные всегда загружаются вместе с секционными
+ переменными, которые могут переопределять их.
Секции файлов конфигурации и встроенная
функция
- {section}
+ {section}
не имеют ничего общего, кроме схожего названия.
@@ -149,17 +154,17 @@ pageTitle = "Customer Info"
- См. $config_overwrite
+ См. $config_overwrite
для массивов конфигурационных переменных.
См. также Конфигурационные файлы,
Конфигурационные переменные,
- $config_dir,
- get_config_vars()
+ $config_dir,
+ get_config_vars()
и
- config_load().
+ config_load().
-
+
{foreach},{foreachelse}
- Циклы {foreach} являются альтернативой
- циклам {section}.
- {foreach} используется для прохода по
- единственному ассоциативному массиву.
- Синтаксис
- {foreach} намного проще синтаксиса
- {section}, но с другой стороны
- его можно использовать только для одного массива.
- Каждый тэг {foreach} должен иметь пару
- {/foreach}. Обязательными параметрами являются
- from и item.
- Имя цикла {foreach} может быть любым, состоящим из букв, цифр и знаков
- подчеркивания. Циклы {foreach} могут быть вложенными
- и имена вложенных {foreach} должны быть уникакльными между собой.
- Параметр from (обычно - массив значений)
- определяет количество итераций цикла {foreach}.
- {foreachelse} выполняется в том случае, если
- параметр from не содержит значений.
+ {foreach} используется для работы как с
+ ассоциативным,
+ так и с числовыми массивами, в отличие от функции
+ {section},
+ которая предназначена для работы
+ исключительно с числовыми массивами.
+
+ Синтаксис функции {foreach} намного проще, чем
+ {section},
+ но она может работать только с одним массивом
+ одновременно. Каждый тэг {foreach} должен иметь
+ закрывающую пару {/foreach}.
-
+
@@ -54,45 +47,121 @@
stringДаn/a
- Имя переменной, которая будет выступать в
- качестве значения текущего елемента
+ Имя переменной, которая будет значением текущего елементаkeystringНетn/a
- Имя переменной, которая будет выступать в
- качестве ключа текущего елемента
+ Имя переменной, которая будет ключом текущего елементаnamestringНетn/a
- Название цикла foreach для доступа к его
- свойствам
+ Название цикла foreach для доступа к его свойствам
+
+
+
+
+ Атрибуты from и item
+ являются обязательными.
+
+
+
+
+
+ Параметр name цикла {foreach}
+ может состоять из букв, цифр и знака подчеркивания, как и
+ переменные PHP.
+
+
+
+
+
+ Циклы {foreach} могут быть вложенными при условии, что
+ их имена будут уникальными.
+
+
+
+
+
+ Атрибут from, обычно являющийся массивом,
+ определяет количество проходов цикла {foreach}.
+
+
+
+
+
+ Блок {foreachelse} выполняется в том случае, если
+ в параметре from нет значений.
+
+
+
+
+
+ У циклов {foreach} также есть собственные переменные,
+ которые обрабатывают свойства.
+ Доступ к ним можно получить таким образом:
+
+ {$smarty.foreach.name.property}, где
+ name - атрибут name функции
+ {foreach}.
+
+
+ Обратите внимание
+
+ Атрибут name необходим только в том случае,
+ когда у вас есть необходимость обращаться к свойствам
+ {foreach}, в отличие от функции
+ {section}.
+ Обращение к свойствам {foreach} с неопределенным
+ name не вызывает ошибки, но ведёт к непредсказуемым
+ результатам.
+
+
+
+
+
+
+ {foreach} имеет следующие свойства:
+ index,
+ iteration,
+ first,
+ last,
+ show и
+ total.
+
+
+
- {foreach} - предмет
+ Атрибут item
assign('custid', $arr);
+$arr = array(1000, 1001, 1002);
+$smarty->assign('myArray', $arr);
?>
]]>
+
+ Шаблон для отображения $myArray в виде
+ ненумерованного списка
+
+
+
+]]>
+
+
+
+
+ {foreach} со вложенными item и key
+ В Smarty передан такой массив, ключ которого содержит ключ для каждого перебираемого значения.
+
+assign('contacts', array(
+ array('phone' => '1',
+ 'fax' => '2',
+ 'cell' => '3'),
+ array('phone' => '555-4444',
+ 'fax' => '555-3333',
+ 'cell' => '760-1234')
+ ));
+?>
+]]>
+
+ Шаблон для отображения $contact.
- {foreach key=key item=item from=$contact}
- {$key}: {$item}<br>
- {$key}: {$item}
- {/foreach}
+
+ {foreach key=key item=item from=$contact}
+ {$key}: {$item}
+ {/foreach}
{/foreach}
]]>
@@ -142,93 +287,178 @@ $smarty->assign('contacts', array(
- phone: 1
- fax: 2
- cell: 3
+ phone: 1
+ fax: 2
+ cell: 3
- phone: 555-4444
- fax: 555-3333
- cell: 760-1234
+ phone: 555-4444
+ fax: 555-3333
+ cell: 760-1234
]]>
-
+
- {foreach} - базы данных (к примеру, PEAR или ADODB)
-
+ Пример использования {foreachelse} при работе с базой данных
+
+ Пример работы с базой данных (при помощи PEAR или ADODB) в скрипте поиска,
+ результаты которого передаются в Smarty.
+
+
assign("contacts", $db->getAssoc($sql));
+ $search_condition = "WHERE name LIKE '$foo%' ";
+ $sql = 'SELECT contact_id, name, nick FROM contacts '.$search_condition.' ORDER BY name';
+ $smarty->assign('results', $db->getAssoc($sql) );
?>
]]>
+
+ Шаблон отобразит сообщение Ничего не найдено при помощи
+ {foreachelse} в случае, если поиск не дал результатов.
+
{$con.name} - {$con.nick}
+{foreachelse}
+ Ничего не найдено
{/foreach}
]]>
-
+
-
- Циклы {foreach} также имеют собственные переменные, которые содержат свойства
- {foreach}.
- Они обозначаются так:
- {$smarty.foreach.foreachname.varname}
- {$smarty.foreach.foreachname.varname}, где foreachname - это название цикла
- (значение атрибута name).
-
-
-
- См. {section}
- для примеров следующих свойств, так как они идентичны.
-
+
+ .index
+
+ index contains the current array index, starting with zero.
+
+
+ index example
-
- iteration
-
- iteration используется для отображения текущего номера итерации цикла.
- Итерации всегда начинаются с 1 и увеличиваются на одну при каждом
- прохождении цикла.
-
-
+
+
+{foreach from=$items key=myId item=i name=foo}
+ {if $smarty.foreach.foo.index % 5 == 0}
+
Title
+ {/if}
+
{$i.label}
+{/foreach}
+
+]]>
+
+
+
-
- first
-
- first устанавливается в true, если текущая итерация первая.
-
-
+
+ .iteration
+
+ iteration содержит значение текущей итерации цикла
+ и всегда начинается с единицы, в отличие от
+ index.
+ Это значение увеличивается на единицу с каждой следующей итерацией.
+
+
+ Примеры работы с iteration и index
+
+
+
+
-
- last
-
- last устанавливается в true, если текущая итерация последняя.
-
-
-
-
- show
-
- Атрибут show может принимать логические
- значения (истина или ложь). Если ложь, то цикл foreach не будет
- отображаться. Если присутствует тэг foreachelse, то он будет
- отображен.
-
-
- total
-
- total хранит количество итераций цикла.
- Может быть использовано как в цикле, так и вне его.
-
+
+ .first
+
+ Свойство first равно &true;, если текущая итерация
+ {foreach} - первая.
+
+
+ Пример использования свойства first
+
+
+{foreach from=$items key=myId item=i name=foo}
+
+{/foreach}
+
+]]>
+
+
+
+
+
+ .last
+
+ Свойство last равно &true;, если текущая итерация
+ {foreach} - последняя.
+
+
+ Пример использования свойства last
+
+) в конце списка *}
+{foreach from=$items key=part_id item=prod name=products}
+ {$prod}{if $smarty.foreach.products.last}{else},{/if}
+{foreachelse}
+ ... content ...
+{/foreach}
+]]>
+
+
+
+
+
+ .show
+
+ show используется как параметр для {foreach}.
+ show - это булевое значение.
+ Если оно равно &false;, результат работы {foreach} не будет отображен.
+ Если присутствует директива {foreachelse}, её содержимое
+ будет отображено.
+
+
+
+
+ .total
+
+ total содержит общее количество итераций,
+ которое пройдет данный цикл {foreach}.
+ Его можно использовать во время или после выполнения {foreach}.
+
+
+ Пример использования свойства total
+
+
+{if $smarty.foreach.foo.last}
+
{$smarty.foreach.foo.total} предметов
+{/if}
+{foreachelse}
+ ... что-то другое ...
+{/foreach}
+]]>
+
+
- См. также {section} и
- $smarty.foreach.
+ См. также
+ {section}
+ и
+ $smarty.foreach.