Спасибо за ответ! Идея с setOption/getOption — по-моему то, что надо. Сейчас попробую. Я уже хотел написать функцию расширения со статической переменной, но я не знаю, как долго сохраняется такая функция в памяти, т.к. если она удаляется сразу после отработки, то статическая переменная теряет смысл. Видимо, я слишком туманно обрисовал задачу: В верхнем меню вынесены разделы, и при переходе по какому-то из них слева появляется меню раздела, у каждого свое, причем оно может быть 2-х уровневым. Я сделал эти меню дочерними к элементам верхнего меню, а левое генерируется примерно как {processor action=«getdata» params=«parent={field name=id}»} Все бы ничего, но при переходе по этому меню текущий документ меняется и меню слева исчезает, хотя посетитель по-прежнему остается в том же разделе. И я решил просто создать в шаблоне переменную, в которую при формировании верхнего меню (во вложенном файле row.tpl) будет прописываться id документа верхнего меню с классом active. Сейчас я просто перенес весь код в основной шаблон (все вертится в одном файле), но не нравится мне это решение, модульное построение как-то больше доверия внушает.

Все-таки я был не прав. Видимо переменные, объявленные в шаблонах, видны только внутри текущего шаблона и дочерних. А выше не видны. В инете нашел несколько тем по этому поводу, но решения ни у кого не отмечено. Первое альтернативное решение, которое мне пришло в голову — это использовать modResource::setOption()/::getOption(). Дело в том, что эти методы имеют все производные от xPDOObject. Метод ::getOption() хорош еще и тем, что можно задать массив первостепенного источника и значение по умолчанию. К примеру, задаем переменную в дочернем шаблоне (только эта переменная — свойство текущего ресурса). {$modx->resource->setOption('foo', 'value')} В родительском шаблоне после вызова дочернего шаблона эта переменная будет видна в ресурсе. {$modx->resource->getOption('foo', $defaultSourceArray, $defaultValue)} Но надо сразу учитывать, чтобы дочерний шаблон не был кешируемым, так как это переменная не Smarty, а самого документа. То есть если дочерний шаблон не был отработан, то и в ресурсе этой переменной не будет.

Если в родительском шаблоне переменная нужна после вызова дочернего шаблона (где эта переменная будет создана), то да. А если раньше, то как? Если переменной тупо еще нет.

Это я понимаю. Мне нужно в файле шаблона row задать значение переменной, а затем использовать его в родительском файле. можно сделать так?

А вот так я предварительно обновляю все документы, у которых еще нет сгенерированных превьюшек: <?php

ini_set('max_execution_time', 0); ignore_user_abort(true);

$modx->switchContext('web'); print '<pre>';

$TV_source = 2; // Устанавливаете значения своих TV-шек $TV_target = 17;

$q = $modx->newQuery('modResource'); $q->innerJoin('modTemplateVarResource', 'tvimage', "tvimage.tmplvarid={$TV_source} and modResource.id = tvimage.contentid and tvimage.value != ''"); $q->leftJoin('modTemplateVarResource', 'tvprev', "tvprev.tmplvarid={$TV_target} and modResource.id = tvprev.contentid"); $q->where(array( 'tvprev.id' => null,
));

print "<br />Всего документов без превьюшек: ". $modx->getCount('modResource', $q);

$q->limit(100);

// Создаем самбнейл превьюшки foreach($modx->getCollection('modResource', $q) as $resource){ if($photo = $resource->getTVValue($TV_source) AND $thumb = $modx->runSnippet('phpthumbof', array( 'input' => $photo, 'options' => 'w=113&h=113&q=100&zc=1', )) AND $photo != $thumb ){ $resource->setTVValue( $TV_target, $thumb); // print $thumb; } // print_r($resource->toArray()); }

Добрый день. Smarty-шаблоны ведут себя так же, как и обычные php-файлы (в общих чертах). Поэтому оперируешь простыми переменными. {assign var=foo value=$value} Переменная {$foo} будет видна далее по коду. Таким же образом ты ее можешь перегрузить.

Советую всем посмотреть на вот эту хостинг-площадку: www.digitalocean.com/pricing Все тарифные планы на SSD. 1ядро/512MB RAM/20GB SSD — всего $5 в месяц! Что такое SSD? — это твердотельные накопители, замена традиционному жесткому диску. Благодаря отсутствию движущихся элементов, скорость работы таких накопителей дает плюс до нескольких раз. То есть простой перенос сайта с обычного хостинга на этот может практически гарантировать прирост в производительности сайта.

Добрый день. Николай, не подскажешь, как сделать так, чтобы я мог назначить переменную в файле шаблона страницы (page.tpl), изменить ее во вложенном шаблоне row.tpl (page.tpl — outer.tpl — row.tpl) и затем ее конечное значение использовать в page.tpl? Пробовал объявить ее как global в плагине — не помогает

Извиняюсь! Как-то пропустил топик… По поводу наборов параметров в чанках и сниппетах: как я говорил ранее, это и сейчас имеется. То есть просто вызываем {snippet name=«mysnippet@propset1@propset2@...»} или {chunk name=«mychunk@propset1@propset2@...»}. А вот в процессорах этого действительно изначально нет. То есть вообще изначально сам MODX не предусматривал вызова процессоров с наборами параметров. Буду вносить этот функционал в modxSmarty. Создал себе тикет.

Зависит от того включен вывод нотисов или нет. Может нотисы были отключены, а потом ты их влючил через ini_set('display_errors', 1) или типа того.