Тестовый дизайн новой версии сайта IGD.BY         RU   |   EN
В подготовке CMS/CRM-сборки KION WEB 4.2
Автор: Кристофер

KION WEB — Open Source продукт-сборка профессионального класса. Свою историю он ведет c 2011 года (тогда это называлось CMS Platinum, на которой разрабатывались интернет-магазины для малого и среднего бизнеса). С тех пор прошло довольно много времени, продукт расширился как функционально, так и вырос в профессиональном плане, особый упор делался на повышенную производительность и безопасность. Отдельное внимание уделялось чистоте и понятности исходного кода. Для работы со сборкой не требуется изучения отдельных терминологий, достаточно твердого знания PHP, JavaScript (jQuery), SQL и CSS. Разработчикам предоставляются базовая архитектура и классы, затрагивающие основные ниши и технологии, используемые в современной веб-разработке.

 

Сейчас готовится к выпуску версия 4.2. В первую очередь разработчикам следует ожидать базовую сборку "Стандарт", предназначенную для тех, кто уже работал с KION WEB и хочет создавать на ней свои уникальные сайты "с нуля". На этой основе впоследствии будут продемонстрированы пять готовых шаблонов/сборок: "Интернет-магазин", "Сервис", "Доска объявлений", "Блог", "Клиенты" на двух языках - русском и английском.

 

Нужно сразу отметить, что KION WEB - это абсолютно открытая и бесплатная архитектура, на базе которой можно создавать сайты любого уровня сложности. По существу, это просто инструментарий, который значительно упрощает разработку, и все сборки, кроме "Стандарт", носят просто иллюстративный характер, отображающий принципы работы с архитектурой.

 

Сборка "Интернет-магазин" - шаблон интернет-магазина с глубиной вложенности каталога до 3 (можно делать и больше), поиском, корзиной, детальными страницами товаров, формами обратной связи, статейным разделом, панелью администрирования и т.п. Две роли пользователей: зарегистрированнные и нет. Системы скидок, базовые фишки типа "С этим товаром покупают", "Хиты продаж", "Акция" и тому подобное.

 

"Сервис" - шаблон сайта салона фотопечати с панелью администрирования.

 

"Доска объявлений" - шаблон сайта платных объявлений. Две роли пользователей: подающие объявления и посетители. Система переписки, реалтайм оповещений о наличии новых объявлений (Ajax) и так далее. Панель администрирования.

 

"Блог" - шаблон блога с комментариями. На его базе можно сделать более продвинутый новостной сайт или новостной портал.

 

"Клиенты" - шаблон CRM-системы в простейшем виде. Предусматривается пять базовых ролей пользователей с возможностью расширения их количества. Присутствуют системы постановки и оценки задач, личные кабинеты, системы внутренней переписки и оповещений по email, механизм создания цепочек исполнителей и тому подобное.

 

В документации к KION WEB 4.2, которая готовится параллельно с шаблонами для разработчиков, будут показаны примеры взаимодействия с SMS-сервисами, API платежных систем и так далее.

Перейдем к некоторым техническим деталям...

 

Некоторые технические особенности сборки KION WEB 4.2 и KION WEB в целом

 


Система работает на базовой связке PHP/JavaScript(jQuery)/CSS/MySQL/SQLite(по желанию). Все представленные сборки разработаны с использованием Bootstrap 3.x.

Для иллюстративности перечислим лишь несколько отличительных функциональных особенностей системы (все классы, методы, сама архитектура подробно описаны в документации).

 

1. Переключение между разделами и страницами производится по символическим ссылкам. Всей навигацией управляет специальный класс Router.
 

Например:
В слое идет вызов:
$router=new Router;
$router->firstLevel();
unset($router);

В классе Router метод
    function firstLevel()
    {
        //парсим текущую адресную строку
        $arURL = $this->parseURL();
        //подгружаем нужный php-сценарий
        switch ($arURL[0]) {
            case 'articles':
                include($_SERVER['DOCUMENT_ROOT'].'/views/pages/main/articles.php');
                break;

...

2. Отдельный универсальный класс для работы с MySQL (на драйвере MySQLi),в котором предусмотрена автоматизация наиболее часто используемых операций и множества удобных специфических.
 

Например:

$db = UniMySQL::getInstance();

//загружаем новую таблицу в базу из sql-файла
$db->upload_table('/dbstack/databasename.sql');

//создаем новую простую таблицу БД из одномерного массива
$db->create_new_table_from_array('new_table_name', 'field_name', 'VARCHAR(255)', $array);

//добавляем запись в таблицу databasename
$user_data = array(
           'name' => 'Вася'
      );
$db->insert( 'databasename', $user_data );

//получаем id только что записанной строки
$db->lastid();

//получаем сразу значения переменных по конкретному запросу
list( $name, $email ) = $db->get_row( "SELECT name, email FROM databasename WHERE user_id = 44" );

//по аналогии получаем массивы значений
list( $emails ) = $db->get_rows( "SELECT email FROM databasename WHERE name = 'Вася'" );


3. Для пользовательских баз даннных кроме MySQL предусмотрена возможность (отдельный класс) для работы с SQLite (через интерфейс PDO). Автоматизированы базовые и наиболее часто используемые операции.
 

Например:
$user = new UsersDatabases;

//Создаем таблицу, в алгоритме метода заложено условие IF NOT EXISTS (если такая не существует)
$fields = array(
           'name' => 'VARCHAR(255)',
           'year' => 'INTEGER'
      );
$user->create_db($tablename, $filename, $fields);

//добавляем запись
$user_data = array(
           'name' => 'Вася',
           'year' => '1988'
      );
$user->insert($tablename, $filename, $user_data);

//узнаем количество записей в таблице
$num = $user->num_rows($tablename, $filename);


4. Специальный класс для автоматического создания форм с валидацией полей (указывается поле и тип валидации).
 

Например:
$table->addItem('Логин или e-mail', 'login', 'text', $_SESSION['lname'], 'wide', 'text');

//для поля password, если указан тип валидации 'password',
//загружаются сразу два (второе для проверки)
$table->addItem('Пароль', 'password', 'password', '', 'wide', 'password');

 

5. Класс мусороуборщика для файлов. Удаляет файлы по определенным условиям.  
 

Например:
$time=time()-60*60*24;
$dir='/userdata/';
$ext='pdf';
$cleaner = new UsersDatabases;

//удаляем все файлы старше суток
$cleaner->clean_by_time($dir, $time);

//удаляем все файлы с расширением pdf
$cleaner->clean_by_ext($dir, $ext);

//удаляем все файлы pdf записанные больше суток назад
$cleaner->clean_by_ext_time($dir, $ext, $time);

Если задания подразумевают длительные по времени операции, опционально предусмотрена возможность удаления через cron или агент (подробности в документации) с помощью специальных методов.

 

6. Интегрированы хорошо зарекомендовавшие себя элементы от сторонних разработчиков, распространяемые по лицензиям GPL. Это:

- Ajax-загрузчики изображений (с предпросмотром) и файлов
- Календари для прикрепления к полям ввода даты/времени
- Визуальный WYSIWYG редактор CKEditor