ovvivus
@ovvivus

Как в сниппете заменить TV на msOption?

Есть модернизированный сниппет 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');

Подскажите, пожалуйста!
  • Вопрос задан
  • 166 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы