Региональный сайт слетают стили и скрипты

Добрый день, есть региональный сайт на пару десятков городов, города реализованы через контексты, для переключения контекстов использую плагин:
<?php
// Работаем только на фронтенде и только с friendly urls
if ($modx->event->name != 'OnHandleRequest' || $modx->context->key == 'mgr' || !$modx->getOption('friendly_urls')) {return;}
 
// Получаем запрашиваемый url
$alias = $modx->getOption('request_param_alias', null, 'alias', true);
$request = &$_REQUEST[$alias];
 
// Выбираем контексты с настройкой base_url
$q = $modx->newQuery('modContextSetting', array('key' => 'base_url', 'value:!=' => ''));
$q->select('context_key,value');
 
$contexts = array();
$tstart = microtime(true);
if ($q->prepare() && $q->stmt->execute()) {
    // Учитываем наш запрос в БД
    $modx->queryTime += microtime(true) - $tstart;
    $modx->executedQueries++;
    // Разбираем результаты
    while ($row = $q->stmt->fetch(PDO::FETCH_ASSOC)) {
        $base_url = trim($row['value'], '/');
        $context = $row['context_key'];
        // Если запрос начинается с base_url какого-то контекста
        if (preg_match('/^('.$base_url.')\//i', $request)) {
            // То переключаемся на этот контекст
            // Web инициализируется в index.php - на него переключаться не нужно
            if ($context != 'web') {
                $modx->switchContext($context);
            }
            // Вырезаем base_url из запроса, чтобы MODX нашел ресурс по uri
            $request = preg_replace('/^'.$base_url.'\//', '', $request);
            // Дело сделано - выходим из цикла
            break;
        }
    }
}
Проблема в том, что при переключении контекстов слетают все стили, скрипты и картинки, так как путь к папке assets подставляется с url контектса, подскажите, как мне перенаправить все запросы на эту папку так, чтобы все отображалось?
Виктор Лобанов
28 июня 2018, 09:07
modx.pro
1
1 062
0

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

SEQUEL.ONE
28 июня 2018, 18:59
0
Можно попробовать прописать в шаблонах между
<head>...</head>
URL статично в base:
<base href="https://site.ru/"></base>
Я уже подобное делал, но у меня языковые версии сайта на контекстах. Вообщем с base шаманить надо. Буду у компа посмотрю как реализовано.
    Максим
    28 июня 2018, 22:08
    0
    Кроме base еще и .htaccess есть! Про него тоже забывать не стоит!
      SEQUEL.ONE
      30 июня 2018, 15:23
      0
      Точно, у меня в .htaccess добавлено следующее:

      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^(de|en)/favicon.ico$ favicon.ico [L,QSA]
      
      RewriteCond %{REQUEST_FILENAME} !-d
      RewriteCond %{REQUEST_FILENAME} !-f
      RewriteRule ^(de|en)/assets(.*)$ assets$2 [L,QSA]
      В base стоит:

      <base href="{$_modx->config.site_url}" />
      Всё пашет)
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      3