Ну, мы, собственно, и пытались заложить такую основу, чтобы при желании можно было сделать что угодно. Просто кому-то какие-то фишки нужны, а кому-то не нужны, поэтому не все в ядро сборки попадает.
Не так давно вышел новый релиз модуля Xlexicon.
Из нового только исправление багов. Все подробности на гитхабе. Пакет выложил в наш репозиторий. На офф. репе еще не прошло модерацию.
Пару недель назад на сайте появился топик насчет учета стоимости товара. Помощь советами оказалась недостаточной, и человек объявил платную задачу. Тут как раз совпало, что есть у меня и времени немного, и отвлечься хотелось, да и ссылки на нас в подвале сайта есть (что конечно же приветствуется и располагает). В общем, взялся я за это дело сегодня. К слову, простейшая реализация этого действительно не отняла много времени, то есть в заказ сумма записывалась. Но доработка до того состояния, чтобы стоимость доставки учитывалась по всему сайту, в том числе и выводилась инфа в админке в управлении заказами, и оплата корректно проходила, и от 3000 бесплатно было и т.д. и т.п. — все это потребовало еще времени (в общей сложности на все ушло 5 часов). Что получилось, предлагаю вам самостоятельно покликать: welight.ru (Андрей, надеюсь ты не против еще одной индексируемой ссылки на сайт и дружеского дебагинга? :)).
В целом все работает неплохо, и при выборе типа доставки сразу идет пересчет общей стоимости с учетом скидки (сразу на сервере), суммы обновляются везде встроенным Ajax-механизмом корзины. И если в корзине меняется содержимое (добавляются/удаляются товары и т.п.), то общая стоимость пересчитывается с учетом выбранного типа доставки. То есть можно добавить товар, пойти в корзину, выбрать способ доставки, после чего пойти продолжить покупки, и если сумма заказа превысит 3000 рэ, то общая сумма в корзине пересчитается с учетом скидки на бесплатную доставку.
Информация о сумме заказа и стоимости и типа доставки выводится и в личном кабинете пользователя, и в управлении заказами, и в письмах с информацией о заказах.
?
?
Вообще, конечно же, этот функционал напрашивается в саму сборку магазина (плюс в ходе выполнения этой задачи я столкнулся с некоторыми моментами, которые требуют улучшения), но это, опять-таки, требует времени и немало. Так что, если кто желает поторопить появление нового функционала, поддерживайте проект рубликом (форма внизу).
<< $c->innerJoin('ShopmodxProduct', 'Product'); Это не требуется, так как web/catalog/category/products/getdata расширяет web/catalog/products/getdata, в котором уже добавлено условие на таблицу.
if($this->getProperty('sm_price')){ $params = $this->getProperty('sm_price');
Это тоже лучше упростить до
if($params = $this->getProperty('sm_price')){
Итоговый код (без лишних else):
if($params = $this->getProperty('sm_price')){ $q = array(); foreach($params as $key=>$p){ $q[] = 'Product.sm_price '.$key.' '.$p; } $query->where($q); }
Но это если рассматривать именно ваш код. А вообще правильней просто добавить $where еще перед вызовом процессора. {$params.where[] = «sm_price between {$prices.0} and {$prices.1}»}
Не помню. Были разные по мере работ. Буквально час назад заработало. Поменял запись из примера:
$objReader = PHPExcel_IOFactory::createReader('Excel2007'); // $objPHPExcel = $objReader->load($xls);
На:
$objPHPExcel = PHPExcel_IOFactory::load($xls);
$xls — tv путь к файлику экселя. И сейчас всё работает.
не нашел решилось это или нет, предлагаю свой вариант.
if($this->getProperty('sm_price')){ $params = $this->getProperty('sm_price'); $q = array(); $q[] = "Product.resource_id = {$this->classKey}.id"; foreach($params as $key=>$p){ $q[] = 'Product.sm_price '.$key.' '.$p; } $c->innerJoin('ShopmodxProduct', 'Product', implode(' AND ',$q)); }else{ $c->innerJoin('ShopmodxProduct', 'Product'); }
в процессоре web/catalog/category/products/getdata
и до вызова процессора
{$params["sm_price"] = [">=" => $prices.0, "<=" => $prices.1]}
Да, я так и получал TV, там у меня ошибки именно в PHPExcel. Спасибо.