Некэшируемые TV
Здравствуйте.
Подскажите, пожалуйста, каким образом можно выводить TV некэшируемым?
TV обновляется каждый день через cron (стоимость в евро переводится в рубли по курсу цб). Кэш не чистится.
Пробовал и не работает:
1.
Подскажите, пожалуйста, каким образом можно выводить TV некэшируемым?
TV обновляется каждый день через cron (стоимость в евро переводится в рубли по курсу цб). Кэш не чистится.
Пробовал и не работает:
1.
[[!+tv.clock_price_rub]]
2.[[!CRcalc? &input=`[[+tv.clock_price]]` &multiplier=`EUR` &format=`[0, ".", " "]` &noZeros=`0`]] (это сниппет перевода из евро в рубли по текущему курсу, то же самое, что и запущено по cron, только в скрипте, который запускается через cron, значения записываются в БД, а здесь просто выводятся)
3.[[!getUncachedPriceRub? &id=`[[+id]]` &name_tv=`clock_price_rub`]]
getUncachedPriceRub:
$tv = $modx->getObject('modResource', array('id' => $id));
return $tv->getTVValue($name_tv);
4.[[!+results]] (используется mFilter2)
Каждый раз TV всё равно выводится кэшированным(( Очищать кэш ресурсов из-за одного TV не хочется. Комментарии: 2
Нашёл решение.
Чтобы получать некэшируемые значения TV, нужно в сниппете делать запросы к БД.
Сниппет getTVValue:
Чтобы получать некэшируемые значения TV, нужно в сниппете делать запросы к БД.
Сниппет getTVValue:
$resourceID = $modx->resource->get('id');
/* Получаем id объекта modTemplateVar */
$tv = $modx->getObject('modTemplateVar', array(
'name' => $tvName,
));
$tvID = $tv->get('id');
/* Получаем значение объекта modTemplateVarResource */
$query = $modx->newQuery('modTemplateVarResource', array(
'contentid' => $resourceID,
'tmplvarid' => $tvID,
));
$query->select('value');
$value = $modx->getValue($query->prepare());
return $value;
Вызываем сниппет getTVValue:[[!getTVValue? &tvName=`Имя TV`]]
pdoTools и PHP5.4+
<?php
$pdo = $modx->getService('pdoFetch');
return $pdo->getArray('modTemplateVarResource',
['contentid' => $modx->resource->id , 'TemplateVar.name' => $tvName],
['innerJoin' => ['TemplateVar' => ['class' => 'modTemplateVar']]]
)['value'];
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.