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

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

Macik
#40550 2015-02-17 11:53

Отличная инструкция для новичков. Спасибо.

Далее немного комментариев

По шагу 5:

  1. Начисления и выплаты, возможно было бы логичнее разместить в одной таблице, а суммы даже в одной колоноке (просто с разным знаком). Это позволит, во-первых, делать меньше запросов к БД, а во-второых, некоторые расчеты осуществлять силами SQL и самой БД.

По шагу 6:

  1. Да, отдельные шаблоны как правило удобнее для поддержки. Тем не менее, особенно если плагин не большой, можно иметь один шаблон с несколькими блоками:
    <!-- BEGIN: ADD_USER -->
    …
    <!-- END: ADD_USER -->
    
    <!-- BEGIN: EDIT_USER -->
    …
    <!-- END: EDIT_USER -->
    
    …

    и при выводе парсить нужный блок.

  2. Вызов шаблона лучше осуществлять таким образом:
    $t_salas= new XTemplate(cot_tplfile(array('salazarp', $mode), 'plug'));

    где в переменной `$mode` у нас находится название текущей страницы (режима в котором работает плагин). См. об этом подробнее в комментарии к шагу 8.

  3. Если мы работает с блоком `MAIN`, его название можно опускать. Кроме этого вызовы функций шаблонизатора можно увязывать в цепочку:
    $plugin_body = $t_salas->parse()->text();

    (не забываем сделать парсинг нужного блока перед выводом)

  4. По шаблонам, логика такая (если код шаблона вызывается по хуку `standalone`) — если определен шаблон `имя_плагина.php` или `plugin.имя_плагина.php`, то он будет загружен автоматически в переменную `$t` (тогда можно использовать вариант с несколькими блоками, см. выше. Блок `MAIN` будет обработан автоматически). Иначе грузится стандартный шаблон `plugin.php` (обычно находится в папке с темой оформления).
    Если хочется использовать свой (например отдельный для кождого раздела), то есть 2 варианта:
       ​а). загрузить шаблон в отдельную переменную (как описано у тебя) и потом делать вывод в переменную `$plugin_body`.
       б). грузить свой шаблон «напрямую», переопределяя переменную `$t`. (В таком случае блок `MAIN` будет обработан автоматически).
  5. Кеширование шаблонов зависит от разных параметров. И в большинствеслучаев страницы обновляются при изменении шаблона.
  6. Если все же кеширование надо отключить — не надо отключать всю систему кеширования `$cfg['cache'] `. Достаточно сделать это только для $cfg['xtpl_cache']. Более того для тестовых целей можно использовать параметры инициализации шаблонизатора, не отключая кеширование на всем сайте:
    if ($cfg['debug_mode']) XTemplate::init(array('cache' => false )); // временно отключаем 
    $plug_tpl = new XTemplate(…); // инициализируем наш шаблон
    XTemplate::init(array(	'cache' => $cfg['xtpl_cache'] )); // возвращаем значения заданные для сайта

     

По шагу 8:

  1. переменная «s» в некоторых модулях используется системой для переключения режима сортировки выводимой информации. Поэтому, чтобы не было путаницы лучше изменить на что-то другое. И лучще если это будет более осмысленное название, например «mode».
  2. Строку 4 с проверкой на не пустое значение для большей безопасности лучше дополнить проверкой на допустимые значения —  `&& in_array('addsotr', 'outsotr', …)`
  3. В фрейморке уже есть некоторый код облегчающий загрузку частей кода в зависимости от выбранного режима. Если файлы `salazarp.addsotr.php` и прочие `salazarp.*.php` расположить в папке `/inc` своего расшрирения, то вызов нужной (строка 6) сведется к следующему:
    require_once cot_incfile('page', 'plug', $mode);

     

https://github.com/macik
правильный хостинг — https://goo.gl/fjCa1F