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