разбираем код модуля, важные места комментирую
на примере Новостей.
controllers
юзерская часть
<?php
/**
* Ant0ha's project
*
* @package
* @author Anton Pisarenko <wapwork@bk.ru>
* @copyright Copyright (c) 2006 - 2010, Anton Pisarenko
* @license http://ant0ha.ru/license.txt
* @link http://ant0ha.ru
*/
//---------------------------------------------
defined('IN_SYSTEM') or die('<b>403<br />Запрет доступа!</b>'); // проверяем является ли файл, файлом движка и разрешен ли к нему доступ
/**
* Новости, пользовательская часть
*/
final class News_Controller extends Controller {
/**
* Constructor
*/
//создаем конструктор для шаблонизатора
public function __construct() {
parent::__construct();
}
/**
* Действие по умолчанию
*/
public function action_index() {
$this->action_list_news();
}
/**
* Детализирование новости
*/
public function action_detail() {
if(!$news = $this->db->get_row("SELECT * FROM #__news WHERE news_id = '". intval($_GET['news_id']) ."'"))
a_error('Новость не найдена!');
$this->tpl->assign(array(
'news' => $news
));
$this->tpl->display('detail'); // читаем данные с базы, запускаем обработку шаблона и выводим содержимое на экран
}
/**
* Листинг новостей
*/
public function action_list_news() {
# Получение данных
$list_news = $this->db->get_array("SELECT SQL_CALC_FOUND_ROWS n.*,
(SELECT COUNT(*) FROM #__comments_posts WHERE module = 'news' AND item_id = n.news_id) AS comments
FROM #__news AS n ORDER BY n.news_id DESC LIMIT $this->start, $this->per_page");
$total = $this->db->get_one("SELECT FOUND_ROWS()");
# Навигация
$pg_conf['base_url'] = a_url('news', 'start=');
$pg_conf['total_rows'] = $total;
$pg_conf['per_page'] = $this->per_page;
a_import('libraries/pagination');
$pg = new CI_Pagination($pg_conf);
$this->tpl->assign(array(
'list_news' => $list_news,
'total' => $total,
'pagination' => $pg->create_links()
));
$this->tpl->display('list_news');
} // читаем данные с базы, запускаем обработку шаблона и выводим содержимое на экран, навигация
/**
* Скрыть последнюю новость
*/
public function action_hide_last_news() {
if(ACCESS_LEVEL < 5) a_error('У вас нет прав на выполнение этой операции!');
$this->db->query("UPDATE #__users SET hide_last_news = 'yes' WHERE user_id = '". USER_ID ."'");
header("Location: ". URL);
exit;
}
}
?>