Skip to content
easter edited this page Jan 26, 2024 · 2 revisions

Для разработки модулей нужно развернуть ядро системы на платформе Linux с php8.0 (или выше), MySQL и Nginx (или Apache2). Ядро может быть размещено в домашней директории Nginx или директории виртуального хоста.

  1. Клонировать проект. Он включает в себя ядро core2 в виде субмодуля
git clone https://github.com/easterism/core2-front.git /var/www/htdocs
  1. Прописать секцию для своего хоста в файле conf.ini в корне проекта. По умолчанию используются данные из секции [production].
[production]
system.timezone = Europe/Minsk
system.name     = MyProject
system.logo     = logo.png
system.host     = MyProject.local

system.theme.name     = material
system.theme.login_bg = login.png

log.on            = true
log.path          = ../logs/error.log
log.system.writer = file
log.system.file   = ../logs/access.log


[localhost: production]
; пусть в папке с кешем
cache = ../cache
; настройки подключения к базе данных
database.params.host     = localhost
database.params.username = <юзер базы данных>
database.params.password = <пароль базы данных>
database.params.dbname   = <имя базы данных>
  1. Подтянуть зависимости ядра с помощью composer
cd /var/www/htdocs/core2
composer install
  1. Перейти по адресу своего хоста в браузере. Должна отобразиться форма для входа в систему

Структура модуля

Все модули хранятся в папке mod в корне проекта. Имя папки - это идентификатор модуля (латинскими маленькими буквами без пробелов и спецсимволов). Идентификаторы модулей должны быть уникальны. Вложенная папка - это версия модуля. Например: mod/newmodule/v1.0.0 - это домашняя папка модуля

Создание модуля с идентификатором newmodule

Необходимым условием существования модуля является наличие двух файлов внутри папки с версией модуля mod/newmodule/v1.0.0:

  1. ModNewmoduleController.php - основной котроллер. Это PHP-класс и именем ModNewmoduleController
<?php

require_once DOC_ROOT . "core2/inc/classes/Common.php";

class ModNewmoduleController extends Common {

    /**
     * этот метод будет обрадатываться по умолчанию при обращении к модулю
     * @return string|void
     * @throws Zend_Exception
     * @throws Exception
     */
    public function action_index() {
        echo "выводим содержимое модуля";
        $var = " или сохраняем вывод в переменную";
        return $var;
    }
}
  1. ModAjax.php - файл будет обрабатывать ajax POST запросы с данными от стандартных форм. Этот способ позволяет не создавать дополнительны обработчиков на js
<?php

require_once DOC_ROOT . "core2/inc/ajax.func.php";

class ModAjax extends ajaxFunc {

    /**
     * специальный метод принимающий ajax POST
     * @param array $data - данные формы
     * @return xajaxResponse - ответ будет обработан js функцией ядра
     */
    public function axSaveOrderFromBasket(array $data): xajaxResponse {
        //выполняем обработку $data
        
        //можно выполнить любой js в браузере после выполнения ajax запроса
        $this->response->script("CoreUI.notice.create('Заказ сформирован');");
        //завершаем обработку и возвращаем результат
        $this->done($data);
        return $this->response;
    }
}

Модуль может автоматически подключать зависимости, указанные в файле composer.json, расположенном в домашней папке модуля. установить эти зависимости нужно выполнив composer install в папке модуля.

Установка модуля вручную.

  1. Зайти в состему под учетной записью с правами администратора.
  2. Зайти в модуль Admin субмодуль Модули
  3. Нажать кнопку Добавить и в форму создания модуля ввести имя и идентификатор разработанного модуля (newmodule).
  4. После сохранения обновить страницу. Модуль появится в главном меню.

Установка модуля из пакета или репозитория.

Under construction