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

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

Salador
#40544 2015-02-16 07:35

Задача:

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

Система нужна для фермы, между тем кто будет начислять и выплачивать большое расстояние, так как интернет очень слабый 1С не подходит. Ничего простого в виде скрипта не нашел (только онлайн бухгатерии, но они с помесячной оплатой да и чтобы зарплату начислить много лишних действий нужно делать).

Выбор CMS:

Начал делать плагин под Wordpress но он слишком громоздкий для этого. Впринципе мне от CMS нужно: 1) Авторизация пользователей. 2) Легкая работа с базами данных, 3) Безопасность, 4) Шаблон на Bootstrap. Выбор на Cotonti пал из-за решения - Фриланс биржи  какое-то время назад оно попадалось мне, но нестал его использовать так как не знал CMS Cotonti.

Шаг 1, Установка:

Впринципе поставился легко. Возникла небольшая проблемка, ставил последнюю версию 0.9.18, версия php была 5.2.7 при установке всё нормально, но после установки сайт не загружался показывал ошибку (какая ошибка была - забыл) после поиска по ошибке нашел что аналогичная блыла на Joomle и связана с версией php. Установил php 5.3 и всё заработало. Вывод для разработчиков: с версии 0.9.18 (а может и раньше) нужно при установке проверять на php 5.3.

Шаг 2, Установка шаблонов:

  1. Шаблон администратора: Шаблон для админки Bootos на Bootstrap - поставился без проблем.
  2. Основной шаблон: Выбрал Barebones на Bootstrap - возникла небольшая проблемка не отображалась тема, в админке (Конфигурация->Темы) нужно поставить ДА в "Принудительная установка темы по умолчанию для всех пользователей:" и заработало. Я так понял что можно в настройках ставить разные темы разным пользователям, но не нашел как (если кто знает - подскажите).

 

Шаг 3, Поиск информации:

Информации очень мало нашел всего 3 сайта:

  1. Этот сайт, как понял главный http://www.cotonti.com/ 
  2. http://cmsworks.ru/
  3. http://mycotonti.ru/

На главном сайте много информации для старых версий, для адаптации под новые нужно менять заголовки и приставку к функциям "sed_" заменить на "cot_" (Например: Функция sed_import будет - cot_import).

Справочник по функциям здесь.

Шаг 4, Простой плагин:

Самый простой плагин взял отсюда (Создание плагина Hello World), дальше использовал информацию (Создание простейшего плагина) из документации. Пришлось немного подредактировать - вот что получилось на данном шаге (Скачать) - Плагин как и в документации умножает введенные числа и выводит ответ. Имеет 4 файла: языковой, шаблона, установочный и исполняемы. Чтобы увидеть плагин нужно перейти по ссылке index.php?e=salazarp

cot_import - как понял важная функция которая обрабатывает все получаемые данные через запросы, вот информация по параметрам.

Добавлено 35 минут спустя:

Шаг 5, Создание таблиц в базе данных:

Впринципе основная информация понятна. Переделываю плагин под себя. Для начала мне нужно чтобы в базе было три таблицы  1) Сотрудники 2) Начисления сотруднику 3) Выплаты сотруднику. 

Впринципе в Contonti это делается легко - просто создаем дирректорию setup в папке плагина и в ней создаем файл nameplugin.install.sql (у меня salazarp.install.sql) и туда добавляем sql скрипт создания таблицы.

Также добавляем файл nameplugin.uninstall.sql (у меня salazarp.uninstall.sql) там sql скрипт удаления таблиц.

 

 

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

Шаг 6, Несколько страниц в плагине:

Мне нужно чтобы в плагине было несколько страниц, данный момент думаю 5: 1) Создание сотрудника 2) Редактирование данных сотрудника 3) Ввод начислений сотруднику 4) Ввод выплат сотрудинку 5) Статистика по начислениям и выплатам на текущий месяц (можно на месяц по выбору).

Для каждой страницы желательно иметь свой файл шаблона.

Итак пока плагин умеет умножать введенные числа. Делаю так чтобы на одной странице он умножал числа, а на другой выводил результат. 

В папку tpl плагина добавлем два файла salazarp.addsotr.tpl и salazarp.outsotr.tpl. Подключение этих шаблонов происходит через XTemplate вот информация (Ссылка1, Ссылка 2).

Подключение шаблона -  

$t_salas= new XTemplate(cot_tplfile('salazarp.addsotr', 'plug'));

Как я понял вывод шаблона должен происходить через одну из функций.

$t_salas->out('MAIN');

или

$plugin_body = $t_salas->text('MAIN');

Но у меня они выводятся криво, и еще вместе с шаблоном показывается название плагина, может кто знает решение? Поэтому я пока решил выводить через главный шаблон.

$t->assign('SALAZARP_PAGES', $t_salas->text('MAIN'));

Вот что получилось на данный момент, на одной странице плагина вводятся данные для умножения, а на другой - ответ (Скачать).

При работе возникла проблема с кэшем (страница плагина не обновлялась после изменений) - в файле datas/config.php  ищем $cfg['cache'] = TRUE; и  $cfg['xtpl_cache'] = TRUE; и заменяем на FALSE.

Добавлено 2 часа спустя:

Шаг 7, Отдельный файл функций:

Нужно для функций сделать отдельный файл. Решил для начала вынести умножение в функцию.

Информацию не искал, просто как в других плагинах сделал папку inc и в ней создал файл salazarp.functions.php и добавил код.

defined('COT_CODE') || die('Wrong URL.');

function sala_proizved($d_1, $d_2) {
	
	$proizved = $d_1*$d_2; 
	return ($proizved);
}

В основном файле заменил 

$proizved = $d_1*$d_2; 
на
$proizved = sala_proizved($d_1,$d_2);

Всё заработало.

This post was edited by Salador (2015-02-16 20:43, 9 years ago)