Skip to content
CrawlerDetect
Определение веб-краулеров по User-Agent и защита форм от спама без CAPTCHA
  1. Компоненты
  2. CrawlerDetect
  3. Сниппеты
  4. isCrawler

Сниппет isCrawler

Определяет, является ли текущий посетитель ботом (веб-краулером) по заголовку User-Agent. Используется для условного вывода контента или счётчиков.

Возвращает: "1" (бот) или "0" (не бот).

Важно: вызывайте без кэша — [[!isCrawler]] (MODX) или через $modx->runSnippet('isCrawler', []) (Fenom). Иначе результат будет закэширован и не будет соответствовать текущему посетителю.

Параметры

ПараметрОписаниеПо умолчанию
userAgentСтрока User-Agent для проверки (если пусто — из текущего запроса)
placeholderPrefixПрефикс плейсхолдера для имени обнаруженного ботаcrawlerdetect.

При обнаружении бота, в плейсхолдер crawlerdetect.matches (или с вашим префиксом) записывается имя бота (например, Googlebot) — полезно для отладки.

Примеры

Показать виджет только людям

modx
[[!isCrawler:eq=`0`:then=`[[$chatWidget]]`]]
fenom
{if $modx->runSnippet('isCrawler', []) == '0'}
  {$modx->getChunk('chatWidget')}
{/if}

Не подключать аналитику ботам

modx
[[!isCrawler:eq=`0`:then=`[[$googleAnalytics]]`]]
fenom
{if $modx->runSnippet('isCrawler', []) == '0'}
  {$modx->getChunk('googleAnalytics')}
{/if}

Разный контент для бота и человека

modx
[[!isCrawler:eq=`0`:then=`[[$fullContent]]`:else=`[[$liteContent]]`]]
fenom
{set $isBot = $modx->runSnippet('isCrawler', [])}
{if $isBot == '0'}
  {$modx->getChunk('fullContent')}
{else}
  {$modx->getChunk('liteContent')}
{/if}

Отладка: какой бот обнаружен

modx
[[!isCrawler]]
[[+crawlerdetect.matches]]
fenom
{$modx->runSnippet('isCrawler', [])}
{if $modx->getPlaceholder('crawlerdetect.matches')}
  Бот: {$modx->getPlaceholder('crawlerdetect.matches')}
{/if}