lmb_require('src/model/*.class.php');
Как вы уже наверное догадались, функция lmb_require поддерживает glob-синтаксис, т.е. наш пример подключил все файлы, заканчивающиеся на .class.php в папке src/model.
===== Сортировка новостей при отображении =====
Чтобы изменить сортировку выборки, нужно задать параметр sort массивом сортируемых полей, например:
$last_news = lmbActiveRecord::find('News', array('sort' => array('date' => 'DESC')));
Есть еще один способ задания сортировки - это изменить класс News:
class News extends lmbActiveRecord
{
protected $_default_sort_params = array('date' => 'DESC');
}
Атрибут класс lmbActiveRecord :: $_default_sort_params позволяет указать параметры сортировки, которые будут применяться по-умолчанию, если не указаны другие параметры. Если бы мы указали в шаблоне другие параметры сортировки, тогда значение $_default_sort_params будет игнорироваться.
===== Новости на главной странице =====
Иногда бывает удобно вытащить нужные данные прямо в шаблоне, без создания лишнего контроллера. Для сколько-нибудь сложных действий, MACRO поддерживает прямые php-вставки, разделяемые привычными тегами .
Знание способа установки сортировки позволит нам легко вывести на главной странице последние несколько новостей.
Для этого создадим в папке template/main_page/ шаблон display.phtml следующего содержания:
{{wrap with="page.phtml" into="page_placeholder"}}
Main page
2, 'sort' => array('date' => 'DESC')));
?>
{{list using="$last_news" as="$item"}}
{{list:item}}
{$item.date}
{$item.title}
{$annotation}
more...
{{/list:item}}
all news...
{{/list}}
{{/wrap}}
Обратите внимание на новый параметр **limit**. При помощи этого атрибута, а также **offset**, где это необходимо, можно указывать ограничения на размер выборки объектов из базы данных. На главной странице мы будем выводить только 2 самые свежие новости.
При помощи строки
more...
мы вывели ссылки на страницы с подробным описание новости.
Шаблон работает и без создания контроллера!
===== Страница детального описания новости =====
Для создания страницы детального описания новости нам необходимо будет создать еще один шаблон template/news/detail.phtml:
{{wrap with="page.phtml" into="page_placeholder"}}
request->id);
?>
{$current_news.title}
Date : {$current_news.date}
{$current_news.content|raw}
{{/wrap}}
Обратите внимание на метод findById, он используется для выборки модели по первичному ключу, соответственно, возвращается не список объектов, а только один объект.
Значение идентификатора объекта новости мы берем из глобального контейнера (объект $this) данных шаблона, в котором по умолчанию в переменной request находится все данные, что пришли в запросе к приложению.
Также надо сделать возможность детального просмотра на странице списка всех новостей, для этого подкорректируем шаблон template/news/display.html:
[...]
{$item.annotation}
more...
[...]
===== Что дальше? =====
* [[.step6|Шаг6. Создание RSS-feed новостной ленты]] - покажет как работать с шаблонизатором напрямую без помощи тега