Powered by CodeIgniter

Ноды

Новости, посты, топики — как ни называй ноду, смысл один — ветка информационного дерева. Наряду со статическими страницами нода является базовым представлением информации в движке.
Базовый компонент обеспечивает необходимую функциональность и расширяемость.
Структурно нода состоит из трех элементов:
  • Заголовок — представлен объектом 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, если текущая параметра не имеет.