Выше уже говорилось, что метод в XS2 состоит из двух элементов: шаблона и процессора. До сих мы использовали исключительно шаблоны, и настало время познакомится с процессором.
Если шаблон представляет собой смесь кода HTML с языком Smarty, то процессор - это обычный код на языке PHP. Важно помнить, что этот код выполняется до обработки и вывода шаблона, поэтому в нем можно готовить данные для дальнейшего вывода через шаблон. То, что процессор не является обязательной частью метода, мы уже успели убедиться - до сих пор мы создавали методы, состоящие только из шаблона. Однако и шаблон не является обязательной частью метода, он вполне может состоят исключительно из процессора. Таким образом, метод в XS2 может иметь следующую структуру:
процессор
процессор+шаблон
шаблон
В каких случаях необходимо использовать процессор? Процессор требуется в тех случаях, когда для вывода данных на странице необходимо произвести операции, которые невозможно, сложно или неудобно сделать средствами языка Smarty. PHP - полноценный язык программирования с огромным количеством полезных функций. Его использование в процессорах делает практически безграничным возможности расширения функциональности ваших методов.
Для знакомства с процессорами мы попробуем решить следующую задачу: необходимо сделать RSS-трансляцию новостей из модуля "Новости". Для этого мы создадим новый метод с именем "rss" и прикрепим его непосредственно к модулю "Новости". Напомним, что в Главе 2 мы прикрепляли метод "index" непосредственно к проекту, в Главе 3 - к типу "Новостное сообщение"; теперь же мы реализуем третий и последний вариант размещения метода - мы прикрепим его к модулю. Для этого в дереве проектов на пункте "Новости" необходимо щелкнуть правой кнопкой мыши и в появившемся контекстном меню выбрать пункт "Методы". В открывшемся справа пустом списке методов нажмите на кнопку "Добавить". В появившемся окне введем в поле "Название" значение "rss". Наш метод будет состоять из процессора и шаблона, поэтому на этот раз нужно будет указать пустые файлы с диска и в поле "Процессор", и в поле "Шаблон". Сохранив метод, мы можем приступить к написанию процессора.
Поскольку мы делаем метод, который будет показывать данные в формате XML (RSS - это подмножество языка XML), а не HTML, нам необходимо отправить в браузер заголовок, который сообщил бы, что отсылаемые с сервера данные содержат XML. Для этого мы можем воспользоваться функцией PHP header() и написать в процессоре следующее:
Теперь код шаблона:
В коде шаблона вам все должно быть уже знакомо, кроме, возможно, незнакомых для вас тэгов, использующихся в RSS. Подробнее об этом замечательном формате можно прочитать в Википедии. Если запустить наш метод в браузере (его URL будет таким http://ваш домен/news/rss/), ты мы увидим RSS-поток из пяти свежих новостей.