Форумы / National / Russian / Модули и плагины / Пишем плагин с нуля.

Cotonti не знаю - пишу плагин с нуля, решил описать процесс здесь так как информации по Cotonti очень мало - собираю по крупицам.

Salador
#40584 19.02.2015 05:41

Шаг 9, Начало. Работа с базами данных:

Структуру Cotonti примерно понял теперь начинаю переделывать плагин под себя. Сначала сделаю добавление сотрудников.

1. Cоздал форму добавления сотрудника в файле tpl/salazarp.addsotr.tpl

2. В файле setup/salazarp.install.sql прописываем sql таблицы сотрудников

CREATE TABLE IF NOT EXISTS `cot_sotr` (
    `sotr_id` INT NOT NULL AUTO_INCREMENT, 
    `sotr_name` VARCHAR(100) NOT NULL, 
	`sotr_dolzh` VARCHAR(90) NOT NULL, 
    `sotr_desk` VARCHAR(255) NOT NULL, 
    `sotr_oklad` DECIMAL(10,2) default NULL, 
     PRIMARY KEY (`sotr_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

Теперь нужно в админке удалить и заного установить плагин.

3. Используя информацию по работе с базами данных Cotonti и API Cotonti в файле inc/salazarp.addsotr.php сделал добавление сотрудника в базу.

$table_sotr='cot_sotr';   // название таблицы сотрудников
$par = cot_import('par','G','TXT'); 
if ((!empty($par)) && $par=='add') {	
	$arr_sotr=array (                           //получение значений из формы добавления сотрудника в массив
		'sotr_name'=>cot_import('sotr_name','P','TXT'),
		'sotr_dolzh'=>cot_import('sotr_dolzh','P','TXT'),
		'sotr_desk'=>cot_import('sotr_desk','P','TXT'),
		'sotr_oklad'=>cot_import('sotr_oklad','P','TXT')
	);
	if ($db->insert($table_sotr,$arr_sotr)) {   //ввод данных в таблицу сотрудников
		$plugin_body = $t_sz->parse('SUC_ADD_SOTR')->text('SUC_ADD_SOTR'); //успешное добавление сотрудника
	} else {
		$plugin_body = $t_sz->parse('NOT_ADD_SOTR')->text('NOT_ADD_SOTR'); //неудачное добавление сотрудника
	}
	 
} 
$plugin_body .= $t_sz->parse('ADD_SOTR')->text('ADD_SOTR');

4. Немного понял как работает XTemplate, в $t автоматически обрабатывается только 'MAIN' блок поэтому другие блоки туда нет смысла пихать. 

Немного переработал вывод - так как файл tpl/salazarp.tpl перекрывает стандартный вывод плагина для шаблона  /themes/barebones/plugin.tpl, то сделал его почти таким же:

<!-- BEGIN: MAIN -->
    {PLUGIN_BODY}
<!-- END: MAIN -->

а в файле salazarp.php сделал подключение шаблона в переменную $t_sz и добавил: 

if (!empty($plugin_body)) {
	$t->assign('PLUGIN_BODY',$plugin_body); //если не пустая переменная $plugin_body, то будет выводится её содержимое
} else {
	$t=$t_sz; //если переменная $plugin_body пустая, то будет выводится содержимое блока MAIN
}

 

Добавлено 1 день спустя:

Что-то немогу добавить JS и CSS файлы в <head>. Посмотрел как в других плагинах - сделал файл salazarp.rc.php туда положил код:

/* ====================
[BEGIN_COT_EXT]
Hooks=rc
[END_COT_EXT]
==================== */

define('SALAZARP_PLUG', $cfg['plugins_dir'].'/salazarp/');
cot_rc_add_file(SALAZARP_PLUG . 'js/moment.min.js');
cot_rc_add_file(SALAZARP_PLUG . 'js/daterangepicker.jss');
cot_rc_add_file(SALAZARP_PLUG . 'tpl/daterangepicker-bs2.css');

Неработает. Может с хуками не до конца разобрался, его (этот файл) как-то подключать нужно?

Отредактировано: Salador (20.02.2015 13:16, 10 лет назад)