Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
<?php
if($modx->context->key!="mgr")
{
$contexts = $modx->getCollection('modContext');
foreach($contexts as $context)
{
$currentContextSettings = $modx->getCollection('modContextSetting', array('context_key' => $context->get("key")));
$multisiteHttpHost=NULL;
foreach($currentContextSettings as $currentContextSetting)
{
if($currentContextSetting->get('key')=="multisite_http_host")
{
$multisiteHttpHost=$currentContextSetting->get('value');
break;
}
}
if($multisiteHttpHost!=NULL && $modx->getOption('http_host')==$multisiteHttpHost)
{
$modx->switchContext($context->get("key"));
break;
}
}
}
$object = $modx->getObject('modContextSetting', array('key' = 'multisite_http_host', 'value' = $modx->getOption('http_host')));
if ($object) $context = $object->get('context');
<?php
if($modx->context->key!="mgr")
{
$object = $modx->getObject('modContextSetting', array('key' => 'multisite_http_host', 'value' => $modx->getOption('http_host')));
if ($object) $modx->switchContext($object->get('context_key'));
}
domain.ru/ru/
domain.ru/en/
sub1.domain.ru
sub2.domain.ru
, то все делается простейшим плагином:<?php
if ($modx->context->get('key') == 'mgr') {return;}
if (strstr($_SERVER['HTTP_HOST'], 'sub2.domain.ru') != false) {
$modx->switchContext('sub2');
}
if ($modx->event->name == 'OnHandleRequest') {
if ($modx->context->get('key') == 'mgr') {return;}
if (preg_match('/^\/en/i', $_SERVER['REQUEST_URI']) {
$modx->switchContext('en');
$context = 'en';
$uri = preg_replace('/^\/en\//i', '', $_SERVER['REQUEST_URI']);
}
else {
$context = 'web';
$uri = preg_replace('/^\/ru\//i', '', $_SERVER['REQUEST_URI']);
}
if ($res = $modx->getObject('modResource', array('context_key' => $context, 'uri' => $uri))) {
$modx->sendForward($res->get('id'));
}
}
Как я воевал с контекстами