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

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


eaze:pages.xml

Различия

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

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

Следущая версия
Предыдущая версия
eaze:pages.xml [2011/09/11 23:51]
sergeyfast создано
eaze:pages.xml [2012/04/01 22:24] (текущий)
sergeyfast
Строка 5: Строка 5:
 Правила выполняются последовательно. Если первым идет правило с регулярным выражением “(.*)”, а вторым – “/”, то второе правило никогда не выполнится,​ так как его перекрывает первое. Правила выполняются последовательно. Если первым идет правило с регулярным выражением “(.*)”, а вторым – “/”, то второе правило никогда не выполнится,​ так как его перекрывает первое.
  
-Для удобства правила можно определять в группы. А в группах определять глобальные действия до и после обработки url по найденному правилу. ​+Для удобства правила можно определять в группы. А в группах определять глобальные действия до (атрибут **//​boot//​**) ​и после ​(атрибут **//​shutdown//​**) ​обработки url по найденному правилу. ​
  
 +===== Описание файла =====
 +<code xml>
 +<​sites>​
 +    <!-- Site Pages
 +        name: site name, required
 +    -->
 +    <site name="">​
 +        <!-- Pages Mapping -->
 +        <​pages>​
 +            <!-- Page Group. ​
 +                You can combine pages into pageGroups
 +                name: pagegroup name, default is empty
 +                boot: following actions (comma separated) will be loaded before actions list, default is empty
 +                shutdown: following actions (comma separated) will be loaded after actions list, default is empty
 +            -->
 +            <​pageGroup boot=""​ shutdown="">​
 +                <!-- Page Settings
 +                    @uri: regexp url, required
 +                    @boot: overrided parameter from pageGroup
 +                    @shutdown: overrided parameter from pageGroup ​
 +                -->
 +                <page uri=""​ boot=""​ shutdown="">​
 +                    <!-- Comma separated actions list -->
 +                    <​actions></​actions>​
 +                    <!-- Template virtual path -->
 +                    <​template></​template>​
 +                </​page> ​   ​
 +            </​pageGroup>​
 +            ​
 +            <!-- Page Settings
 +                @uri: regexp url, required
 +                @boot: overrided parameter from pageGroup
 +                @shutdown: overrided parameter from pageGroup ​
 +            -->
 +            <page uri=""​ boot=""​ shutdown="">​
 +                <!-- Comma separated actions list -->
 +                <​actions></​actions>​
 +                <!-- Template virtual path -->
 +                <​template></​template>​
 +            </​page> ​   ​
 +        </​pages>​
 +        ​
 +        <!-- Optional hosts config -->
 +        <​hosts> ​   ​
 +            <host name="​whoopass">​
 +                <!-- Virtual Actions -->
 +                <​virtualActions>​
 +                    <!-- Virtual Action
 +                        @name: current action name
 +                        value: new action name
 +                    -->
 +                    <action name="​5uglov.Users.CheckLogin">​5uglov.Users.CheckLogin_Sergeyfast</​action>​
 +                </​virtualActions>​
 +            </​host>​
 +        </​hosts>​
 +    </​site>​
 +</​sites>​
 +</​code>​
 +
 +
 +===== Виртуальные экшены и цепочки вызовов =====
 +
 +Появилась поддержка цепочек вызовов экшенов (можно переопределять для разных хостов — это слегка модифицированные virtualActions).
 +
 +==== Пример конфига ====
 +<code xml>
 +<​sites>​
 +    <site name="​Project">​
 +        <​hosts>​
 +            <host name="​*">​
 +                <action name="​Chains.GetCommonBlocks">​Project.Site.GetLastNews,​ Project.Site.GetRandPerson,​ Project.Site.ProcessDelayedItems</​action>​
 +            </​host>​
 +        </​hosts>​
 +        <​pages>​
 +            <page uri="/"​ boot="​Chains.GetCommonBlocks,​ Project.Site.Test">​
 +        </​pages>​
 +    </​site>​
 +</​sites> ​
 +</​code>​
 +
 +
 +===== Препроцессинг статических методов,​ свойств и констант в pages.xml =====
 +
 +Иногда хочется избавиться от хардкода урлов в pages.xml. В trunk появилась возможность в атрибуте ''​uri''​ тега ''​page''​ использовать статические методы,​ свойства или константы.
 +
 +  Но не стоит увлекаться таким вариантом. Это понижает читаемость кода.
 +
 +Механизм работы следующий. При при изменении содержания ''​pages.xml''​ создается новая кешированная версии ''​pages.xml''​ в папке ''​cache''​. В момент создания этого кешированной версии происходит замена соответствующих конструкций на результат их выполнения. В uri могут быть следующие варианты
 +
 +<code xml>
 +<page uri="/​{PageManagerTest::​UrlPrefix}/"​ />
 +<page uri="/​{PageManagerTest::​$UrlPrefix}/"​ />
 +<page uri="/​{PageManagerTest::​UrlPrefix()}"​ />
 +<page uri="/​{PageManagerTest::​UrlPrefix()}/​{PageManagerTest::​UrlPrefix}/​combined/​{2}/"​ />
 +</​code>​
 +
 +Где ''​PageManagerTest::​UrlPrefix''​ - константа,​ ''​$UrlPrefix''​ - статическое свойство,​ ''​UrlPrefix()''​ - статический метод.
 +
 +Данный метод не работает на страницах с ошибками (404.xml, 403.xml и т.д.).
eaze/pages.xml.1315770712.txt.gz · Последние изменения: 2011/09/11 23:51 — sergeyfast