Создание модулей на Mobilecms

Печать RSS
484

D

Малиновые штаны
0
разбираем код модуля, важные места комментирую

на примере Новостей.

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;
	}
}

?>
D

Малиновые штаны
0
админскую часть описывать не буду, принцип тот же только там функции для добавления и удаления новостей.

helpers

это инсталятор модуля smile

<?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>');

//---------------------------------------------

/**
 * Хелпер установки модуля
 */
class news_installer {
	/**
	* Установка модуля
	*/
	public static function install(&$db) {
		$db->query("CREATE TABLE #__news (
			  `news_id` int(11) NOT NULL auto_increment,
			  `subject` varchar(100) NOT NULL,
			  `text` text NOT NULL,
			  `time` int(11) NOT NULL,
			  PRIMARY KEY  (`news_id`)
			) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;
		"); // заливаем таблицы для модуля
	}

	/**
	* Деинсталляция модуля
	*/
	public static function uninstall(&$db) {
		$db->query("DROP TABLE #__news;");
	} // деинсталлируем таблицы, если надо выключить модуль, по причине ненадобности
}
?>
D

Малиновые штаны
0
views - папка с шаблонами для модуля.

default - папка длю шаблона юзерской части

list_news.tpl - собственно сам файл шаблона.

<?php $this->display('header.tpl', array('sub_title' => 'Новости')) ?> // выводим информацию в титле

<div class="title"><img src="<?php echo URL ?>views/<?php echo THEME ?>/img/titl.gif" class="ico" alt="" /><b>Новости</b></div> //заголовок модуля
<?php if(!empty($list_news)): ?>
	<?php foreach($list_news as $news): ?>
	<div class="menu">
	<b><?php echo $news['subject'] ?></b> [<?php echo date('d.m.Y', $news['time']) ?>]<br />
	<?php echo $news['text'] ?><br />
	<a href="<?php echo a_url('comments', 'module=news&amp;item_id='. $news['news_id'] .'&amp;return='. urlencode(a_url('news', 'start='. @$_GET['start'], TRUE))) ?>">Комментарии (<?php echo $news['comments'] ?>)</a>
	</div>
	<?php endforeach; ?>
<?php else: ?>
	<div class="block">
	<b>Новостей нет</b>
	</div>
<?php endif; ?>

<?php if($pagination)
	echo '<div class="block">'. $pagination .'</div>';
?>

<div class="block">
<?php if(ACCESS_LEVEL >= 5): ?>
<a href="<?php echo a_url(MAIN_MENU) ?>">В кабинет</a><br />
<?php endif; ?>
<a href="<?php echo URL ?>">На главную</a>
</div> // тело модуля, все элементы от навигации до коментариев (обратите внимание на условия)

<?php $this->display('footer') // обрабатываем и выводим низ сайта  ?>
D

Малиновые штаны
0
и mobile.ini собственно эта информация для админской панели управления всеми модулями

[Module info]
name = "news"
title = "Новости"
admin_link = "news/admin"
description = "Модуль новостей"
D

Малиновые штаны
0
вот видите, не так и трудно писать модули к этому движку smile кода намного меньше чем если бы мы писали для других движков.
Автор
[̲̅$̲̅(̲̅ιοο̲̅)̲̅$̲̅
0
11 и 12 пост просто убил напроч,я чё то не пойму. Вот к примеру граб куда его код мастырить?
D

Малиновые штаны
0
16. ZipeR, почему это он тебя убил, в движке применяется модульная система smile это вполне удобно smile а что бы написать модуль который не использует базу данных и которому админка ненужна, просто не пиши там ни чего smile для начала почитай мануалы по smarty, без этого в движке нечего делать http://www.smarty.net/manual/ru/ ток хреново что Антоха внес изменения, и теперь там одного мануала мало, надо ценить код.
D

Малиновые штаны
0
если это вообще смарту а не его собственный шаблонизатор, я все что написал выше, это лиш зашел в двиг и описал что вижу smile сам то не юзаю его, но модуль написать смогу.
Автор
[̲̅$̲̅(̲̅ιοο̲̅)̲̅$̲̅
0
18. Во во smile я эт тоже видел, Антоха говорил про документацию про созданию этого но так и не написал
D

Малиновые штаны
0
а толку писать мануалы, движок не для новичков, тут шапки и ноги поменять, и вот вам новый модуль)) не получится smile прейдется перербатывать весь код smile и писать шаблон.
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск