Записи 5Просмотры 3856

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

Последние комментарии

  • A

    @Andchir помоги пожалуйста. Как организовать статистику по товарам или статьям.
    Хорошо было бы чтоб это было какое-то поле в Migx shema - по которому можно и фильтровать

    Читать далее
  • A

    @Andchir а вот еще нашел такой пакет siteStatistics
    Плагин

    <?php $path = $modx->getOption('sitestatistics_core_path', null, $modx->getOption('core_path') . 'components/sitestatistics/') . 'services/'; $userAgents = $modx->getOption('stat.not_allowed_user_agents'); if (!empty($userAgents)) { $userAgents = explode(',', $userAgents); //$userAgents = array_map('trim', $userAgents); foreach ($userAgents as &$userAgent) { $userAgent = trim($userAgent); $userAgent = preg_quote($userAgent); } $userAgents = implode('|', $userAgents); $userAgent = $_SERVER['HTTP_USER_AGENT'] ?: 'empty'; if (preg_match("/($userAgents)/i", $userAgent)) return; } switch ($modx->event->name) { case 'OnLoadWebDocument': { if ( ($modx->getOption('stat.enable_statistics', null, false) || $modx->getOption('stat.count_online_users', null, false)) && $modx->getOption('site_status')) { /** @var siteStatistics $siteStat */ $siteStat = $modx->getService('sitestatistics', 'siteStatistics', $path); // Disable statistics for specified IPs. if (!$siteStat->checkIp()) { return; } $siteStat->defineUserKey(); // Consider statistics if ($modx->getOption('stat.enable_statistics', null, false)) { $siteStat->setStatistics(); } // Online Users if ($modx->getOption('stat.count_online_users', null, false)) { $siteStat->setUserStatistics(); } $siteStat->need2ClearCache = $siteStat->getMessage(); } break; } case 'OnWebPageComplete': { $modx->sitestatistics->clearCache(); unset($modx->sitestatistics); break; } case 'OnDocFormPrerender': if ($mode == modSystemEvent::MODE_UPD && $modx->getOption('stat.show_tab_in_resource_form', null, true)) { /** @var siteStatistics $siteStat */ $siteStat = $modx->getService('sitestatistics', 'siteStatistics', $path); $siteStat->initializeMgr(true); } break; }

    и снипет

    <?php /** @var array $scriptProperties */ /** @var siteStatistics $siteStat */ if (!$siteStat = $modx->getService('sitestatistics', 'siteStatistics', $modx->getOption('sitestatistics_core_path', null, $modx->getOption('core_path') . 'components/sitestatistics/') . 'services/')) { return 'Could not load siteStatistics class!'; } // mode: page/site if (empty($mode)) $mode = $scriptProperties['mode'] = 'page'; if (empty($tpl)) $scriptProperties['tpl'] = 'tpl.siteStatistics'; if (empty($resource)) $resource = $modx->resource->id; $siteStat->initialize($scriptProperties); if ($mode == 'page') { /** @var array|int $output */ $output = $siteStat->getPageStatistics($resource); if (!empty($toPlaceholders)) $modx->toPlaceholders($output,'stat'); else return $output; } else { return $siteStat->getSiteStatistics(); }

    Этот пакет подойдет под статьи из отдельной таблицы?

    Читать далее
  • A

    Участник @Andchir написал в работал вывод - и тут бабах .... что случилось непойму. Подскажите плиз:

    if (!$page) {
    return 0;
    }

    дабавил этот код и статья открылась норм - но калькулятор тут не рабочий. На других статьях количество считает норм ......

    Читать далее
  • A

    @Andchir я имел ввиду ( возможно TV с данными числом) которое как и TV Price присутствует с Migx Shema.
    Или же плагин который на условие, открытия виртуальной страницы - перезаписывает поле таблицы Shema Migx добавляя +1.
    Просто может есть такие варианты, просто я нашёл только HitsPage
    плагин

    <?php switch ($modx->event->name) { case 'OnWebPagePrerender': if($modx->hpCount === true) { // get a reference to the output $output = &$modx->resource->_output; if (preg_match_all ("/{%hp-(.*?)%}/",$output , $hp_list)) { // If the array is not empty, choose the number of comments on the resource id (column rid) if (is_array($hp_list)) { array_walk($hp_list[1], 'intval'); $hp = $modx->newQuery('modResource', array('id:IN' => $hp_list[1])); $hp->select(array('modResource.id','modResource.properties')); if ($hp->prepare() && $hp->stmt->execute()) { $resultsHp = $hp->stmt->fetchAll(PDO::FETCH_ASSOC); foreach ($resultsHp as $rHp) { $objHP = json_decode($rHp['properties']); if (in_array($rHp['id'],$hp_list[1])) { $hp_list[1][array_search($rHp['id'],$hp_list[1])] = intval($objHP->hitspage->hitts); } } } } // Replace all your templates in the resource to the correct values $output = str_replace($hp_list[0], $hp_list[1], $output); } } break; }

    и снипет

    <?php $page = $modx->getObject('modResource', $modx->resource->get('id')); $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'=>'HitsPage')); 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); } $page->setProperty('hitts',intval($view) + 1,'hitspage'); $page->save(); return $view;

    Читать далее