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

1. ZipeR (18.09.2010 / 05:42)
Народ обьясните как создать страницы или перетачивать какие то разделы для этого движка? Там просто инклудами не сделаешь, вообщем мне код просто мозг вынес sad

2. Олег (18.09.2010 / 07:07)
Там все понятно, создаешь страницы в модуле "Страницы" (при создании можно использовать XHTML разметку для создания своей структуры ссылок, картинок, и прочего), вывести страницу в нужном месте на главной тоже не составляет большой проблемы. smile

3. ZipeR (18.09.2010 / 09:29)
А подробнее можно объяснить? smile

4. Олег (18.09.2010 / 09:43)
Зайти на адрес.сайта/index_page/admin.php нажать в нужном разделе "Добавить виджет", выбрать модуль "Страницы", а потом сохранив нажать кнопку "Настроить" на виджете и указать id страницы.
Сами ссылки потом можно передвигать вверх/вниз соответствующими кнопками рядом с ними.

5. ZipeR (18.09.2010 / 10:19)
А на сервере как настраивать модули та? Там что какие то файлы надо создавать я так понял,просто так не получится а то что ты сказал это после настройки кода же...

6. ZipeR (18.09.2010 / 10:19)
Удалено

7. Олег (18.09.2010 / 11:00)
В чужом коде без косяка не разобраться smile

8. ZipeR (18.09.2010 / 12:41)
Блин чё за лажа происходит фиг поймешь. Автор хоть документацию бы дал по созданию и перетачиванию файлов.

9. WCO (18.09.2010 / 15:28)
Обратится в тему движка религия не позволяет?
Автор там точно появится, нежели здесь.

10. delete (18.09.2010 / 15:41)
каждый модуль состоит из 4 элементов.

controllers - в этой папке хранятся файлы для управлением модуля, так сказать юзерская часть и админская, что б научится составлять их, нужно читать маны по smarty.

helpers - инсталятор и деинсталятор модуля, для того что бы установить его или отключить, по сути он добавляет нужные таблицы smile упрощеный вариант установки новых модулей в обычных движках.

views - сдесь хранятся шаблоны к модулю для обработки шаблонизатором.

module.ini - файл настроек так сказать.

11. delete (18.09.2010 / 15:57)
разбираем код модуля, важные места комментирую

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

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

?>


12. delete (18.09.2010 / 16:06)
админскую часть описывать не буду, принцип тот же только там функции для добавления и удаления новостей.

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;");
	} // деинсталлируем таблицы, если надо выключить модуль, по причине ненадобности
}
?>


13. delete (18.09.2010 / 16:33)
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') // обрабатываем и выводим низ сайта  ?>


14. delete (18.09.2010 / 16:40)
и mobile.ini собственно эта информация для админской панели управления всеми модулями

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

15. delete (18.09.2010 / 16:57)
вот видите, не так и трудно писать модули к этому движку smile кода намного меньше чем если бы мы писали для других движков.

16. ZipeR (18.09.2010 / 17:32)
11 и 12 пост просто убил напроч,я чё то не пойму. Вот к примеру граб куда его код мастырить?

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

18. delete (18.09.2010 / 17:55)
если это вообще смарту а не его собственный шаблонизатор, я все что написал выше, это лиш зашел в двиг и описал что вижу smile сам то не юзаю его, но модуль написать смогу.

19. ZipeR (18.09.2010 / 19:27)
18. Во во smile я эт тоже видел, Антоха говорил про документацию про созданию этого но так и не написал

20. delete (18.09.2010 / 19:56)
а толку писать мануалы, движок не для новичков, тут шапки и ноги поменять, и вот вам новый модуль)) не получится smile прейдется перербатывать весь код smile и писать шаблон.

21. ZipeR (19.09.2010 / 08:38)
ну тогда навик этот Mobilecms нужен...

22. Azzido (19.09.2010 / 09:13)
21, вот она, политика многих,чуть столкнулся с трудностями,и все,впопятную

23. ZipeR (19.09.2010 / 09:31)
22. да автор мог бы и докуметацию дать и вообще писать для народа что был комфорт и удобство. sad

24. Azzido (19.09.2010 / 10:19)
23. ZipeR, для народа, и для ленивых людей которые дальше echo ничего не захотели изучать это разные понятия

25. WCO (19.09.2010 / 10:36)
23, автор, кстати говоря сделал большое одолжение.
это единственный паблик движок в вапе который действительно продуманно сделан.
а всякие дцмс'ы и и джоны нервно курят в сторонке.
А модули нужно писать не вам, а специально обученному человеку.

26. eihwaz07 (19.09.2010 / 14:23)
Azzido (19 Сентября 2010 / 09:13)
21, вот она, политика многих,чуть столкнулся с трудностями,и все,впопятную
неее... Оправдывать лень конечно не стоит, но и автора, впрочем тоже.
Если он решил прибегнуть к такой реализации, то доки, хотя бы описание общей логики и API, были бы очень к месту. Я не говорю что нужно писать мануалы, туториалы на тему "Как впендюрить в систему нужный скрипт", так как сам не люблю "нашлепки" делать, стараюсь следовать идеологии той или иной CMS.
Однако, наличие доков, о которых я писал выше, сэкономило бы некоторое время мне при выполнении заказа, сэкономило бы также время и уменьшило потерю нервных клеток автора двига, вынужденного отвечать на вопросы. А что, потом можно бы было сказать: "Читай описание, либо обращайся к программистам если не понимаешь, так как это серьезная CMS для понимающих людей" (хых, слоган получился).
А сейчас все выглядит так, будто это система для одного программиста - ее автора.

27. Studentsov (19.09.2010 / 16:36)
Хорошо, что хоть этот движок будет мало где и сайты на нём будут более хорошие, так как новички просто не осилят

28. Ant0ha (19.09.2010 / 20:07)
документация будет, но сроков конкретных сказать не могу, пока нет на них времени

29. Ant0ha (19.09.2010 / 20:13)
Денис Петрович, благодарю, очень хорошо описал

30. delete (19.09.2010 / 20:25)
Ant0ha (19 Сентября 2010 / 20:13)
Денис Петрович, благодарю, очень хорошо описал
самое основное, это описать какой модуль для чего предназначен и мануал по шаблонизатору, все ни чего он и не сложный движок smile просто в вапе движки на MVC только последний год-полтора как стали появлятся smile люди не освоились еще.

31. delete (19.09.2010 / 20:33)
ну и люди не оценили преимущество шаблонов, например взять практически любой двиг с паблика, максимум к чему сводится его модификация, эт поменять местами пару ссылок, и эт не только лень, еще и то что xhtml и php код в перемешку, плохо читаем, что переделать внешний вид по себя, надо не одну ночь сидеть и редачить весь движок, с шаблонами все просто, редактируем лиш их, не боясь повредить функционал движка.

32. delete (19.09.2010 / 20:35)
и можно брать любой набор шаблонов с паблика, их сотни тысяч, каких хош, и видоизменять движок до неузнаваемости, разве не надоело сидеть на однотипных движках, которые у каждого третего вап мастера.

33. Ant0ha (19.09.2010 / 20:36)
угу, а, еще хотел спросить) при чем тут доки по смарти, его же там нет) или ты имеешь ввиду для того чтоб понять принцип отделения логики от отображения? я бы рекомендовал читать руководство пользователя по CodeIgniter http://code-igniter.ru - идея архитектуры движка взята с него)

34. delete (19.09.2010 / 20:48)
33. Ant0ha, ты просто один файл назвал smarty я и подумал что у тебя он, а когда открыл его, и вообще заценил шаблоны, понял что это не он smile но уже было позно, написал))) ну если люди почитали мануал что я выложил, думаю им не во вред, пора уже привыкать к MVC моделям.

35. Ant0ha (20.09.2010 / 15:12)
Да, там есть смарти, иногда некоторые заказчики просят делать скрипты именно на смарти - приходится делать, хотя сам по себе к смарти я очень негативно отношусь.

36. Богдан (20.09.2010 / 15:35)
Да...очень напоминает CI .. трудновато конешн новичкам будет перейти на этот двиг, но оно того стоит.намного проще потом расширять функционал, писать модули.
Только вместо <?php echo 'test'; ?> имхо лучше использовать <?='test'?> -кода меньше и смотрится как то боле приятней

37. Ant0ha (20.09.2010 / 15:53)
не хочется чтоб в будущем были проблемы с совместимостью... сейчас больше принято писать <?php echo 'test'; ?>

38. Studentsov (20.09.2010 / 15:54)
G_A_N_J_A_R (20 Сентября 2010 / 15:35)
Да...очень напоминает CI .. трудновато конешн новичкам будет перейти на этот двиг, но оно того стоит.намного проще потом расширять функционал, писать модули.
Только вместо <?php echo 'test'; ?> имхо лучше использовать <?='test'?> -кода меньше и смотрится как то боле приятней
Не рекомендуется твой вариант, его вырежут в 5.4

39. Богдан (20.09.2010 / 15:57)
хм...спс за инфу.не знал.

40. Михаил (20.09.2010 / 16:05)
Studentsov_нет_ничо1 (20 Сентября 2010 / 15:54)
Не рекомендуется твой вариант, его вырежут в 5.4
Вроде в 6.0 обещали вырезать. Уже в 5.4 начнут?

41. Studentsov (20.09.2010 / 16:11)
Flyd (20 Сентября 2010 / 16:05)
Вроде в 6.0 обещали вырезать. Уже в 5.4 начнут?
6.0 отложен на неопределённое время, 5.4 = 6.0 - юникод + чёткое разделение типов

42. Ant0ha (20.09.2010 / 16:18)
чтоб не писать постоянно вручную <?php echo $var ?> решил проблему очень просто, создал в php expert editor'е макрос, нажимаю Alt+X у меня сразу выскакивает <?php echo | ?> и теперь печатается это еще быстрей чем переменная в смарти или <?=''?>

43. ZipeR (20.09.2010 / 17:16)
28. Ant0ha, ты упрость или опиши подробно тогда куда код другой писать... cry

44. Ant0ha (20.09.2010 / 18:10)
лучше чем Денис Петрович я врядли опишу.. да и самому пока некогда этим заниматься...

45. delete (20.09.2010 / 18:15)
Ant0ha (20 Сентября 2010 / 18:10)
лучше чем Денис Петрович я врядли опишу.. да и самому пока некогда этим заниматься...
ну видимо он хочит, что бы не просто описывали что к чему, но еще и читали php сценарий, но какой тогда смысл работать с движком, не зная MySQL, xhtml и php.

46. Саша (21.05.2011 / 22:46)
Помогите с разработкой модуля, он у меня не устанавливается, всё зделал по шаблону ну ничего неполучилось, что может я зделал не так

47. Кирилл (22.05.2011 / 09:53)
Открыт раздел на оф сайте для помощи с разработкой модулей под движок.
Пользуемся

48. Саша (24.05.2011 / 23:10)
47. Plato, да там некто непомагает, тема уже 3 дня и даже некто не ничего не написал

URL: https://visavi.net/topics/13803