Как не кэшировать плейсхолдер?
Всем доброго дня. Хочу сделать плагин для определения мобильных устройств и результат вывести в плейсхолдер:
$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. Проблема в том, что результат кэшируется — с какого устройства первым зашёл, такое и остаётся до очистки кэша. Как можно побороть? Комментарии: 4
[[+mobile]] — кешируемый
[[!+mobile]] — не кешируемый
[[!+mobile]] — не кешируемый
Спасибо! Я думал "!" только к сниппетам применим. Я еще одно решение нашёл — привязал плагин к событию OnLoadWebPageCache.
OnLoadWebPageCache — Запускается при загрузке ресурса из кэша.
А если страница не закешена?
А если страница не закешена?
Тоже об этом подумал, хотел к 2-м событиям привязать, но восклицательный знак всё же проще.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.