Rapida Форк на базе simpla 2.3.8

Поскольку api доступно по AJAX - можно будет сделать шаблон SPA.

С шаблонизатором TWIG не знаком. Что ты имеешь ввиду под полноценным MVC? Чем в симпле MVC неполноценный? Модели в api, контроллеры во view, а вьюшки - файлы шаблонов smarty tpl. Спасибо, посмотрю на Inspiria.

Первоначальный план был сделать быструю систему на базе симплы, уже сейчас разработка перешла в вопросы интерфейса админки больше, чем наполовину. Что бы я там не сделал, в лучшем случае это будет просто нормальная админка. Что там можно реально улучшить? А времени на это уходить просто колоссальное количество.

Хочу довести систему до состояния хотя бы бета версии, может тогда талантливые UIшники подключатся и что-то предложат.
<-------------- добавлено через 382 сек. -------------->


Судя по тому, что удалось на скрине разглядеть - это не ошибка, это информация отладчика, который по умолчанию включен. Я еще не сделал нормальный редирект 404, поэтому в случае некорректного адреса просто белый экран и отладчик если он включен.

На макости я не запускал, этот твой MAMP - это apache совместимый сервер, или какой-то другой? Apache должен работать сразу после установки, файл .htaccess в дистрибутиве есть. Для работы на nginx нужно прописать простой конфиг. Всего 2 строки:
Код:
    location / {
        try_files $uri $uri /index.php$is_args$args;
    }

Дай нормальный скрин, на котором можно разгядеть буквы, может скажу что-то конкретнее. Если отладчик завелся, значит php работает, по сообщениям в нем можно разобраться.
Как минимум - стандарты вроде psr4, со всеми прелестями. Composer, npm и тд.
 
Как минимум - стандарты вроде psr4, со всеми прелестями. Composer, npm и тд.

Может дорасту когда нибудь и до этого. Мне бы пока в столбик считать научится нормально. :)
<-------------- добавлено через 769 сек. -------------->
Очередное дополнение в версию 0.0.8.1.3 Надо бы упорядочить нумерацию версий, а пока просто добавляю цифры в зависимости от субъективной серьезности изменений.

Добавлена возможность сохранять еще 3 цены к тем, что уже были (цена и старая цена).
Наконец-то удалось переписать контроллер карточки товара (ProductAdmin.php). Теперь работать с ним должно быть легче, поскольку все операции разделены на отдельные методы внутри класса. save_product() сохраняет данные самого товара, save_variants() сохраняет вариант и т.д.
Все таблицы переделаны исходя из принципа не использовать DEFAULT NULL (теоретически должно работать быстрее). Первое серьезное использование api через ajax. В карточке товара при добавлении связанных товаров делается обращение products->get_products_ids(), которое выдает в ответ имена и id товаров. В симпле примерно тоже самое делалось через отдельный скрипт в каталоге ajax.


Обновление доступно в виде дистрибутива.
Код:
https://github.com/legale/rapida/tree/master/distro

# RAPIDA Ecommerce CMS
## SimplaCMS 2.3.8 fork

##IMPORTANT INFO
Для работы системы на сервере Nginx необходимо прописать следующую инструкцию в конфиг.
```
location / {
try_files $uri $uri /index.php$is_args$args;
}
```

## ****************
## Changelog
## ****************


## =================
## v0.0.8.1.3 18.12.2017
## =================
### bugs:
- Исправлена ошибка в features/get_product_options().
- Исправлена ошибка на странице каталога товаров в админке (справа не появлялись бренды).
- Устранена ошибка в настройках свойств товаров, когда после импорта не появлялись категории.
- Устранена ошибка в таблице s_users. Некоторые версии субд не позволяют иметь в 1 таблице 2 поля с настройкой default current_timestamp. В связи с этим у поля last_login изменено значение по умолчанию.
- В методе products->delete_image() добавлена проверка, что если удаляемое изображение имеет position 0, нужно удалить запись о нем из таблицы s_products. Там запись об изображении хранится для повышения быстродействия.
- Исправлена кривая ссылка в админке на иконке "Каталог".
- Начата работа по рефакторингу контроллеров админки. Первый контроллер ProductAdmin.php
- Сделана дополнительная проверка имен свойств в методе features->add_feature() для исключения создания дублей одинаковых свойств.
- Дополнительные проверки входных данных на методы products->add_product() products->update_product() для возможности упрощения контроллеров админки.
- Устранение ошибки в методе brands->get_brands().
- Исправлены ошибки контроллера xhr.
- Устранена проблема поиска товаров русскими буквами. Использование русских символов для поиска по полю, в котором хранится ascii невозможно. Поэтому теперь для поиска в таблице артикулов транслитерируется ключевая фраза. Изменены методы get_products, get_products_ids, count_products.
- В связи с удалением поля name в таблице s_images, исправлены методы, работающие с этой таблицей.

## improvements:
- Перетряхнул класс variants.
- Много изменений в типах полей таблиц. Везде где можно изменил DEFAULT NULL. Спасибо Black Hat.
- В таблице s_variants изменена кодировка поля sku на ascii, удалено поле attachment, добавлены поля: price1, price2, price3 для сохраненения разных цен товара, например оптовых и закупочных. Для продолжения
работы придется создавать БД заново. Для сохранения товаров проще всего сделать экспорт, потом создание БД заново, а затем импорт товаров.
- Переписан контроллер productAdmin.php. Теперь все разделено по отдельным блокам, просто и логично. Количество кода незначительно выросло, теперь где-то ~400 строк кода, против ~350 в старом контроллере. Весь js очищен от Jquery, теперь ajax добавление связанных товаров работает через xhr контроллер, а не через отдельный php файл, как в симпле. Для полноценной работы по принципу SPA придется сделать api богаче по функциям. Буду добавлять их по мере необходимости.
 
Последнее редактирование:
upload_2017-11-19_0-0-11.png


Как видно из скриншота, на больших данных:
13% времени считывание с диска
и еще 70% преобразование из строки в массив.
Эти очень затратные процедуры полностью повторяются вне зависимости от загружаемой страницы.

Большая часть всей работы при загрузке страницы повторяется. Т.е. независимо от того, какую страницу ты грузишь, нужно построить категории, загрузить таблицу соответствий id и названий опций для ЧПУ. Идеально было бы как-то сохранить это куда-то наподобие $_SESSION, чтобы следующее обращение к странице уже использовало готовые данные.

Как это можно сделать? PHP-REACT в этом деле может помочь?
 

Вложения

  • upload_2017-11-18_23-49-11.png
    upload_2017-11-18_23-49-11.png
    252,8 KB · Просмотры: 4
Последнее редактирование:
Вот нашел демона на php daemon.io
Похоже это то, что нужно.
Надо попробовать.

Тесты показали, что APCU позволяет проходить тот же участок, который выполнялся > 400мс за 1 мс!

Одна проблема APCU отказывается работать в режиме fastcgi, по крайней мере на моем dev наборе openserver. Кто-то может уже включал APCU в режиме fastcgi?
 
Последнее редактирование модератором:
Вышла очередная версия 0.0.8.1.4
Доступна в виде дистрибутива Для просмотра ссылки Войди или Зарегистрируйся



# RAPIDA Ecommerce CMS
## SimplaCMS 2.3.8 fork


##IMPORTANT INFO
Для работы системы на сервере Nginx необходимо прописать следующую инструкцию в конфиг.
```
location / {
try_files $uri $uri /index.php$is_args$args;
}
```

## ****************
## Changelog
## ****************

## =================
## v0.0.8.1.4 20.12.2017
## =================
### bugs:
- Устранение мелких недостатков то там, то здесь.
- Фраза для формирования соли, используемой при формировании пароля, сохранена только в переменной класса config->salt_word.
- Устранена ошибка api->design(40) при создании каталога для кеша смарти, mkdir теперь работает рекурсивно, что не вызывает ошибку при отсутствии каталога /compiled.

### improvements:
- Добавлен в качестве метода по умолчанию более быстрый способ сохранения кеша. Всего доступно 3 способа: var_export, serialize, json_encode. В зависимости от ситуации, победитель по скорости меняется. Надо будет решить по какому принципу выбирать тот или иной способ.
- Доработал контроллеры, чтобы в случае невозможности парсинга адресной строки, в случае отсутствия конкретной страницы из адресной строки включалась страница 404.
- Небольшие изменения в таблице s_currencies. Добавлен уникальный индекс на поле name. Запрос для изменения.
```
ALTER TABLE `s_currencies` ADD UNIQUE `name` (`name`) USING BTREE;
```
 
Последнее редактирование:
Легким движением руки. Шаблон LUXURY для Simpla превращается в шаблон для Rapida.


upload_2017-11-20_23-31-20.png
 

Вложения

  • upload_2017-11-20_23-31-9.png
    upload_2017-11-20_23-31-9.png
    304,1 KB · Просмотры: 15
Что выдало при установке:
Error performing query '/* Create table s_orders */ CREATE TABLE `s_orders` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `delivery_id` int(11) DEFAULT '0', `delivery_price` decimal(10,2) NOT NULL DEFAULT '0.00', `payment_method_id` int(11) DEFAULT '0', `paid` int(1) NOT NULL DEFAULT '0', `payment_date` timestamp NULL DEFAULT '1970-01-01 02:01:00', `closed` tinyint(1) DEFAULT '0', `date` timestamp NULL DEFAULT CURRENT_TIMESTAMP, `user_id` int(11) DEFAULT '0', `name` varchar(255) DEFAULT '', `address` varchar(255) DEFAULT '', `phone` varchar(255) DEFAULT '', `email` varchar(255) DEFAULT '', `comment` varchar(1024) DEFAULT '', `status` int(11) NOT NULL DEFAULT '0', `url` varchar(255) DEFAULT '', `payment_details` text, `ip` varchar(15) DEFAULT '', `total_price` decimal(10,2) NOT NULL DEFAULT '0.00', `note` varchar(1024) DEFAULT '', `discount` decimal(5,2) NOT NULL DEFAULT '0.00', `coupon_discount` decimal(10,2) NOT NULL DEFAULT '0.00', `coupon_code` varchar(255) DEFAULT '', `separate_delivery` int(1) NOT NULL DEFAULT '0', `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `login` (`user_id`), KEY `written_off` (`closed`), KEY `date` (`date`), KEY `status` (`status`), KEY `code` (`url`), KEY `payment_status` (`paid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; ': Invalid default value for 'payment_date'

Error performing query '/* Create table s_users */ CREATE TABLE `s_users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `email` varchar(255) NOT NULL, `password` varchar(255) DEFAULT '', `name` varchar(255) DEFAULT '', `group_id` int(11) NOT NULL DEFAULT '0', `enabled` tinyint(1) DEFAULT '0', `admin` tinyint(1) DEFAULT '0', `perm` varchar(200) CHARACTER SET ascii DEFAULT '', `last_ip` varchar(15) DEFAULT '', `last_login` timestamp NULL DEFAULT '1970-01-01 02:01:00', `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `email` (`email`) USING BTREE, KEY `admin` (`perm`), KEY `perm` (`admin`), KEY `created` (`created`), KEY `last_login` (`last_login`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; ': Invalid default value for 'last_login'

Error performing query '/* Data for table s_users */ INSERT INTO `s_users` (`id`,`email`,`password`,`name`,`group_id`,`enabled`,`admin`,`perm`,`last_ip`,`last_login`,`created`) VALUES (1, 'admin@admin.ad', '6666666666666555555555555555566666666', 'admin@admin.ad', 0, 1, 1, '0:1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:22:23', '127.0.0.1', '2017-11-12 03:14:23', '2017-11-12 03:08:40'); ': Table 'vm.s_users' doesn't exist

База данных успешно настроена
и далее: created user id: Не могу добавить пользователя в БД
 
Что выдало при установке:
Error performing query '/* Create table s_orders */ CREATE TABLE `s_orders` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `delivery_id` int(11) DEFAULT '0', `delivery_price` decimal(10,2) NOT NULL DEFAULT '0.00', `payment_method_id` int(11) DEFAULT '0', `paid` int(1) NOT NULL DEFAULT '0', `payment_date` timestamp NULL DEFAULT '1970-01-01 02:01:00', `closed` tinyint(1) DEFAULT '0', `date` timestamp NULL DEFAULT CURRENT_TIMESTAMP, `user_id` int(11) DEFAULT '0', `name` varchar(255) DEFAULT '', `address` varchar(255) DEFAULT '', `phone` varchar(255) DEFAULT '', `email` varchar(255) DEFAULT '', `comment` varchar(1024) DEFAULT '', `status` int(11) NOT NULL DEFAULT '0', `url` varchar(255) DEFAULT '', `payment_details` text, `ip` varchar(15) DEFAULT '', `total_price` decimal(10,2) NOT NULL DEFAULT '0.00', `note` varchar(1024) DEFAULT '', `discount` decimal(5,2) NOT NULL DEFAULT '0.00', `coupon_discount` decimal(10,2) NOT NULL DEFAULT '0.00', `coupon_code` varchar(255) DEFAULT '', `separate_delivery` int(1) NOT NULL DEFAULT '0', `modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), KEY `login` (`user_id`), KEY `written_off` (`closed`), KEY `date` (`date`), KEY `status` (`status`), KEY `code` (`url`), KEY `payment_status` (`paid`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; ': Invalid default value for 'payment_date'

Error performing query '/* Create table s_users */ CREATE TABLE `s_users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `email` varchar(255) NOT NULL, `password` varchar(255) DEFAULT '', `name` varchar(255) DEFAULT '', `group_id` int(11) NOT NULL DEFAULT '0', `enabled` tinyint(1) DEFAULT '0', `admin` tinyint(1) DEFAULT '0', `perm` varchar(200) CHARACTER SET ascii DEFAULT '', `last_ip` varchar(15) DEFAULT '', `last_login` timestamp NULL DEFAULT '1970-01-01 02:01:00', `created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (`id`), UNIQUE KEY `email` (`email`) USING BTREE, KEY `admin` (`perm`), KEY `perm` (`admin`), KEY `created` (`created`), KEY `last_login` (`last_login`) ) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC; ': Invalid default value for 'last_login'

Error performing query '/* Data for table s_users */ INSERT INTO `s_users` (`id`,`email`,`password`,`name`,`group_id`,`enabled`,`admin`,`perm`,`last_ip`,`last_login`,`created`) VALUES (1, 'admin@admin.ad', '6666666666666555555555555555566666666', 'admin@admin.ad', 0, 1, 1, '0:1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:22:23', '127.0.0.1', '2017-11-12 03:14:23', '2017-11-12 03:08:40'); ': Table 'vm.s_users' doesn't exist

База данных успешно настроена
и далее: created user id: Не могу добавить пользователя в БД


Проблемы с версией mysql. Напиши какая у тебя версия.

Я ставлю на нескольких версиях mysql, видимо у тебя какая-то другая.

Вот тебе измененный файл rapida.sql, надо заменить файл в установщике rapida.sql на этот
 

Вложения

  • rapida.zip
    7,8 KB · Просмотры: 7
Последнее редактирование:
А демо где то есть онлайновое ?
 
Назад
Сверху