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

По ресту все куда проще, в разы. Делаешь запрос - получаешь джисон ответ. Пример

#Available methods and parameters
Products:
rest/products/
rest/products/id/{id}
rest/products/category_id/{id}
rest/products/brand_id/{id}
rest/products/featured/{0|1}
rest/products/discounted/{0|1}
rest/products/in_stock/{0|1}
rest/products/has_images/{0|1}
URL parameters: limit, page, id, category_id, brand_id, featured, discounted, in_stock, has_images

Для просмотра ссылки Войди или Зарегистрируйся
 
По ресту все куда проще, в разы. Делаешь запрос - получаешь джисон ответ. Пример

#Available methods and parameters
Products:
rest/products/
rest/products/id/{id}
rest/products/category_id/{id}
rest/products/brand_id/{id}
rest/products/featured/{0|1}
rest/products/discounted/{0|1}
rest/products/in_stock/{0|1}
rest/products/has_images/{0|1}
URL parameters: limit, page, id, category_id, brand_id, featured, discounted, in_stock, has_images

Для просмотра ссылки Войди или Зарегистрируйся

неплохо, но вижу слабое место, запросы идут через GET, а туда много не положить. Для простых вещей подойдет, но со сложными так уже не выйдет. У меня кеширующий механизм сохраняет в виде строки то, что попадает в $filter, там сейчас поле varchar(3300), а когда было 3000 - не хватало места. Там, конечно есть небольшой оверхед, но он небольшой. То есть параметры в фильтре бывают по-настоящему длинными и они не поместятся в GET запрос.

Я сейчас начал тестировать полностью совпадающий с бекендом доступ к api через xhr. Все будет работать через 1 точку. Т.е. в запросе будет только указание, что это xhr, а все остальное будет идти через POST запрос в виде JSON.
В бекенде мы пишем products->get_products($filter), а тут будет:

Код:
$req = {
class: 'products',
method: 'get_products',
arguments: {
   'filter: {1,2,3,4}
   }
} ;

xhrApi(req);
Получаем данные из api.

А если надо из view получить что-то, то там будет так.
Код:
$req = {
uri: '/catalog/something?1=2&3=4',
blocks: {
   'products', 'pagination','cart'
}
} ;

xhrView(req);

Т.е. тут можно будет получить те данные, которые View передают в шаблон смарти для генерации окончательного HTML.


Rapida 0.0.7.3

Код:
=================
v0.0.7.3 26.10.2017
=================
- Исправлен ajax/search_products.php. Подсказки в поисковой строке.
- Исправлена ошибка products->add_image() в нумерации поля position в таблице s_images. Первое изображение должно иметь позицию 0
- Изменена кодировка полей task в таблицах s_queue s_queue_full. Раньше там была ascii, сейчас utf8, иначе неправильно сохраняются задания в которых присутствуют русские буквы. Такие задания возникают при выполнении поисковых запросов.
- В методе products->add_image() изменена логика, теперь при добавлении картинки с position 0, сразу вносится запись 
в таблицу s_products в поле image. Раньше туда изображение попадало только во время манипуляций с картинками, например, в админке. Т.е. требовалось выполнение метода products->update_image()
- В методе image->download_image() при скачивании изображение с position 0, сразу изменяется 2 таблицы s_image и s_products.
- Добавлен доступ к api через xhr. Для удобства работы необходимые функции собраны в файле js/main.js. Непосредственно для работы с api нужна 1 функция apiAjax(). В целях безопасности доступ разрешен только к следующим классам:
    $allowed['classes'] = array('products', 'brands', 'variants', 'features', 'image', 'cart', 'blog', 'comments');
    $allowed['methods'] = array('get_products', 'get_product', 'get_variants', 'get_variant', 'get_features', 
        'get_options', 'get_cart', 'get_brands', 'get_brand', 'get_comments', 'get_comment', 'get_images');
- Небольшой баг в view/ProductsView.php и view/ProductView.php, при переборе вариантов товара, отсутствующего на складе. varints->get_variants() возвращал false, а потом производился перебор, что приводило к ошибке.
- В метод db->dump_table() добавлен 3 необязательный аргумент $skip_create, если true - таблица не удаляется и не создается заново. Вместо drop table; create table - выполняется очистка таблицы truncate table. Метод используется при создании дампа.

Для просмотра ссылки Войди или Зарегистрируйся
 
Последнее редактирование:
ничего лучше симплы мне встретить не удалось
а вы в процессе такой проверки (правда очень интересно) не пробовали cms diafan? там тоже используется этремальное кэширование
 
а вы в процессе такой проверки (правда очень интересно) не пробовали cms diafan? там тоже используется этремальное кэширование
Не надо путать нормальную работу и экстремальные условия, когда ничего динамически не обновляется. Это-же не бложик, а интернет-магазин
 
а вы в процессе такой проверки (правда очень интересно) не пробовали cms diafan? там тоже используется этремальное кэширование
Такую систему не пробовал. Исследовались ecommerce CMS.
<-------------- добавлено через 599 сек. -------------->

# RAPIDA Ecommerce CMS v0.0.8
## SimplaCMS 2.3.8 fork


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

## =================
## v0.0.8 03.11.2017
## =================
### features:
- Начата работа по новой структуре контроллеров (в терминах Simpla - модуль). На смену маршрутизации через файл .htaccess, создан главный контроллер (coMaster). Все новые контроллеры для порядка расположены в каталоге api и подключаются, аналогично всем классам из файла api/Simpla.php. Теперь все, что делает .htaccess - направляет все запросы файлу index.php, или в admin/index.php. Остальная работа выполняется главным контроллером. Принцип работы такой: Главный контроллер производит первичный разбор адресной строки. В случае, если в get части запроса есть параметр xhr, эстафета передается контроллеру XHR запросов (coXhr), во всех остальных случаях работу продолжает контроллер Simpla (coSimpla), который работает по принципу заложенному в Simpla (подключает контроллер view/IndexView.php). В связи с этими изменениями потребовалось изменение способа формирования ссылки плугином для Smarty resize (api/Design.php), Теперь ссылка на файл формируется сразу в get параметр url, а не как раньше прямым текстом в адресной строке.
- Внедрены ЧПУ ссылки.
- Для работы ЧПУ добавлено поле trans в таблицу s_options_uniq. Полю trans задана кодировка ascii, если в дальнейшем понадобится создание индекса по этому полю. Индекс с ascii меньше, чем c utf8. В настоящее время поле trans используется исключительно для отображения, поиск происходит только по полям id и md4.
#### Для обновления c версии 0.0.7.3 необходимо выполнить следующие 2 sql запроса:
```
Код:
ALTER TABLE `s_options_uniq` ADD `trans` VARCHAR(512) CHARACTER SET ascii COLLATE ascii_general_ci NULL DEFAULT NULL AFTER `val`;
ALTER TABLE `s_features` CHANGE `uri` `trans` VARCHAR(200) CHARACTER SET ascii COLLATE ascii_general_ci NULL DEFAULT NULL;
```
### bugs:
- Исправлен баг в js скрипте simpla/design/html/product.tpl. Поскольку добавление картинок перетаскиванием работает только, когда товар уже создан - при создании товара поле для перетаскивания скрыто.
- В админке ссылка "открыть товар на сайте" появляется сразу при открытии товара.
- Исправлена ошибка view/ProductView.php. Дублировались варианты товара.
- Изменен механизм поиска с заданным брендом и опциями, теперь брендов, как и опций можно выбрать сразу несколько. Пример части адресной строки с несколькими брендами сразу "/brand-citilux.ideal_lux.arte_lamp.st_luce/"


Rapida v0.0.8
Код:
https://github.com/legale/rapida/blob/master/distro/rapida_0.0.8.zip
<-------------- добавлено через 409 сек. -------------->
Надо придумать простую и надежную систему обновлений версий, чтобы можно было вообще без git обновляться в 1 клик. Есть у кого-то идеи?
 
Последнее редактирование:
а вы в процессе такой проверки (правда очень интересно) не пробовали cms diafan? там тоже используется этремальное кэширование
Посмотрел этот диафан, на коробочку только удалось посмотреть. ) Как ему под капот заглянуть?
 
По diafan. Хоть им и дали чемпионство по высоким нагрузкам, у них же на форуме обсуждались неоптимальные решения по выборкам в фильтрах или по свойствам, не помню уже точно. Может исправили, ибо давненько дело было, а может и нет.
 
# RAPIDA Ecommerce CMS
## SimplaCMS 2.3.8 fork


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

## =================
## v0.0.8.1 05.11.2017
## =================
### features:
- У значений и названий опций обрезаются пробелы по краям на уровне самих моделей update_option() add_feature() update_feature()
- Добавлена возможность импорта сжатых в формате gz файлов csv.
- Теперь экран импорта csv не заполняется импортируемыми товарами, только строка прогресса и отображение progress: x of x kb
- Добавлены новая функции классу dtimer, предназначенному для отладки. Теперь записываемому в журнал сообщению может быть установлен тип 1 - ошибка, 2 - предупреждение, 3 - сообщение. dtimer::log('error', 1). Если тип не задан, сообщению устанавливается тип 3. При отображении тип сообщения выводится в первой колонке и окрашивается в зависимости от типа, ошибка - красный, предупреждение - желтый, сообщение - белый. Теперь для отладки все ошибки будут выводится именно через dtimer, trigger_error больше использоваться не будет.
- Еще 1 функция классу dtimer, теперь вместе с сообщение записывается сколько оперативной памяти занимает скрипт на момент записи сообщения. Память отображатся с параметром real_usage, get_memory_usage(true)
- В api/Simpla.php добавлена функция умной конвертация единиц времени и единиц измерения данных. Теперь функции используюся в index.php и api->dtimer для понятного отображения секунд и мегабайт.
- В config.ini добавлена опция для выключения кеша. cache = false;
- Наконец внедрен мультифильтр опций товаров в каталоге. Теперь можно выбирать сразу несколько опций у 1 фильтра, при этом доступными у остальных фильтров будут только те свойства, которые действительно возможно выбрать.

### improvements:
- Уменьшено количество данных передаваемых для записи в очередь заданий по методу get_options. Вместо $ids, передаются array_values($ids), тем самым сокращая объем за счет длинных ключей массива..
- Избавляюсь от неудобного наследия Simpla. Постепенно изменяю контроллеры на работу с массивами, а не объектами, как изначально заложено в Simpla. get_products(), get_related_products(), get_images(), get_variants(), get_variant(), get_categories(), get_category() (почти все) теперь возвращают массив. Чтобы сэкономить память при создании дерева категорий активно использовалась рекурсия. Дело в том, что в php присвоение объектов происходит по ссылке по умолчанию. Простой тест:
```
<?php
$o = new stdClass();
$o->prop = 120;
$b = $o;
$b->prop = 100;
print_r($o);
```
При переходе на массив в категориях нужно было сохранить ссылочное присвоение. Это удалось сделать через оператор ссылки &.

### bugs:
- Для возможности долгой работы скриптов в .htaccess добавлены параметры php_value, в т.ч. max_execution_time 30000.
- Устранен баг view/ProductsView.php. Были ошибки для товаров без изображений.
- Устранен баг api/ControllerMaster.php при открытии страниц 1 уровня (/cart/ /blog/).
- Изменены права доступа к создаваемым файлам кеша на 755. Устранена баг, связанный с некорректным выставлением прав доступа на файл из переменной. chmod($file, 755) не тоже самое, что $var = '755' chmod($file, $var). Все дело в том, что при непосредственном указании параметра в функцию, параметр воспринимается как восьмеричное число. Если установление параметра происходит из переменной, число это будет или строка значения не имеет. Значение воспринимается как десятеричное число, которое конвертируется в восьмеричное. Для устранения этой проблемы в конструкторе класса cache, значение параметра default_chmod из config/config.ini сразу преобразуется из восьмеричного в десятеричное. Соответственно дальше при преобразовании в функциях mkdir chmod их фактическое значение не изменяется.
- Устранен небольшой баг в coMaster->parse_uri_path(). Некорректный формат адресной строки приводил к ошибке.
- Исправлена ошибка simpla/FeaturesAdmin.php. Изменение сразу нескольких свойств не работало.
- Устранена ошибка в методе features->get_options() при формировании keyhash.
- Устранены баги с открытием страницы регистрации пользователя /register и поиска товара /search
- Устранен баг в карточке товара в админке. Ошибки в опциях товара после сохранения изменений.
 
У меня есть модуль подменю для страниц, создание многоуровнего меню. Не хотите добавить его в вашу cms систему ?. Я считаю это очень нужная функция.
 
У меня есть модуль подменю для страниц, создание многоуровнего меню. Не хотите добавить его в вашу cms систему ?. Я считаю это очень нужная функция.
Спасибо. Очень много нужного и интересного у меня уже собралось. Я даже не пытаюсь внедрять, потому что сначала надо добиться с существующим функционалом стабильной и надежной работы. Пока все мои попытки просто отшлифовать существующий функционал приводят к все более глубоким изменениям системы, что естественно вызывает новые баги.

Вчера плюнул на совместимость с шаблонами от симплы и начал переписывать все подряд. Знаете как бывает, когда хочешь просто поменять обои в квартире. Отрываешь старые, а они отваливаются вместе со штукатуркой, а там под ними древняя проводка, которая на ладан дышит. В итого ты уже со штроборезом делаешь каналы под проводку, а как тут не поменять распределительный щит?
 
Назад
Сверху