Инструменты пользователя

Инструменты сайта


eaze:sites.xml

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следущая версия
Предыдущая версия
eaze:sites.xml [2011/09/11 23:50]
sergeyfast создано
eaze:sites.xml [2012/12/13 22:20] (текущий)
sergeyfast
Строка 9: Строка 9:
  
 Сайт определяется путем xpath запроса к скомпилированному файлу sites.xml (с учетом наследований и переопределений),​ в котором указаны текущие hostname, webroot, port и protocol. Если сайт не определился,​ то на экране вы увидите ошибку 501 Not Implemented. Если сайт определился,​ то происходит инициализация pages.xml и обработка текущего url. Сайт определяется путем xpath запроса к скомпилированному файлу sites.xml (с учетом наследований и переопределений),​ в котором указаны текущие hostname, webroot, port и protocol. Если сайт не определился,​ то на экране вы увидите ошибку 501 Not Implemented. Если сайт определился,​ то происходит инициализация pages.xml и обработка текущего url.
 +
 +===== Описание настроек сайтов =====
 +<code xml>
 +<​sites>​
 +    <!-- Site Description ​
 +        @name: site name, required
 +        @extends: extends settings from existing site
 +    -->
 +    <site name="" ​  ​extends="">​
 +        <!-- Site Settings -->
 +        <​settings>​
 +            <!-- Paths Settings --> ​   ​
 +            <​paths>​
 +                <!-- Path
 +                    @name: the virtual path name, required
 +                    @value: the relative path, required
 +                -->
 +                <path name=""​ value=""​ />
 +            </​paths>​
 +            <!-- System modules Settings -->
 +            <​modules>​
 +                <​errorReporting />
 +                <​localization />
 +                <​mailFactory />
 +            </​modules>​
 +            <!-- Database Settings -->
 +            <​databases>​
 +                <!-- Database
 +                    @name: database alias, required, default is "​default", ​
 +                           must be default or empty if one database is selected
 +                    @driver: database type, required (pgsql|mysql)
 +                -->
 +                <​database name=""​ driver="">​
 +                    <!-- Database name, required -->
 +                    <name />
 +                    <!-- Database username, required -->
 +                    <user />
 +                    <!-- Database password, default is emptu-->
 +                    <​password />
 +                    <!-- Database hostname, default is localhost-->​
 +                    <​hostname />
 +                </​database>​
 +            </​databases>​
 +        </​settings>​
 +        <!-- Hosts Settings -->
 +        <​hosts>​
 +            <!-- Host
 +                name: host alias, required
 +            -->
 +            <host name="">​
 +                <!-- Host address, 1 hostname required (multiple support) -->
 +                <​hostname></​hostname>​
 +                <​hostname></​hostname>​
 +                <​hostname></​hostname>​
 +                <​hostname></​hostname>​
 +                <!-- Host port, default is 80 -->
 +                <​port></​port>​
 +                <!-- Host protocol, default is http -->
 +                <​protocol></​protocol>​
 +                <!-- Host webroot, default is null-->
 +                <​webroot></​webroot>​
 +                <!-- Host by default, default is false -->
 +                <​default></​default>​
 +                <!-- Overrided settings from main "site settings"​ section
 +                TODO: autocopy from main site settings and merge with overrided ​
 +                settings (like dublicate settings for every host if overrided settings isn't empty )
 +                -->
 +                <​settings>​
 +                    <​databases>​
 +                        <​database name="​whoopass"​ driver="">​
 +                            <​name>​whooapss_devel</​name>​
 +                        </​database>​
 +                    </​databases>​
 +                </​settings>​
 +            </​host>​
 +        </​hosts>​
 +    </​site>​
 +</​sites>​
 +</​code>​
 +
 +===== Глобальный обработчик для неопределенного сайта =====
 +Иногда задача стоит таким образом,​ что без использования поддоменов не обойтись,​ например обработка <​username>​.mysite.ru
 +Если в теге <​hostname>​ будет стоят символ *, то возьмется именно он, если больше подходящих нет. ​
 +Помните,​ что * может использоваться только один раз и только в самом конце файла sites.xml.
 +
 +Рассмотрим пример обработки таких ситуаций:​
 +
 +<code xml> ​
 +<host name="​any">​
 +    <​hostname>​*</​hostname>​
 +    <​settings>​
 +        <​modules>​
 +            <​anySiteManager class="​AnySiteManager"​ />
 +        </​modules>​
 +    </​settings>​
 +</​host>​
 +</​code>​
 +
 +В модуле AnySiteManager можно переопределить текущее соединение с БД по умолчанию или, скажем,​ некоторые пути.
 +<code php>
 +<?php
 +    class AnySiteManager {
 +
 +        public static function Init( DOMNodeList $params ) {
 +            if ( ConnectionFactory::​Remove() ) {
 +                ConnectionFactory::​Add( array(
 +                    '​driver' ​  => '​MySql'​
 +                    , '​dbname'​ => '​default_connection'​
 +                ));
 +            }
 +
 +            Site::​$Paths['​daemons://'​] = '/​int/​mydaemons/​daemons';​
 +        }
 +    }
 +?>
 +</​code>​
 +
 +===== Поддержка поддоменов *.hostname =====
 +Работает аналогично глобальному обработчику для неопределенного сайта, только с поддержкой поддоменов.
 +
 +Можно использовать как: *.test.site.ru или *.site.ru, главное соблюдать последовательность в sites.xml.
 +
  
eaze/sites.xml.1315770657.txt.gz · Последние изменения: 2011/09/11 23:50 — sergeyfast