Ноды
Новости, посты, топики — как ни называй ноду, смысл один — ветка информационного дерева. Наряду со статическими страницами нода является базовым представлением информации в движке.
Базовый компонент обеспечивает необходимую функциональность и расширяемость.
Структурно нода состоит из трех элементов:
Помните, что этот метод работы очень полезен при создании хуков.
Базовый компонент обеспечивает необходимую функциональность и расширяемость.
Структурно нода состоит из трех элементов:
- Заголовок — представлен объектом breadcrumb для обеспечения расширяемости.
- Текст — содержимое ноды.
- Дополнительная информация — Включает в себя всю дополнительную информацию о ноде — время публикации, аватар автора, имя автора со ссылкой на его профиль. Представлена объектом breadcrumb для обеспечения
расширяемости.
/**
* Пример расширения дополнительной информации о ноде шестеренкой favorite.
* Add link-icon to node_info breadcrumb.
*
* @param object $Breadcrumb
* @return void
*/
function favorites_breadcrumb_compile_(&$Breadcrumb){
if($Breadcrumb->name == 'node_info' && acl('favorites manage')){
$status = empty($Breadcrumb->data->favorite) ? 'add' : 'remove';
$Breadcrumb->add('<a href="javascript:void(0)">
<img class="favorite-action" id="node-'.$Breadcrumb->data->id.'"
src="/gears/favorites/img/icon/'.$status.'.png" title="'.t('!favorites '.$status).')"/>
</a> ',0);
}
}
// ------------------------------------------------------------------------
При помощи модели nodes можно легко и просто вывести список нод с постраничной навигацей. Для изменения запроса можно использовать класс Active Record. Помните, что этот метод работы очень полезен при создании хуков.
/**
* Show user blog nodes
*
* @param string $url_name
* @param int $page
* @return void
*/
function index($url_name = FALSE, $page = 0){
// Если указан ЧПУ-адрес имени пользователя
// Если первый аргумент не цифра и пользователь действительно существует
if($url_name && !is_numeric($url_name) && $user = $this->user->info($url_name)){
// Выводим в шаблон информацию о пользователе
// и навигационную панель
$this->user->head($user,'blog');
title($user->name);
// Проверяем возможность видеть неопубликованные ноды
if(acl('blogs view_unpublished') OR $user->id == $this->user->get('id')){
$this->nodes->published = FALSE;
}
// При помощи Active Record задаем дополнительные параметры запроса
$this->db->where(array('aid'=>$user->id));
}
// Если первый параметр -- цифра, просто выводим список
// всех нод из блогов, находящихся на искомой странице
else {
$page = $url_name;
}
// Выводим список нод
$this->nodes->get($page);
}
// ------------------------------------------------------------------------
Обратите внимание, что количество нод на страницу определяется параметром конфигурации per_page или текущей шестеренки, или шестеренки nodes, если текущая параметра не имеет.