Пишем сайты в два экшена
by shuler
Я написал два экшена, которые запарился писать каждый раз в новом проекте. Под проектом понимается как-нибудь простенький сайт.
Примеры
Пример №1. Нужно получить 2 последние новости на главной странице
<action name="GetLastNews"><path>GetObjectList</path>
<parameters>
<request>
<param name="gol_UsePages">"false"</param>
<param name="gol_Class">"News"</param>
<param name="gol_Objects">"news"</param>
<param name="gol_PageSize">2</param>
</request>
</parameters>
</action>
Пример №2. Нужно сделать постраничный вывод новостей с обработкой номера страницы
<action name="GetNews">
<path>GetObjectList</path>
<parameters>
<request>
<param name="gol_UsePages">"true"</param>
<param name="gol_Class">"News"</param>
<param name="gol_Objects">"news"</param>
<param name="gol_PageSize">5</param>
</request>
</parameters>
<redirects>
<redirect name="outOfRange" path="/news/" />
</redirects>
</action>
Пример №3. Получить новость по ее Id в урле. Помимо новости — все ее листы. Сделать редирект, если новости нет
<action name="GetNewsItem">
<path>GetObjectItem</path>
<parameters>
<request>
<param name="goi_Search">array('newsId' => Page::$RequestData[1])</param>
<param name="goi_Options">array(OPTION_WITH_LISTS => true)</param>
<param name="goi_Class">"News"</param>
<param name="goi_Object">"newsItem"</param>
</request>
</parameters>
<redirects>
<redirect name="empty" path="/news/" />
</redirects>
</action>
GetObjectList
Описание параметров
gol_Search — массив поиска, который подставляется в Factory::Get().
gol_Options — массив опций, который подставляется в Factory::Get().
В этом массиве не нужно указывать значение для опции OPTION_WITHOUT_PAGES, она управляется автоматически. Пример:
array(OPTION_WITH_LISTS => true)
gol_UsePages — задает режим работы экшена. Если задано «true», то выборка будет осуществляться постранично с учетом размера страницы.
gol_PageSize — кол-во объектов на одну страницу. Параметр может использоваться для любых значений параметра gol_UsePages.
gol_Class — название класса объекта. Если вы хотите использовать NewsFatory, надо поставить значение 'News';
gol_Objects — имя переменной для полученных данных в шаблоне
Описание редиректов
Описание возвращаемых данных (только в случае значения gol_UsePages = «true»)
__pageNumber — номер текущей страницы
__pageCount — кол-во возможных страниц для заданных параметров
__objectsCount — кол-во объектов для заданных параметров
GetObjectItem
Описание параметров
goi_Search — аналогично gol_Search
goi_Options — аналогично gol_Options
goi_Class — аналогично gol_Class
goi_Object — аналогично gol_Objects
Описание редиректов
Общие замечания
Редиректы описывать необязательно. При его отсутствии в параметрах action просто ничего не вернет.
Строковые параметры надо передавать в кавычках.
Обязательными параметрами для GetObjectItem являются goi_Class и goi_Object.
Обязательными параметрами для GetObjectList являются gol_Class и gol_Objects.
При выставленном gol_UsePages «true» параметр gol_PageSize обязателен.