From a0ce00f80559f64a3b1572fa7474730603aaf9ea Mon Sep 17 00:00:00 2001 From: freespace Date: Mon, 21 Aug 2006 09:45:04 +0000 Subject: [PATCH] sync with EN --- .../language-function-popup-init.xml | 20 ++++- .../advanced-features-objects.xml | 85 ++++++++++++------- .../advanced-features-outputfilters.xml | 26 ++++-- .../advanced-features-postfilters.xml | 19 +++-- .../advanced-features-prefilters.xml | 27 ++++-- .../section-template-cache-handler-func.xml | 22 ++--- .../advanced-features/template-resources.xml | 45 ++++++---- 7 files changed, 161 insertions(+), 83 deletions(-) diff --git a/docs/ru/designers/language-custom-functions/language-function-popup-init.xml b/docs/ru/designers/language-custom-functions/language-function-popup-init.xml index 309ad154..e99c7d29 100644 --- a/docs/ru/designers/language-custom-functions/language-function-popup-init.xml +++ b/docs/ru/designers/language-custom-functions/language-function-popup-init.xml @@ -1,6 +1,6 @@ - + {popup_init} @@ -9,13 +9,16 @@ overLib, библиотеки, которая используется для отображения всплывающих окон. Они используются для контекстно-чувствительной информации, такой как окна справки и всплывающие - подсказки. {popup_init} должна быть вызвана один раз в начале страницы, - если вы собираетесь использовать на ней функцию + подсказки. {popup_init} должна быть вызвана только один раз, + желательно в тэге <head> в пределах каждой страницы, на которой вы + собираетесь использовать функцию {popup}. + Путь может быть задан относительно обрабатываемого скрипта или в виде полного + адреса с доменом (но не относительно файла шаблона). overLib - написана Эриком Босрупом (Erik Bosrup) и её домашняя страница находится по + написана и поддерживается Эриком Босрупом (Erik Bosrup) и её домашняя страница находится по адресу &url.overLib;. @@ -26,6 +29,15 @@ {* popup_init должна быть вызвана один раз в начале страницы *} {popup_init src='javascripts/overlib/overlib.js'} + +{* пример с полным адресом, включая домен *} +{popup_init src='http://www.example.com/my_js_libs/overlib/overlib.js'} + + +// результат выполнения первого примера + + + ]]> diff --git a/docs/ru/programmers/advanced-features/advanced-features-objects.xml b/docs/ru/programmers/advanced-features/advanced-features-objects.xml index 4a1ff2a8..5811035f 100644 --- a/docs/ru/programmers/advanced-features/advanced-features-objects.xml +++ b/docs/ru/programmers/advanced-features/advanced-features-objects.xml @@ -1,23 +1,26 @@ - + Объекты - Smarty позволяет использовать в шаблонах объекты PHP. - Существуют два способа их вызова. Первый - зарегистрировать объект для - шаблона, затем вызвать его примерно так же, как и пользовательскую - функцию. Второй - присвоить объект шаблону и использовать его, + Smarty позволяет использовать в шаблонах + объекты PHP. + Существуют два способа их вызова. Первый - + зарегистрировать объект для + шаблона, затем вызвать его примерно так же, как и + пользовательские функции. + Второй - назначить объект шаблону и использовать его, как любую другую присвоенную переменную. Первый метод гораздо аккуратнее и безопаснее, так как у зарегистрированного объекта можно ограничить - свойства и методы. Но, в тоже время, зарегистрированный объект - нельзя использовать в циклах, нельзя помещать в массив объектов + свойства и методы. Но, в тоже время, зарегистрированный объект + нельзя использовать в циклах, нельзя помещать в массив объектов, и так далее. Выбор способа за вами, но используйте по возможности первый, чтобы максимально упростить синтаксис шаблона. - В безопасном режиме недоступны приватные методы и - функции (имена которых начинаются с "_"). + В безопасном режиме + недоступны приватные методы и функции (имена которых начинаются с "_"). Если существует и метод, и свойство с одинаковыми именами, то будет использован метод. @@ -28,11 +31,28 @@ По умолчанию, параметры из шаблона передаются объекту точно так же, - как и пользовательской функции. Первым параметром передаётся + как и + пользовательской функции. + Первым параметром передаётся ассоциативный массив, вторым - объект Smarty. Если вы хотите передавать параметры по одному, как при традиционном обращении с объектами, установите четвёртый параметр вызова в false. + + Необязательный пятый параметр вступает в силу только в том случае, если + свойство format равно true. + Он содержит список методов, которые должны обрабатываться как блоки. + Это означает, что в шаблоне у методы будут иметь закрывающие тэги + ({foobar->meth2}...{/foobar->meth2}) и параметры + методов будут иметь такие же синопсисы, как и параметры для + block-function-plugins: + $params, + $content, + &$smarty + и + &$repeat. Кроме того, они ведут себя так же, как и + block-function-plugins. + использование зарегистрированного или присвоенного объекта @@ -40,45 +60,50 @@ register_object("foobar",$myobj); -// если мы хотим ограничиться определёнными методами или свойствами, перечисляем их при регистрации -$smarty->register_object("foobar",$myobj,array('meth1','meth2','prop1')); -// если мы хотим использовать традиционный способ передачи параметров объекту, регистрируем объект с соответствующим -// флагом, установленным в false -$smarty->register_object("foobar",$myobj,null,false); +// регистрация объекта (по ссылке) +$smarty->register_object('foobar',$myobj); +// если мы хотим ограничить доступ к определенным методам или свойствам, перечисляем их +$smarty->register_object('foobar',$myobj,array('meth1','meth2','prop1')); +// если мы хотим использовать традиционный формат параметров объекта, передаем false +$smarty->register_object('foobar',$myobj,null,false); -// Так же мы можем присвоить объект. Желательно присваивать объект по ссылке. -$smarty->assign_by_ref("myobj", $myobj); +// Мы так же можем назначать объекты. Назначение идёт по ссылке, если это возможно. +$smarty->assign_by_ref('myobj', $myobj); -$smarty->display("index.tpl"); +$smarty->display('index.tpl'); ?> ]]> - Вот так нужно обращаться к вашим объектам в index.tpl: + А вот так можно получить доступ к объекту в index.tpl: meth1 p1="foo" p2=$bar} +{* обращаемся к нашему зарегистрированному объекту *} +{foobar->meth1 p1='foo' p2=$bar} -{* результат можно поместить в переменную *} -{foobar->meth1 p1="foo" p2=$bar assign="output"} -в результате получаем {$output} +{* вывод объекта можно сохранить в переменную *} +{foobar->meth1 p1='foo' p2=$bar assign='output'} +the output was {$output} -{* вызываем присвоенный объект *} -{$myobj->meth1("foo",$bar)} +{* обращаемся к нашему назначенному объекту *} +{$myobj->meth1('foo',$bar)} ]]> + + См. также + register_object() + и + assign() + - + Фильтры вывода - Когда шаблон выводится через display() или fetch(), результат может быть + Когда шаблон выводится через + display() или + fetch(), результат может быть пропущен через один или несколько фильтров вывода. Отличие их от - постфильтров состоит в том, что постфильтры действуют на уже скомпилированный + постфильтров + состоит в том, что постфильтры действуют на уже скомпилированный шаблон, перед его записью на диск, в то время как фильтры вывода обрабатывают шаблон в момент его исполнения. @@ -14,7 +17,9 @@ Фильтры вывода могут быть или зарегистрированы или - загружены из папки с плагинами с помощью + загружены из + папки плагинов + с помощью функции load_filter(), или с помощью установки переменной $autoload_filters. @@ -36,8 +41,8 @@ function protect_email($tpl_output, &$smarty) } // регистрация фильтра вывода -$smarty->register_outputfilter("protect_email"); -$smarty->display("index.tpl"); +$smarty->register_outputfilter('protect_email'); +$smarty->display('index.tpl'); // теперь все адреса электронной почты в выводе шаблона будут // обработаны несложной функцией защиты от спам-ботов @@ -45,6 +50,15 @@ $smarty->display("index.tpl"); ]]> + + См. также + register_outpurfilter(), + load_filter(), + $autoload_filters, + постфильтрі + и + $plugins_dir. + - + Постфильтры Постфильтры шаблона - это функции PHP, которые обрабатывают шаблон после его компиляции. Постфильтры могут быть или - зарегистрированы или загружены - из папки с плагинами при помощи функции + зарегистрированы + или загружены из + директории плагинов + при помощи функции load_filter(), или с помощью установки переменной $autoload_filters. @@ -26,8 +28,8 @@ function add_header_comment($tpl_source, &$smarty) } // регистрация постфильтра -$smarty->register_postfilter("add_header_comment"); -$smarty->display("index.tpl"); +$smarty->register_postfilter('add_header_comment'); +$smarty->display('index.tpl'); ?> ]]> @@ -41,6 +43,13 @@ $smarty->display("index.tpl"); ]]> + + См. также + register_postfilter(), + префильтры + и + load_filter(). + - + Префильтры @@ -10,8 +10,10 @@ Префильтры могут быть или - заргистрированы или загружены - из папки с плагинами с помощью функции + заргистрированы + или загружены из + директории плагинов + с помощью функции load_filter() или с помощью установки переменной $autoload_filters. @@ -22,25 +24,32 @@ использование префильтра + + Этот пример удалит все комментарии из исходного текста шаблона. + /U","",$tpl_source); + return preg_replace('//U','',$tpl_source); } // регистрация префильтра -$smarty->register_prefilter("remove_dw_comments"); -$smarty->display("index.tpl"); +$smarty->register_prefilter('remove_dw_comments'); +$smarty->display('index.tpl'); ?> ]]> - - Это удалит все комментарии из исходного текста шаблона. - + + См. также + register_prefilter(), + постфильтры + и + load_filter(). + - + Управление кэшированием @@ -70,7 +70,7 @@ function mysql_cache_handler($action, &$smarty_obj, &$cache_content, $tpl_file=n $CacheID = md5($tpl_file.$cache_id.$compile_id); if(! $link = mysql_pconnect($db_host, $db_user, $db_pass)) { - $smarty_obj->_trigger_error_msg("cache_handler: не могу подключиться к базе данных"); + $smarty_obj->_trigger_error_msg('cache_handler: не могу подключиться к базе данных'); return false; } mysql_select_db($db_name); @@ -80,14 +80,14 @@ function mysql_cache_handler($action, &$smarty_obj, &$cache_content, $tpl_file=n // чтение кэша из базы $results = mysql_query("select CacheContents from CACHE_PAGES where CacheID='$CacheID'"); if(!$results) { - $smarty_obj->_trigger_error_msg("ошибка кэша: неверный запрос."); + $smarty_obj->_trigger_error_msg('cache_handler: ошибка запроса.'); } $row = mysql_fetch_array($results,MYSQL_ASSOC); - if($use_gzip && function_exists("gzuncompress")) { - $cache_content = gzuncompress($row["CacheContents"]); + if($use_gzip && function_exists('gzuncompress')) { + $cache_content = gzuncompress($row['CacheContents']); } else { - $cache_content = $row["CacheContents"]; + $cache_content = $row['CacheContents']; } $return = $results; break; @@ -105,7 +105,7 @@ function mysql_cache_handler($action, &$smarty_obj, &$cache_content, $tpl_file=n '".addslashes($contents)."') "); if(!$results) { - $smarty_obj->_trigger_error_msg("ошибка кэша: неверный запрос."); + $smarty_obj->_trigger_error_msg('cache_handler: ошибка запроса.'); } $return = $results; break; @@ -113,18 +113,18 @@ function mysql_cache_handler($action, &$smarty_obj, &$cache_content, $tpl_file=n // очистка кэша if(empty($cache_id) && empty($compile_id) && empty($tpl_file)) { // clear them all - $results = mysql_query("delete from CACHE_PAGES"); + $results = mysql_query('delete from CACHE_PAGES'); } else { - $results = mysql_query("delete from CACHE_PAGES where CacheID='$CacheID'"); + $results = mysql_query('delete from CACHE_PAGES where CacheID="'.$CacheID.'"'); } if(!$results) { - $smarty_obj->_trigger_error_msg("ошибка кэша: неверный запрос."); + $smarty_obj->_trigger_error_msg('cache_handler: ошибка запроса.'); } $return = $results; break; default: // ошибка, указан неизвестный метод - $smarty_obj->_trigger_error_msg("ошибка кэша: неизвестный метод \"$action\""); + $smarty_obj->_trigger_error_msg('cache_handler: неизвестный метод "'.$action.'"'); $return = false; break; } diff --git a/docs/ru/programmers/advanced-features/template-resources.xml b/docs/ru/programmers/advanced-features/template-resources.xml index 2774b281..984c838d 100644 --- a/docs/ru/programmers/advanced-features/template-resources.xml +++ b/docs/ru/programmers/advanced-features/template-resources.xml @@ -1,32 +1,40 @@ - + Ресурсы - Шаблоны можно получать из самых разных источников. Когда вы отображаете, - вызываете или подключаете один шаблон из другого, вы указываете тип ресурса, + Шаблоны можно получать из самых разных источников. Когда вы + отображаете или + вызываете шаблон, + либо когда вы подключаете один шаблон к другому, вы указываете тип ресурса, вместе с соответствующим путём и названием шаблона. + Если тип ресурса явно не задан, используется значения свойства + $default_resource_type. Шаблоны из папки $template_dir - Шаблоны, лежащие в папке $template_dir, не требуют при вызове указания + Шаблоны, которые находятся в папке + $template_dir, + не требуют при вызове указания типа ресурса, хотя вы можете использовать префикс file: для сохранения - стиля. Для вызова просто укажите относительный от $template_dir путь к - шаблону. + стиля. Для вызова просто укажите относительный от + $template_dir + путь к шаблону. Вызов шаблона из папки $template_dir display("index.tpl"); -$smarty->display("admin/menu.tpl"); -$smarty->display("file:admin/menu.tpl"); // тоже самое, что и строкой выше +$smarty->display('index.tpl'); +$smarty->display('admin/menu.tpl'); +$smarty->display('file:admin/menu.tpl'); // тоже самое, что и строкой выше +?> -{* код в шаблоне *} +{* код в шаблоне Smarty *} {include file="index.tpl"} {include file="file:index.tpl"} {* тоже самое, что и строкой выше *} ]]> @@ -37,17 +45,18 @@ $smarty->display("file:admin/menu.tpl"); // Шаблоны из произвольной папки - Для вызова шаблонов из папки вне $template_dir необходимо - использовать префикс file: с последующим указанием асболютного + Для вызова шаблонов из папки вне + $template_dir + необходимо использовать префикс file: с последующим указанием асболютного пути и имени шаблона. Вызов шаблона из произвольной папки - + display("file:/export/templates/index.tpl"); -$smarty->display("file:/path/to/my/templates/menu.tpl"); +display('file:/export/templates/index.tpl'); +$smarty->display('file:/path/to/my/templates/menu.tpl'); ?> ]]> @@ -75,8 +84,8 @@ $smarty->display("file:/path/to/my/templates/menu.tpl"); display("file:C:/export/templates/index.tpl"); -$smarty->display("file:F:/path/to/my/templates/menu.tpl"); +$smarty->display('file:C:/export/templates/index.tpl'); +$smarty->display('file:F:/path/to/my/templates/menu.tpl'); ?> ]]>