Поддержать Проект

Обратная связь

[MODX] Guru
  • Информация
  • Разработчикам
  • Дополнения
    • DocLister
    • DLMenu
    • DLCrumbs
    • DLBuildMenu
    • DLLastViews
    • DLSiblings
    • DLRequest
    • DLglossary
    • DLSitemap
    • DocInfo
    • FormLister
    • Wayfinder
    • phpthumb
    • LikeDislike
    • eForm
    • Ditto
    • multiTV
    • AjaxMegaSearch
    • AjaxSearch
    • WebLoginPE
    • Breadcrumbs
    • CodeMirror
    • AnythingRating
    • Easy Newsletter
    • FirstChildRedirect
    • OpenGraphTags
    • ddTypograph
    • TagSaver
    • BlackList
    • CfgTv
    • ModxAccount
    • Forgot Manager Login
    • GetField
    • if
    • Jot
    • ListChild
    • ListIndexer
    • ManagerManager
    • ddMMEditor
    • MaxiGallery
    • MemberCheck
    • ddGetMultipleField
    • MetaX
    • MODxBB и phpBB
    • Yams
    • Personalize
    • PHx
    • Reflect
    • tagLinks
    • TransAlias
    • TvTagCloud
    • UltimateParent
    • WebSignup
    • WebLogin
    • countViews
    • thumb
    • imageCaptor
    • optimizeJPG
    • Preview Next
    • Shopkeeper
    • SiteMap
    • Sass
    • Selector
    • SimpleGallery
    • SimpleTube
    • SimpleFiles
    • Star Rating
    • MinifyX
    • adminNav
    • SimplePolls
    • CResource
    • MODxAPI
    • customTables
    • HtmlInLine
    • HtmlMinModxEvo
    • SHKUserProfile
    • PickDocsInTree
    • evoSearch
    • editDocs
    • PageBuilder
    • HybridAuth
    • Compare
    • alterTitle
  • Виджеты
  • Уроки
  • Разработчики
  • Готовые примеры
  • Блог
  • Конфиги
  • HTML коды
© [MODX] Guru
  • Дополнения

Количество просмотров страниц MODX Evo ✈ Evolution CMS

  • Дополнения
  • countViews
3938

Количество просмотров страниц MODX Evo ✈ Evolution CMS

Устанавливаем счетчик количества просмотров. Для этого нам нужно будет создать дополнительное поле в таблице modx_site_content базы данных. Вот параметры нового поля – count int(20) default = 0.

Теперь создадим сниппет inc, который будет считать количество посещений. Вызов сниппета inc нужно установить в самом верху шаблона материалов. Код сниппета:

$table = $modx->getFullTableName("site_content");
$id = $modx->documentObject['id'];
$result = $modx->db->update("count=count+1", $table, "id=$id");

И наконец, создаем сниипет hits, отвечающий за вывод количества просмотров:

$id = isset($id) ? $id : $modx->documentIdentifier;
return $modx->db->getValue($modx->db->select('count',$modx->getFullTableName('site_content'),'id='.$id));

Давайте рассмотрим еще один способ подсчета количества просмотров. Данный способ имеет одно преимущество перед предыдущим – его можно использовать в шаблоне Ditto.

Итак, создадим TV-параметр countViews с типом ввода Text.

Далее создаем сниппет countViews с таким содержанием:

$type = isset($type) ? $type : 'output'; 
$table = $modx->getFullTableName('site_tmplvar_contentvalues'); 
$insert = false; 
$lock = ($lock == '1') ? true : false; 
$_SESSION['countViews'] = is_array($_SESSION['countViews']) ? $_SESSION['countViews'] : array(); 
$countViews = (isset($_SESSION['countViews'][$id]) && $_SESSION['countViews'][$id] === true) ? true : false; 
$usertype = isset($_SESSION['usertype']) ? $_SESSION['usertype'] : 'user'; 
switch($type) { 
	case 'output': 
		$count = $modx->getTemplateVar('countViews', '*', $id); 
		echo ($count['value'] == '' ? '0' : $count['value']); 
	break; 
	case 'counter': 
		if($usertype == 'manager' || ($lock && $countViews)) {
			break;
		} 
		else {
			$tvar = $modx->db->select('value', $table, 'tmplvarid ="'.$tvid.'" and contentid="'.$id.'"'); 
			if($modx->db->getRecordCount($tvar) == 0) {
				$insert = true; $count = 0;
			} 
			else {
				$row = $modx->db->getRow($tvar); 
				$count = $row['value'];
			} 
			$count++; 
			$_SESSION['countViews'][$id] = true; 
			$fields = array('value'	=> $count, 'tmplvarid' => $tvid, 'contentid' => $id); 
 
			if($insert) {
				$modx->db->insert($fields, $table);
			} 
			else {
				$modx->db->update($fields, $table, 'tmplvarid = "'.$tvid.'" and contentid = "'.$id.'"');
			}
		} 
	break;
}

На страницах, где будет происходить подсчет посещений, вставляем этот код:

[!countViews? &type=`counter` &id=`[*id*]` &tvid=`id TV-параметра countViews`!]

И, наконец, в том месте, где Вы ходите видеть количество просмотров, вставляем такой код:

[[countViews? &type=`output` &id=`[*id*]` &tvid=`id TV-параметра countViews`]] - в документе MODX
[[countViews? &type=`output` &id=`[+id+]` &tvid=`id TV-параметра countViews`]] - в шаблоне Ditto

Обратите внимание: просмотр страницы авторизованным пользователем в системе MODX не учитывается.