Есть модернизированный сниппет HitsPage для подсчёта уникальных посетителей на сайте. Он записывает просмотры в TV. У меня на сайте стоит minishop2, и хотелось бы вывести количество просмотров в специально созданную для этого опцию
views
. Подскажите, как исправить код сниппета, чтобы вместо TV использовалась опция?
Исходный код сниппета находится по ссылке:
https://modx.ru/novosti-i-stati/article/323/
Дублирую его здесь:
<?php
/**
* This file is extra HitsPage Pageviews for MODX Revolution.
*
* @copyright Copyright © 2013, Artdevue Ltd, <info@artdevue.com>
* @author Valentin Rasulov <info@artdevue.com>
* @license <a href="http://opensource.org/licenses/gpl-2.0.php">opensource.org/licenses/gpl-2.0.php</a> GNU Public License v2
* @package hitspage
*
*/
/* Modified by saytoshop.ru 21-05-2017
*
* &tvname — имя TV, в которой содержится счетчик посещений
* &id — id ресурса, которому принадлежит tvname
* &silentmode — сниппет по умолчанию не возвращает ничего, укажите &silentmode=`0`, чтобы получить текущее количество
* &interval — если указать &interval=`daily` — сниппет засчитывает только одно посещение страницы в сутки одним пользователем
*
*/
$tvname = isset($tvname) ? $tvname : «HitsPage»;
$silentmode = isset($silentmode) ? $silentmode : «1»;
$id = isset($id) ? $id : $modx->resource->get('id');
$page = $modx->getObject('modResource', $id);
if ($interval == «daily» && isset($_COOKIE[$id . $tvname])) {
if ($silentmode == «0») return $modx->resource->getTVValue($tvname);
return;
}
$view = 0;
// Check the option to record in TV
if ($saveTv == 'true') {
// get the required TV object by name (or id)
$tv = $modx->getObject('modTemplateVar', array(
'name' => $tvname
));
if ($tv) {
$tvs = $modx->getObject('modTemplateVarResource', array(
'tmplvarid' => $tv->id,
'contentid' => $page->get('id')
));
if ($tvs) {
$viewTv = $tvs->get('value');
$tvs->set('value', intval($viewTv) + 1);
if ($tvs->save()) $view = $viewTv;
}
else {
$tvn = $modx->newObject('modTemplateVarResource');
$tvn->set('tmplvarid', $tv->id);
$tvn->set('contentid', $page->get('id'));
$tvn->set('value', 1);
if ($tvn->save()) $view = 1;
}
}
}
else {
$view = $page->getProperty('hitts', 'hitspage', $view);
}
if ($tvname == «HitsPage») $page->setProperty('hitts', intval($view) + 1, 'hitspage');
$page->save();
setcookie($id . $tvname, $tvname, time() + 3600 * 24);
if ($silentmode == «0») return $view;
return;
Я полагаю, нужно исправить эту строчку:
$tvname = isset($tvname) ? $tvname : «HitsPage»;
Как-то так:
$tvname = $modx->resource->get('views');
Подскажите, пожалуйста!