Вот нашёл на просторах решение давней проблемы с кэшем и количеством просмотров, то есть если включить кэш, то хиты перестают считаться. Решение, правда, для родного компонента Joomla
http://www.inmotionhosting.com/support/edu/joomla-3/increase-hits-cache, но после несложных манипуляций с кодом заработало и на K2, Joomla 2.5 + Jotcashe
Создал файл includes/increase_hits.php, следующего содержания
<?php
if ( $_POST['option'] == "com_k2"
&& $_POST['view'] == "K2Item"
&& is_numeric($_POST['id']))
{
// connect to the database
include_once("../configuration.php");
$cg = new JConfig;
$con = mysqli_connect($cg->host,$cg->user,$cg->password,$cg->db);
if (mysqli_connect_errno())
die('n/a');
// increase hits
$query = " UPDATE `" . $cg->dbprefix . "k2_items`
SET `hits` = `hits` + 1
WHERE `id` = " . $_POST['id'] . "
LIMIT 1;
";
mysqli_query($con,$query);
// grab the new hit count
$query = " SELECT `hits`
FROM `" . $cg->dbprefix . "k2_items`
WHERE `id` = " . $_POST['id'] . "
LIMIT 1;
";
$new_hits = mysqli_fetch_assoc(mysqli_query($con,$query));
// close the connection to the database
mysqli_close($con);
echo $new_hits['hits'];
}
?>
Далее в файл шаблона материала /com_k2/templates/default/item.php добавил скрипт
<script type='text/javascript'>
jQuery.post('<?php echo JURI::base(); ?>includes/increase_hits.php',{option:'com_k2',view:'K2Item',id:'<?php echo $this->item->id; ?>'},
function(data,status){jQuery('#item_hits').html(data);},'text');
</script>
и вместо
<span><?php echo ($this->item->hits); ?></span>
добавил
<span id="article_hits"></span>
и в файле components/com_k2/models/item.php закомментировал
$row = JTable::getInstance('K2Item', 'Table');
$row->hit($id);
что бы, при обновлении кэша повторно хиты не добавлялись.
А вот как подтянуть хиты в категории при обновлении страницы, с помощью jQuery, решить не могу, пробовал пару вариантов, но не получается. Подскажите решение, как прописать правильно.