Форум русской поддержки Joomla!® CMS
10.12.2016, 16:51:19 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Обновление количества просмотров (хитов) в K2 при включенном кэше

 (Прочитано 696 раз)
0 Пользователей и 1 Гость смотрят эту тему.
kiryann
Захожу иногда
**

Репутация: +3/-0
Offline Offline

Сообщений: 19


« : 13.03.2015, 20:39:52 »

Вот нашёл на просторах решение давней проблемы с кэшем и количеством просмотров, то есть если включить кэш, то хиты перестают считаться. Решение, правда, для родного компонента 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, решить не могу, пробовал пару вариантов, но не получается. Подскажите решение, как прописать правильно.
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet