Периодически не срабатывает плагин OnLoadWebDocume
Доброго времени суток!
Возникла такая проблема: потребовалась мне подмена шаблона и выводимого контента в зависимости от домена сайта (не через контексты — это важно).
Реализовал выдачу одностраничников с одной базы modx, путем подмены шаблона в плагине OnLoadWebDocument, но периодически этот плагин не отрабатывает.
Может кто сталкивался и может подсказать как это лечится?
Возникла такая проблема: потребовалась мне подмена шаблона и выводимого контента в зависимости от домена сайта (не через контексты — это важно).
Реализовал выдачу одностраничников с одной базы modx, путем подмены шаблона в плагине OnLoadWebDocument, но периодически этот плагин не отрабатывает.
Может кто сталкивался и может подсказать как это лечится?
<?php
$id = $modx->resource->get('id');
if($modx->event->name == 'OnLoadWebDocument' && !in_array($id,array(3,4))){//3,4 - это страницы роботса и sitemap
$domain = $_SERVER['HTTP_HOST'];
$data = "SELECT contentid FROM base_site_tmplvar_contentvalues WHERE tmplvarid = 1 AND value = '$domain'";
$q = $modx->prepare($data);
$q->execute();
$val = $q->fetchAll(PDO::FETCH_ASSOC);// получаем id ресурса соответствующего домену
if(count($val)!=0){
$RESID = $val[0]['contentid'];
$modx->resource->setTVvalue('resid',$RESID);
$res = $modx->getObject('modResource',$RESID);//
$template = $res->get('template');// сохраним id нужного ресурса для вызова в шаблонах
$modx->resource->set('template', $template);//задаем шаблон вывода
}
}
Проблема вряд ли в коде плагина, как я понимаю он просто не отрабатывает Комментарии: 4
если нужно только шаблон подменять, то зачем вот это?
$modx->resource->setTVvalue('resid',$RESID);
тут я сохраняю id ресурса, контент которого в дальнейшем буду выводить, т.к. на одном шаблоне может быть несколько разных одностраничников, а дальше в шаблоне вывожу типа:
<h1>[[#[[*resid]].pagetitle]]</h1>
[[#[[*resid]].tv.gallery]]
это удобно
делайте страницу некешируемой
$modx->resource->set('cacheable', 0);
короче данный метод сохранения номера в тв не эфективен: при переключении между разными доменами во время первого вызова остается контент предыдушего домена, вариант с плейсхолдером работает как надо
$modx->setPlaceholder('resid', $RESID);
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.