Поддомены для пользователей

Просмотрел сегодня код 0.4.1 и так и не догнал как правильно сделать поддомены для пользователей. То есть как понятно с переписанным Router, но не хочется нарушать идеологию движка. Хочется, чтобы было через плагин.
Мои мысли свелись к этому:
Делаем планиг, вешаем хук, допустим на init_action, в функции которую запустит хук разбираем $_SERVER['HTTP_HOST']. Если обращение идет с поддомена, смотрим какой евент запрашивается, подстраиваем под себя и вызывает каким-то хитрым способом Router::action() с нужными нам параметрами. Все остальное сделает движок. Вопрос в том, как правильно запустить Router::Action(), с учетом того, что его надо запускать из модуля или из акшена.
Была мысль сделать через переопределение нужной функции init в акшене, но inherits надо определять сразу в классе плагина, и динамически подстроить нужный вызов не получится. Поэтому дальше не стал копать.
Или я вообще неправильно понял всю идеологию? =)
UPD 1
Теоретически можно еще в конфиге плагина, если обращение с поддомена, дать правило роуту на несуществующий action + задать по-умолчанию нужный нам, но мне кажется это не очень правильно.

8 комментариев

avatar
посмотри как подменяет экшен плагин OpenID
  • ort
  • 0
avatar
Ну я до такого тоже доходил.

$sUserLogin = $aHttpHost[0];
if (Router::GetAction() == 'index') {
    Router::Action('my', $sUserLogin);
}

Все нормально выводится, не считая того, то еще появляются на странице топиков пользователя все блоки с главной страницы (прямой эфир, блоги, облако тегов)
avatar
конфиг блоков придется переопределять
проблема из-за того, что сейчас блоки не поддерживают динамических евентов, поэтому приходиться описывать их через полные пути и появляется зависимость от $sPathWebCurrent. В след версиях сделаем поддержку определения блоков через метод евента
avatar
не поддерживают динамических евентов
вернее поддерживает, но только евенты без параметров
avatar
Тогда в принципе все понятно, спасибо за подсказку =)
avatar
А можно ли написать полную инструкцию для всех, кто хочет работать с поддоменами?
avatar
А у Вас не возникало проблем с прямым эфиром на поддоменах? Думаю проблема с сессиями\куками но все равно не получается.
include/ajax/stream_topic.php выдает:
top && top.JsHttpRequestGlobal && top.JsHttpRequestGlobal.dataReady({"id":"12855942290242","js":null,"text":"Hacking attemp!"})

PHPSESSID на поддоменах разный и незнаю как это побороть.
Ваш плагин тоже будет платным?
Я пока через прямое копание в коде сделал, благо всего тремя строчками отделался.
  • GCoda
  • 0
avatar
Плагин поддоменов давно готов и работает. В паблик он не пойдет, т.к. слишком специфичен и делался под себя.
Что касается вашей проблемы, то куку можно ставить и на поддомены главного домена. А прямой эфир скорее всего у вас не работает, т.к. аякс запросы идут на домен отличный от текущего, чего делать нельзя.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.