Тоже как-то нужен был простенький счётчик посещения страниц для MODx.
Который считал бы посещение каждой страницы за всё время и за день.
Написал небольшой сниппет.
<?php
# ид текущего документа
$this_id=$modx->documentObject['id'];
$today=date("j");
$sql_get_count="SELECT DAYOFMONTH(`day_date`) as this_date, `page_id`, `day`, `all` FROM `page_counter` where `page_id`='".$this_id."'";
$sql_get_count=mysql_fetch_array(mysql_query($sql_get_count));
if(!$sql_get_count[0])
{
$insert="insert into `page_counter` (`id`, `page_id`, `day`, `all`, `day_date`) values (NULL, '".$this_id."', 1, 1, CURRENT_TIMESTAMP)";
$insert=mysql_query($insert);
} else {
$all=$sql_get_count[3]+1;
# проверяем день
if($sql_get_count[0]==$today)
{
$day=$sql_get_count[2]+1;
}
if($sql_get_count[0]>$today)
{
$day=1;
}
$update=mysql_query("UPDATE `page_counter` SET `day` = '".$day."', `all` = '".$all."', `day_date` = current_timestamp WHERE `page_id`='".$this_id."'");
}
$get_counter=mysql_query("SELECT `day`, `all` FROM `page_counter` where `page_id`='".$this_id."'");
$get_counter=mysql_fetch_array($get_counter);
echo "За день: <b>".$get_counter[0]."</b>";
echo "<br>Всего: <b>".$get_counter[1]."</b>";
?>
И в базу, где лежат таблицы MODx добавил ещё одну:
CREATE TABLE IF NOT EXISTS `page_counter` (
`id` int(10) NOT NULL auto_increment,
`page_id` int(10) unsigned NOT NULL,
`day` int(10) unsigned NOT NULL,
`all` int(10) unsigned NOT NULL,
`day_date` date NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=cp1251 AUTO_INCREMENT=1;