Добрый день всем! Може кто то подскажет: Статистика сайта в админке показывает посетителей онлайн на сайте 500 человек. Это значит что сейчас сайт смотрят 500 человек? Я прав? Если да, то почему в статистике Яндекса показывается кординально другая цифра посетителей? Или я в чем то ошибаюсь? Подскажите пожалуйста.
Скорее всего он так же учитывает различных ботов, которые индексируют ваш сайт, Яндекс как правило их посещения не учитывает.
На практике все пользуются либо яндекс метрикой либо google search console, а этот встроенный счетчик просто отключают.
Можно добавить что то типо такого, снизит левые запросы: PHP: $isNotBot = true;if (isset($this->request->server['HTTP_USER_AGENT'])) { $userAgent = strtolower($this->request->server['HTTP_USER_AGENT']); $bots = [ 'googlebot', 'bingbot', 'slurp', 'duckduckbot', 'baiduspider', 'yandexbot', 'sogou', 'exabot', 'facebot', 'ia_archiver', 'mj12bot', 'ahrefsbot', 'semrushbot', 'dotbot', 'msnbot', 'rogerbot', 'linkdexbot', 'yahoo', 'siteexplorer', 'facebookexternalhit', 'linkedinbot', 'twitterbot', 'embedly', 'quora link preview', 'showyoubot', 'outbrain', 'pinterest', 'slackbot', 'vkshare', 'w3c_validator', 'whatsapp', 'curl', 'wget', 'python', 'libwww-perl', 'httpclient', 'java', 'wordpress', 'joomla', 'drupal', 'node-fetch', 'ruby' ]; // Если User-Agent содержит ключевые слова для ботов, игнорируем foreach ($bots as $bot) { if (str_contains($userAgent, $bot)) { $isNotBot = false; } }}if ($isNotBot) { $this->model_tool_online->addOnline($ip, $this->customer->getId(), $url, $referer);}
"upload/catalog/controller/common/footer.php" - контроллер отвечающий за вывод подвала сайта. Данный вызов как раз таки отвечает за добавлении сессии в статистику. PHP: $this->model_tool_online->addOnline($ip, $this->customer->getId(), $url, $referer); Функция str_contains действительно способна положить старые сайты, так как добавлена с 8 версии PHP. Вот улучшенный вариант проверки, который будет работать на динозаврах, а если не динозавр, то более новая функция: PHP: if ((function_exists('str_contains') && str_contains($userAgent, $bot)) || (!function_exists('str_contains') && strpos($userAgent, $bot) === false)) { $isNotBot = true;}
Будет. Если функции чуть отличается по версиями, то что у вас добавляет статистику нужно поставить в условие if ($isNotBot) Если что всегда список ботов можно будет подправить. Кстати говоря прямо в самой админке есть список ботов, можно по идее достать их, тоже через вызов модели, но это лишний запрос...
Код: ?route=setting/setting&user_token=.... Система -> Настройки - Выберите ваш магазин (редактировать) -> Вкладка Сервер, раздел основное
То, главное найти в настройках магазина. Нет, данный функционал не блокирует работу ботов на сайте, так-же стараясь исключить ботов из онлайн статистика сайта.
Сейчас заметил у меня товары по акциям добавляются не по дате добавления, Может подскажите это можно поправить?