0 Пользователей и 2 Гостей просматривают эту тему.
  • 19 Ответов
  • 1166 Просмотров
*

borro

  • Живу я здесь
  • 1281
  • 21
  • желаю вам счастья
Здравствуйте.

Если вам надо собирать статистику по детальному просмотру товаров VirtueMart 2.0(делал в VM 2.0.18a), то для этого надо:
1. Создать таблицу в БД, например так:
Код
CREATE TABLE ВАШПРЕФИКС_prod_viewing_stats(
product_id int(11) PRIMARY KEY,
hits int(11)
)
2. Добавить в представлении карточка товара код(сайт/templates/ваш_шаблон/html/com_virtuemart/productdetails/default.php), не считающий ботов:
Код
function is_bot(){
$botlist = array("Yahoo Slurp", "WebAlta", "Yandex", "StackRambler",
"Teoma", "alexa", "froogle", "Gigabot", "inktomi",
"looksmart", "URL_Spider_SQL", "Firefly", "NationalDirectory",
"Ask Jeeves", "TECNOSEEK", "InfoSeek", "WebFindBot", "girafabot",
"crawler", "www.galaxy.com", "Googlebot", "Scooter", "Slurp",
"msnbot", "appie", "FAST", "WebBug", "Spade", "ZyBorg", "rabaz",
"Baiduspider", "Feedfetcher-Google", "TechnoratiSnoop", "Rankivabot",
"Mediapartners-Google", "Sogou web spider", "WebAlta Crawler","TweetmemeBot",
"Butterfly","Twitturls","Me.dium","Twiceler");
 
foreach($botlist as $bot){
if(strpos($_SERVER['HTTP_USER_AGENT'],$bot)!==false)
return true; // Is a bot
}
return false; // Not a bot
}

if (!is_bot()) {
$db =& JFactory::getDBO();
$query = 'SELECT IFNULL(hits, 0) as hits FROM #__prod_viewing_stats WHERE product_id="'.$this->product->virtuemart_product_id.'"';
$db->setQuery($query);
$stats = $db->loadObject();
if (!is_null($stats->hits)){
$stats->hits = $stats->hits+1;
$query = 'DELETE FROM #__prod_viewing_stats  WHERE product_id = "'.$this->product->virtuemart_product_id.'"';
$db->setQuery($query);
$db->query();
}
else {
$stats->hits = 1;
}
//echo "Просмотрено: $stats->hits<br/>";
$query = "INSERT INTO #__prod_viewing_stats (`product_id`, `hits`) VALUES ('".$this->product->virtuemart_product_id."', '".$stats->hits."')";
$db->setQuery($query);
$db->query();
unset($db);
}

Я добавлял после кода
Код
if (empty($this->product)) {
    echo JText::_('COM_VIRTUEMART_PRODUCT_NOT_FOUND');
    echo '<br /><br />  ' . $this->continue_link_html;
    return;
}

Направления по совершенствованию(если не прав поправьте)
1. заменить delete + insert на update с созданием триггера на таблицу products, инициализирующий строку товара в таблице учета посещений prod_viewing_stats  
2. уменьшить размер поля hits до int(?)
3. может проиндексировать таблицу prod_viewing_stats как-то получше(не силен в индексации)?
*

ChaosHead

  • Профи
  • 4738
  • 398
Спасибо добрый человек. Скажи, а с кешированием я так понимаю уже не будет работать?
*

borro

  • Живу я здесь
  • 1281
  • 21
  • желаю вам счастья
Спасибо добрый человек. Скажи, а с кешированием я так понимаю уже не будет работать?
Здравствуйте, я всего лишь скопировал и адаптировал вариант, выложенный здесь на форуме для VM1. Не силен в кэшировании. Если кэширование не предполагает запроса к серверу(не будет запускаться скрипт построения карточки товара), то учёта не будет правильного. Насколько знаю есть возможности отключить кэширование в браузере, правда по советам Фёдора у меня не получилось этого настроить, может чего недопонял :) Ищущий до обрящет, вопрошающему отворят
« Последнее редактирование: 09.12.2013, 13:34:26 от borro »
*

andrew_puma

  • Захожу иногда
  • 21
  • 0
Помогите вставить код на сайт, а то вставляю а он не выводится!
в базе нет проблем.
а вот код который вставляю выходит весь на сайте!
*

gartes

  • Живу я здесь
  • 951
  • 71
  • Е = mс²
Помогите вставить код на сайт, а то вставляю а он не выводится!
в базе нет проблем.
а вот код который вставляю выходит весь на сайте!

Вам нужно код вставлять в <?php  ?> такие скобочки ))))) тогда будет работать ...
*

andrew_puma

  • Захожу иногда
  • 21
  • 0
Я так и сделал, но не отображается!
*

andrew_puma

  • Захожу иногда
  • 21
  • 0
И как сделать, чтобы счетчик считал, а даная информация выводилась в админке?
*

ChaosHead

  • Профи
  • 4738
  • 398
Я так и сделал, но не отображается!
Лучше обратитесь к специалисту, он разберется на месте.
*

borro

  • Живу я здесь
  • 1281
  • 21
  • желаю вам счастья
Лучше обратитесь к специалисту, он разберется на месте.
Добрый вечер. Позвольте узнать, как вы решили вопрос подсчёта при кэшировании?
*

gartes

  • Живу я здесь
  • 951
  • 71
  • Е = mс²
Не... Что то не то...
1 просмотрев код .. Дак там по моему вывода нет.. так как
Код
//echo "Просмотрено: $stats->hits<br/>"; 
Эта строка коммент.. и вроде единственное что что либо выводит.

2
Цитировать
borro
А зачем создавать таблицу это поле есть в уже в таблице продуктов.
Код
$db =& JFactory::getDBO();
$query = 'SELECT IFNULL(hits, 0) as hits FROM #__prod_viewing_stats WHERE product_id="'.$this->product->virtuemart_product_id.'"';
$db->setQuery($query);
$stats = $db->loadObject();
и если мы в носим именно в таблицу продуктов то  это что с верху не нужно

разве я не прав ?
*

ChaosHead

  • Профи
  • 4738
  • 398
Добрый вечер. Позвольте узнать, как вы решили вопрос подсчёта при кэшировании?
Я давно отказался от VirtueMart, но теоретически можно скриптом записывать. Можно у Kunena подсмотреть, он это обходит, да и в последних версиях Joomla кол-во просмотров учитывается при включенном кэшировании.
*

Jukov

  • Осваиваюсь на форуме
  • 98
  • 1
Доброго дня!
Цитировать
borro
Спасибо за решение, все работает отлично! + в репутацию!

Сейчас хочу отобразить количество просмотров товара в самой категории, пока без результата, если есть ответ подскажите!?
« Последнее редактирование: 18.09.2015, 08:36:45 от Jukov »
*

Jukov

  • Осваиваюсь на форуме
  • 98
  • 1
Я так и сделал, но не отображается!
Код вставляем:
<?php  
вот сюда
?>
И убираем комментирование, палочки // т.е. должно получится так:
echo "Просмотрено: $stats->hits<br/>";
*

andrew_puma

  • Захожу иногда
  • 21
  • 0
Отлично, заработало.
Теперь осталось вставить в таблицу товаров в админке, сегодня буду пилить.
*

Jukov

  • Осваиваюсь на форуме
  • 98
  • 1
Отлично, заработало.
Теперь осталось вставить в таблицу товаров в админке, сегодня буду пилить.
Найдешь решение отпишись, может тоже сделаю. Сейчас хочу вывести количество просмотров товара в категорию, пока без результата.
*

Jukov

  • Осваиваюсь на форуме
  • 98
  • 1
Решение для того что бы количество просмотров отображалось в категории товаров:
1) Открываем файл templates\ВАШ ШАБЛОН\html\com_virtuemart\category\default.php, если нету то файл \components\com_virtuemart\views\category\tmpl\default.php
2) Выбираем место где хотим что бы отображалось
3) Вставляем код вывода:
Код
<div>
<?php
$db =& JFactory::getDBO();
$query = 'SELECT IFNULL(hits, 0) as hits FROM #__prod_viewing_stats WHERE product_id="'.$product->virtuemart_product_id.'"';
$db->setQuery($query);
$stats = $db->loadObject();
echo $stats ? ('Просмотров '. $stats->hits . ''): 'Просмотров нет';
unset($db);
  ?>
</div>
4) Сохраняем и проверяем.
*

Jukov

  • Осваиваюсь на форуме
  • 98
  • 1
Всем привет!
И у меня теперь задача:
Сделать Сортировку по количеству просмотров, ну или По популярности!?
Кто ни будь сталкивался с похожим вопросом?
*

borro

  • Живу я здесь
  • 1281
  • 21
  • желаю вам счастья
Всем привет!
И у меня теперь задача:
Сделать Сортировку по количеству просмотров, ну или По популярности!?
Кто ни будь сталкивался с похожим вопросом?
можете построить sql-запрос и вывести в эксель, если не надо сразу в админке так сортировать :)
*

Jukov

  • Осваиваюсь на форуме
  • 98
  • 1
можете построить sql-запрос и вывести в эксель, если не надо сразу в админке так сортировать :)
Нет, нет, мне нужно это сделать на сайте, в категории магазина (на странице с товарами). В самой сортировке. Сортировать по: ....
*

Jukov

  • Осваиваюсь на форуме
  • 98
  • 1
И все же, вопрос остается открытым:
Сделать сортировку по количеству просмотров товара, в категории товаров?
« Последнее редактирование: 06.10.2015, 06:33:11 от Jukov »
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Перечисление товаров на странице категорий

Автор Masha0701

Ответов: 0
Просмотров: 50
Последний ответ 24.07.2017, 12:21:54
от Masha0701
[Решено] Список товаров на главной VirtueMart

Автор vitoxa_ya

Ответов: 5
Просмотров: 5892
Последний ответ 20.07.2017, 16:46:29
от LZD
Вывод описания категории товаров модуле VirtueMart Товары

Автор Marcello

Ответов: 1
Просмотров: 94
Последний ответ 09.07.2017, 14:08:26
от Marcello
Как обнулить или выставить всегда кол-во "0" зарезервированных товаров на складе?

Автор One

Ответов: 1
Просмотров: 95
Последний ответ 15.06.2017, 08:21:13
от One
VirtueMart 3 Кнопка "В корзину" в категории товаров

Автор banditman

Ответов: 1
Просмотров: 161
Последний ответ 06.03.2017, 19:35:12
от banditman