diff --git a/docs/ru/appendixes/tips.xml b/docs/ru/appendixes/tips.xml index 1fc04220..346f601d 100644 --- a/docs/ru/appendixes/tips.xml +++ b/docs/ru/appendixes/tips.xml @@ -1,6 +1,6 @@ - + Советы diff --git a/docs/ru/appendixes/troubleshooting.xml b/docs/ru/appendixes/troubleshooting.xml index 4c6ad85f..0bf0185e 100644 --- a/docs/ru/appendixes/troubleshooting.xml +++ b/docs/ru/appendixes/troubleshooting.xml @@ -1,6 +1,5 @@ - Troubleshooting diff --git a/docs/ru/designers/language-basic-syntax.xml b/docs/ru/designers/language-basic-syntax.xml index 4c72791b..8d1c6820 100644 --- a/docs/ru/designers/language-basic-syntax.xml +++ b/docs/ru/designers/language-basic-syntax.xml @@ -15,10 +15,12 @@ интерпретировать их и вывести вместо них соответствующий результат. -&designers.language-basic-syntax.language-syntax-comments; -&designers.language-basic-syntax.language-syntax-functions; -&designers.language-basic-syntax.language-syntax-attributes; -&designers.language-basic-syntax.language-syntax-quotes; + &designers.language-basic-syntax.language-syntax-comments; + &designers.language-basic-syntax.language-syntax-functions; + &designers.language-basic-syntax.language-syntax-attributes; + &designers.language-basic-syntax.language-syntax-quotes; + &designers.language-basic-syntax.language-math; + &designers.language-basic-syntax.language-escaping; + + + Предотвращение обработки Smarty + + Иногда необходимо, чтобы Smarty не обрабатывал часть шаблона, + которая должна по умолчанию обрабатываться. Классическим примером + такой ситуации является встраивание Javascript или CSS-кода в + шаблон. Проблема появляется из-за того, что эти языки используют + символы { и }, которые так же используются в качестве ограничителей + для Smarty. + + + + Самым простым решением является избежание этой ситуации путём выноса Javascript'а + и CSS-кода в отдельные файлы и использования стандартных методов HTML для доступа к ним. + + + + Дословное включение контента возможно при помощи блоков {literal} .. {/literal}. + Подобно тому, как вы используете HTML-сущности (  и т.п.), вы можете + использовать {ldelim} и {rdelim}, чтобы отобразить текущие + ограничители. + + + + Порой бывает удобно просто изменить свойства $left_delimiter и + $right_delimiter + в объекте Smarty. + + + Изменение ограничителей + +left_delimiter = ''; +$smarty->assign('foo', 'bar'); +$smarty->display('example.tpl'); + +?> +]]> + + + Шаблон example.tpl: + + + +var foo = ; +function dosomething() { + alert("foo is " + foo); +} +dosomething(); + +]]> + + + + diff --git a/docs/ru/designers/language-basic-syntax/language-math.xml b/docs/ru/designers/language-basic-syntax/language-math.xml new file mode 100644 index 00000000..8b0acbfe --- /dev/null +++ b/docs/ru/designers/language-basic-syntax/language-math.xml @@ -0,0 +1,49 @@ + + + + + Арифметические операции + + Арифметические операции могут совершаться непосредственно над значениями переменных. + + + Примеры арифметики + +bar-$bar[1]*$baz->foo->bar()-3*7} + +{if ($foo+$bar.test%$baz*134232+10+$b+10)} + +{$foo|truncate:"`$fooTruncCount/$barTruncFactor-1`"} + +{assign var="foo" value="`$foo+$bar`"} +]]> + + + + diff --git a/docs/ru/programmers/api-variables.xml b/docs/ru/programmers/api-variables.xml index 203ccbc4..f9514cf1 100644 --- a/docs/ru/programmers/api-variables.xml +++ b/docs/ru/programmers/api-variables.xml @@ -1,6 +1,6 @@ - + Переменные &programmers.api-variables.variable-template-dir; @@ -34,9 +34,12 @@ &programmers.api-variables.variable-right-delimiter; &programmers.api-variables.variable-compiler-class; &programmers.api-variables.variable-request-vars-order; + &programmers.api-variables.variable-request-use-auto-globals; + &programmers.api-variables.variable-error-reporting; &programmers.api-variables.variable-compile-id; &programmers.api-variables.variable-use-sub-dirs; &programmers.api-variables.variable-default-modifiers; + &programmers.api-variables.variable-default-resource-type; + + + $default_resource_type + + Это свойство говорит Smarty, какой тип ресурсов использовать по умолчанию. + Значением этого свойства по умолчанию является 'file', так что + $smarty->display('index.tpl'); и $smarty->display('file:index.tpl'); + имеют одинаковый смысл. Обратитесь к главе ресурсы для дополнительной информации. + + + diff --git a/docs/ru/programmers/api-variables/variable-error-reporting.xml b/docs/ru/programmers/api-variables/variable-error-reporting.xml new file mode 100644 index 00000000..8908ed4c --- /dev/null +++ b/docs/ru/programmers/api-variables/variable-error-reporting.xml @@ -0,0 +1,32 @@ + + + + + $error_reporting + + Если это свойство имеет ненулевое значние, то оно используется + в качестве значения error_reporting внутри display() и + fetch(). При включенном режиме отладки это значение игнорируется + и уровень обработки ошибок не меняется. + + + diff --git a/docs/ru/programmers/api-variables/variable-request-use-auto-globals.xml b/docs/ru/programmers/api-variables/variable-request-use-auto-globals.xml new file mode 100644 index 00000000..d426b67a --- /dev/null +++ b/docs/ru/programmers/api-variables/variable-request-use-auto-globals.xml @@ -0,0 +1,36 @@ + + + + + $request_use_auto_globals + + Определяет должен ли Smarty использовать $HTTP_*_VARS[] + ($request_use_auto_globals=false - значением по умолчанию) или + $_*[] ($request_use_auto_globals=true). Это влияет на поведение шаблонов, + которые используют {$smarty.request.*}, {$smarty.get.*} и т.д. + Внимание: если вы установите $request_use_auto_globals в true, variable.request.vars.order + не учитывается, а вместо него используется значение + gpc_order из настроек php. + + + diff --git a/docs/ru/programmers/caching.xml b/docs/ru/programmers/caching.xml index 4f7cc313..0827f4e8 100644 --- a/docs/ru/programmers/caching.xml +++ b/docs/ru/programmers/caching.xml @@ -28,7 +28,8 @@ &programmers.caching.caching-setting-up; &programmers.caching.caching-multiple-caches; &programmers.caching.caching-groups; - + &programmers.caching.caching-cacheable; + + + + Управление кэшированием результатов работы плагинов + + Начиная с плагинов Smarty-2.6.0, кэшируемость плагинов может быть объявлена + во время их регистрации. Третий аргумент у register_block, + register_compiler_function и register_function называется + $cacheable и имеет значение по умолчанию true, + что соответствует поведению плагинов Smarty версии ранее 2.6.0 + + + + Если плагин регистрируется с $cacheable=false, плагин вызывается + каждый раз, когда страница отображается, даже если сама страница + кэширована. Поведение плагина немного похоже на функцию + insert. + + + + В отличие от {insert}, + атрибуты плагина не кэшируются по умолчанию. Они могут быть + объявлены как кэшируемые при помощи четвертого параметра - + $cache_attrs. $cache_attrs + это массив имен атрибутов, которые должны кэшироваться, чтобы + функция плагина брала значение в том виде, в котором оно было в момент + помещения страницы в кэш, каждый раз, когда страница запрашивается из кэша. + + + + Предотвращение кэширования результата работы плагина + +caching = true; + +function remaining_seconds($params, &$smarty) { + $remain = $params['endtime'] - time(); + if ($remain >=0) + return $remain . " second(s)"; + else + return "done"; +} + +$smarty->register_function('remaining', 'remaining_seconds', false, array('endtime')); + +if (!$smarty->is_cached('index.tpl')) { + // извлекаем $obj из БД и присваиваем... + $smarty->assign_by_ref('obj', $obj); +} + +$smarty->display('index.tpl'); +?> +]]> + + + Шаблон index.tpl: + + +endtime} +]]> + + + Количество секунд до endtime объекта $obj изменяется при каждом + обновлении страницы, даже если страница кэширована. Так как + атрибут endtime кэширован, объект извлекается из базы данных в тот момент, + когда страница помещается в кэш, но не во время последующих запросов + к странице. + + + + + Предотвращение кэширования части страницы + +caching = true; + +function smarty_block_dynamic($param, $content, &$smarty) { + return $content; +} +$smarty->register_block('dynamic', 'smarty_block_dynamic', false); + +$smarty->display('index.tpl'); +?> +]]> + + + Шаблон index.tpl: + + + + + + + + Во время обновления страницы вы заметите, что даты отличаются. + Одна является "динамической", другая - "статической". Вы можете поместить + в конструкцию {dynamic}...{/dynamic} любой код и быть уверенным, + что он не будет помещён в кэш вместе с остальной частью страницы. + + + + + diff --git a/docs/ru/programmers/plugins.xml b/docs/ru/programmers/plugins.xml index 0de2e286..364c909d 100644 --- a/docs/ru/programmers/plugins.xml +++ b/docs/ru/programmers/plugins.xml @@ -48,7 +48,7 @@ в эту директорию и Smarty будет использовать его в автоматическом режиме. - + &programmers.plugins.plugins-howto; &programmers.plugins.plugins-naming-conventions; &programmers.plugins.plugins-writing; &programmers.plugins.plugins-functions; diff --git a/docs/ru/programmers/plugins/plugins-howto.xml b/docs/ru/programmers/plugins/plugins-howto.xml new file mode 100644 index 00000000..65e056fe --- /dev/null +++ b/docs/ru/programmers/plugins/plugins-howto.xml @@ -0,0 +1,47 @@ + + + + + Как работают плагины + + Плагины загружаются только по необходимости. Только те модификаторы, + функции, ресурсы и т.д., которые используются в шаблоне, будут + загружены. К тому же, каждый плагин загружается только один раз, + даже если у вас есть несколько экземпляров Smarty, работающих + в пределах одного запроса. + + + Пре/постфильтры и фильтры вывода заслуживают отдельного упоминания. + Так как они не упоминаются в шаблонах, они должны быть зарегистрированы + и загружены неявно через API-функции ещё до обработки шаблона. + Порядок выполнения нескольких фильтров одного типа зависит от + порядка, в котором они регистрировались или загружались. + + + Директория плагинов + может быть строкой, содержащей путь, или массивом, содержащим + множество путей. Чтобы установить плагин, просто поместите его + в одну из этих директорий и Smarty автоматически будет его использовать. + + + +