Периодически не срабатывает плагин OnLoadWebDocume

Доброго времени суток!
Возникла такая проблема: потребовалась мне подмена шаблона и выводимого контента в зависимости от домена сайта (не через контексты — это важно).
Реализовал выдачу одностраничников с одной базы 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);//задаем шаблон вывода
    }
}
Проблема вряд ли в коде плагина, как я понимаю он просто не отрабатывает
Арсений
21 сентября 2017, 09:36
modx.pro
892
0

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

Артем
21 сентября 2017, 14:29
0
если нужно только шаблон подменять, то зачем вот это?
$modx->resource->setTVvalue('resid',$RESID);
    Арсений
    21 сентября 2017, 14:33
    0
    тут я сохраняю id ресурса, контент которого в дальнейшем буду выводить, т.к. на одном шаблоне может быть несколько разных одностраничников, а дальше в шаблоне вывожу типа:
    <h1>[[#[[*resid]].pagetitle]]</h1>
    [[#[[*resid]].tv.gallery]]
    это удобно
      Артем
      21 сентября 2017, 14:38
      0
      делайте страницу некешируемой
      $modx->resource->set('cacheable', 0);
      Арсений
      21 сентября 2017, 15:44
      0
      короче данный метод сохранения номера в тв не эфективен: при переключении между разными доменами во время первого вызова остается контент предыдушего домена, вариант с плейсхолдером работает как надо
      $modx->setPlaceholder('resid', $RESID);
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      4