Posted 9 июляJul 9 comment_207553 {{if }} {{endif}} Как в шаблонных условиях прописать, узнать является текущий посетитель поисковым ботом или нет. Вроде в php есть функция useragent, по которой возможно узнать браузер и тп. И если в строчке присутствует 'bot'. То есть если есть вхождения, тогда в данный момент возможно узнать что текущую страницу подгрузил бот.
9 июляJul 9 comment_207576 В режиме разработчика в плагинах создаем такой хук не шаблона (не помню как он называется) и выбираем там класс \IPS\core\modules\front\system\plugins В этом хуке создаем метод класса: public function isBot() { $userAgent = $_SERVER['HTTP_USER_AGENT']; $bots = [ 'Googlebot', 'Bingbot', 'Slurp', 'DuckDuckBot', 'Baiduspider', 'YandexBot', 'Sogou', 'Exabot', 'facebot', 'ia_archiver', 'Twitterbot', 'facebookexternalhit', // Добавьте другие строки, которые могут быть в юзер-агентах ботов ]; foreach ($bots as $bot) { if (stripos($userAgent, $bot) !== false) { return true; } } return false; } public function getBotName() { // добавьте тут вывод имени поискового бота по аналогии с методом выше return $bot; } В шаблоне: {{$plugins = new \IPS\core\modules\front\system\plugins;}} {{if ($plugins->isBot())}} <p>Это бот: {{$plugins->getBotName();}}</p> {{endif}}
9 июляJul 9 comment_207578 7 часов назад, Zuldek199 сказал: И если в строчке присутствует 'bot' а вот насчет этого хочу предупредить. Любой пользователь может писать в юзер агент все что угодно. В том числе html и js код. Поэтому не должно быть никаких проверок на bot и прочих универсальных решений. Все боты должны быть четко прописаны и все имена ботов для вывода на страницу должны быть храниться на сервере. Если найдено совпадение в юзерагенте - вывести имя бота из своего списка. Строки и подстроки из юзерагента выводить категорически запрещено. Даже если вы запретите спецсимволы чтобы предотвратить вывод кода, посетитель может засунуть туда просто 100500 символов и они отобразятся на странице.
10 июляJul 10 comment_207585 17 часов назад, Zuldek199 сказал: {{if }} {{endif}} Как в шаблонных условиях прописать, узнать является текущий посетитель поисковым ботом или нет. Вроде в php есть функция useragent, по которой возможно узнать браузер и тп. И если в строчке присутствует 'bot'. То есть если есть вхождения, тогда в данный момент возможно узнать что текущую страницу подгрузил бот. самый простой вариант методом ips {{if \IPS\Http\UserAgent::parse()->spider}} ты спидер {{endif}} но там мало ботов, для добавления регулярок нужно расширять $searchEngineUseragents в \IPS\Http\UserAgent
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.