В главах 5 и 8 мы уже познакомились с процессором. Однако до сих пор мы не пользовались одним из самых главных преимуществ процессора - возможностью подготовки данных для шаблона. Для того, чтобы понять, как сотрудничают процессор и шаблон в одном методе, попробуем решить следующую задачу. Добавим на наш сайт страницу, которая будет выводить новости за определенный год и месяц. Год и месяц передаются в URL как два параметра, разделенных точкой.
Добавим новый метод к модулю "news". Наш метод получит название "select_news" и будет состоять из процессора и шаблона. В процессоре мы произведем выборку новостей за указанный год и месяц, а затем передадим выбранные новости в шаблон, который отобразит их в определенном HTML-коде.
В процессоре мы выбрали все новости в переменную PHP $news, а затем с помощью функции assign() передали ее в шаблон под именем "my_news_posts". Подробнее о функции assign() можно прочитать в документации Smarty в разделе "Smarty для программистов -> Методы", здесь же нам важно, что глобальная переменная $_HTML автоматически доступна в процессоре и содержит экземпляр класса Smarty. Это означает, что на ней можно вызывать любые методы этого класса.
Поскольку в процессоре нам доступен экземпляр класса Smarty, мы можем, в частности, создавать в нем собственные модификаторы наподобие "date_format". Воспользуемся этой возможностью для вывода в строке №3 Листинга 20 не номера месяца, а его русского названия. Для этого нам потребуется модификатор, преобразующий номер месяца в название. Модификатор - это обычная функция PHP, зарегистрированная через объект Smarty с помощью метода "register_modifier()". Изменим наш процессор следующим образом:
Мы реализовали функцию преобразования и зарегистрировали ее в Smarty под именем "num2name". Теперь мы можем использовать новый модификатор в шаблоне:
Если вызвать наш новый метод в брузере, например, вот так http://www.example.com/news/select_news/2008.02.htm, то мы должны увидеть все новости за февраль 2008 года, если таковые есть в базе.