Как не кэшировать плейсхолдер?

Всем доброго дня. Хочу сделать плагин для определения мобильных устройств и результат вывести в плейсхолдер:

$mobile=0;
$mobile_agent_array = array('ipad', 'iphone', 'android', 'pocket', 'palm', 'windows ce', 'windowsce', 'cellphone', 'opera mobi', 'ipod', 'small', 'sharp', 'sonyericsson', 'symbian', 'opera mini', 'nokia', 'htc_', 'samsung', 'motorola', 'smartphone', 'blackberry', 'playstation portable', 'tablet browser');
$agent = strtolower($_SERVER['HTTP_USER_AGENT']); 
foreach ($mobile_agent_array as $value) {
	if (strpos($agent, $value) !== false)
	{
	    $mobile=1;
	}
}
$modx->setPlaceholder('mobile',$mobile);
return;
Привязываю к событию OnWebPageInit. Проблема в том, что результат кэшируется — с какого устройства первым зашёл, такое и остаётся до очистки кэша. Как можно побороть?
Евгений Ц.
24 сентября 2019, 13:27
modx.pro
682
0

Комментарии: 4

vectorserver
24 сентября 2019, 13:55
0
[[+mobile]] — кешируемый
[[!+mobile]] — не кешируемый
    Евгений Ц.
    24 сентября 2019, 13:59
    0
    Спасибо! Я думал "!" только к сниппетам применим. Я еще одно решение нашёл — привязал плагин к событию OnLoadWebPageCache.
      vectorserver
      24 сентября 2019, 14:05
      0
      OnLoadWebPageCache — Запускается при загрузке ресурса из кэша.
      А если страница не закешена?
    Евгений Ц.
    24 сентября 2019, 14:07
    0
    Тоже об этом подумал, хотел к 2-м событиям привязать, но восклицательный знак всё же проще.
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      4