Как программно обновить значение TV-параметра в MODX Evolution

Итак, предположим, что вы уже создали  себе TV-параметр, прикрепили / прилепили его к определенным шаблонам, и теперь стоит задача в программном обновлении значения этого Template Variable. Тогда далее в статье вас ожидает решение данного вопроса.

Сниппет, обновляющий значение TV параметра в MODX Evolution

1. Создайте сниппет, заполните его примерно следующим содержимым:

<?php
$tv_id = 6; // TV, hits - мой TV-параметр.
$hits = $modx->getTemplateVar('hits');//print_r($hits);
$tv = array(
  'contentid' => $modx->documentObject['id'],
  'value' => ++$hits['value'],
);
$updateResult = $modx->db->update( $tv, $modx->getFullTableName('site_tmplvar_contentvalues'), 'tmplvarid = "' . $tv_id . '"' );
print 'Просмотров: '. ++$hits['value'];
?>

Идентификатор TV параметра ($tv_id) у вас разумеется будет свой, и скорее всего не 6, как у меня.

2. Поместите некэшируемый вызов вашего сниппета в нужный вам шаблон. И все. При каждом просмотре / открытии веб-страницы, где будет вызываться заданный программный код, TV параметр будет прибавляться на единичку. Только учтите, что есть такое явление, как модиксовый кэш.

Идентификатор «телевизора» можно всегда узнать в системной таблице site_tmplvars. Поле id.

Дополнительная информация:

  • $modx->documentObject['id'] — получаем идентификатор текущего документа.
  • $modx->getFullTableName(‘site_tmplvar_contentvalues’) — получаем полное имя таблицы site_tmplvar_contentvalues, которую будем обновлять, ведь там храняться значения TV-параметров.
  • Получаем информацию о TV-параметре для текущего документа — $modx->getTemplateVar(‘hits’), чтобы узнать его значение обращаемся к атрибуту под названием value. Если, что непонятно, воспользуйтесь PHP-функцией print_r(), которая всегда готова выручить.

P.S. Проверено мною на MODX Evolution 1.0.8.

Опубликовано 5-12-2013 в 12:27


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Свежие комментарии

  • Иван: к записи Привет всем, доброго времени суток! Я излазил весь »
  • Александер: к записи Потом пригляделся, вроде Вы не это имели в виду и »
  • Александер: к записи У Вас не русифицируется, потому что не везде включ »
  • Администратор: к записи Это надо использовать функции вашей CMS. »
  • Alex: к записи Ребят, а подскажите пожалуйста, как реализовать с »
  • Владимир: к записи А как теперь будет выглядеть ссылка для перехода н »
  • Администратор: к записи Не знаю. »

Статистика спама

Последние твиты