Игорь

Игорь

С нами с 12 сентября 2018; Место в рейтинге пользователей: #588

Minishop не дает выбрать класс-обработчик в способах оплаты

Здравствуйте.
Столкнулся с проблемой: при нажатии на поле со списком классов-обработчиков появляется ошибка — Код 200 The key is not valid!!!
Как победить?
скрин
Игорь
16 октября 2020, 12:04
modx.pro
68
0

Проблема с кастомной ценой в minishop2

Здравствуйте.
Такая ситуация возникла:
У меня цена формируется в карточке товара с учетом разных дополнительных условий. Потом эта новая цена попадает в корзину через плагин на событие msOnAddToCart
if(!empty($_POST['price'])) {
$tmp = $cart->get();
$tmp[$key]['price'] = $_POST['price'];
$cart->set($tmp);
}
Но, на странице оформления заказа, если «неудачно» нажать кнопку «Сделать заказ» (т.е. если не все обязательные поля заполнены и появляется сообщение об этом), а потом заполнить любое поле input — цена (и, соответственно, вся стоимость) пересчитывается по базовой цене.
При успешном оформлении заказа в заказ тоже попадает базовая цена, а не измененная… вероятно нужен еще какой-то плагин, что бы цена менялась не только в корзине, но и в заказе?
Прошу помочь разобраться.
Игорь
07 октября 2020, 09:06
modx.pro
133
0

msProducts - как получить массив с данными для дальнейшей выборки?

Здравствуйте!
Мне нужно сделать карусель товаров, которая имеет два блока: т.е. в верстке сначала выводится блок с картинками, а потом еще один блок с описаниями и характеристиками.
Два раза запускать [[!msProducts]] не хочется, поэтому решил сделать через fenom:
{set $items = '!msProducts' | snippet : [
    'parents' => 2,
   ....
]}

{foreach $items as $item}
    ...
{/foreach}
Но так, почему-то не работает — т.е. foreach не понимает массив $items… что делать?
Игорь
28 июля 2020, 18:25
modx.pro
277
0

Количество товаров на странице оформления заказа minishop

Здравствуйте!
Как вывести количество заказанных товаров на странице оформления заказа?
Код, который это дело выводит в корзине ( {$total.count} ) тут не работает, а других вариантов в гугле не нашел.
Игорь
12 июня 2020, 20:53
modx.pro
151
0

Адрес в профиле пользователя Office

Здравствуйте.
Нужно на странице профиля добавить основной адрес для доставки с возможностью редактирования.
Вставил поля:
<div class="form-group row">
        <label class="col-md-2 col-form-label">улица</label>
        <div class="col-md-10">
            <input type="text" name="address" value="{$address}" placeholder="город" class="form-control">
         </div>
    </div>
    <div class="form-group row">
        <label class="col-md-2 col-form-label">дом</label>
        <div class="col-md-10">
            <input type="text" id="building" name="building" value="{$extended['building']}" placeholder="Дом" class="form-control">
        </div>
    </div>
    <div class="form-group row">
        <label class="col-md-2 col-form-label">квартира</label>
        <div class="col-md-10">
            <input type="text" id="room" name="room" value="{$extended['room']}" placeholder="Квартира"
                   class="form-control">
         </div>
    </div>
C полем «Улица» все хорошо, а вот поля «Дом» и «Квартира» никак не хотят сохранятся.
Нужно какой-то плагин написать на событие OnUserProfileBeforeSave, наверное? У меня пока ничего не получается. Помогите пожалуйста.
Игорь
11 июня 2020, 11:40
modx.pro
1
187
0

Не получается получить данные через json_decode

Здравствуйте.
Хотел вставить в mFilter2 фильтр по MIGX полю, вот по этой статье modx.pro/solutions/14715.
Как обычно, сразу ничего не получилось и стал смотреть код кастомного класса. Споткнулся вот на этом:
foreach ($values as $value => $ids) {
            if ($value !== '') {
//print_r($value); 
//print_r('
');    
//$value='[{"MIGX_id":"2","title":"test","price":"100","weight":"","key":"test","value":"test2"}]';                
                $migxs = json_decode(str_replace('"', '"', $value));
//var_dump(json_decode($value));            
                foreach ($migxs as $migx) {
                    $title = trim($migx->title);
                    if (!is_array($results[$title]['resources'])) {
                        $results[$title]['resources'] = array();
                    }
                    $results[$title] = array(
                        'title' => $title,
                        'value' => $migx->value,
                        'type' => 'tv',
                        'resources' => array_merge($results[$title]['resources'], $ids)
                    );
                }
            }
        }
Игорь
02 июня 2020, 19:40
modx.pro
98
0

Minishop2 не любит таблицы?

Здравствуйте.
Натягиваю верстку на MODX. Есть таблица Wishlist — таблица это конечно плохо, но мне какая разница, если сказали сделать так как в верстке.
Сделал все по аналогии с предыдущими проектами, но только с таблицей, примерно так:
Игорь
15 мая 2020, 12:53
modx.pro
200
0

Minishop2 минимальная сумма для способа доставки

Здравствуйте.
Нужно что бы один из способов доставки был доступен только при достижении в корзине определенной суммы.
Прочитал, что подобное можно сделать с помощью подключения собственного класса доставки docs.modx.pro/komponentyi/minishop2/razrabotka/sluzhbyi/podklyuchenie#Пример-подключения-собственного-класса-доставки.
Класс подключил, но не знаю как переделать саму функцию под мою потребность (что бы способ доставки отображался только когда сумма в корзине больше минимальной).
<?php
if(!class_exists('msDeliveryInterface')) {
    require_once dirname(dirname(dirname(__FILE__))) . '/model/minishop2/msdeliveryhandler.class.php';
}

class msDeliveryHandlerMsk extends msDeliveryHandler implements msDeliveryInterface{

    public function getCost(msOrderInterface $order, msDelivery $delivery, $cost = 0) {

        $freedeliverysumm = $this->modx->getOption('deliverys');
//print_r ($freedeliverysumm);
        $cart = $order->ms2->cart->status();
        $cart_cost = $cart['total_cost'];
        if($cart_cost > $freedeliverysumm){
            return $cost;
        }else{
            $delivery_cost = parent::getCost($order, $delivery, $cost);
            return $delivery_cost;
        }
    }
}
Игорь
30 апреля 2020, 17:14
modx.pro
116
0

TVTable как получать значения из ячеек таблицы

Здравствуйте.
Первый раз столкнулся с компонентом TVTable и не могу ничего понять пока. (
В общем ситуация такая:
1. Есть дополительное поле с таблицей TVTable, называется «Prices» — в нем некая таблица (первая колонка — размеры, остальные — различные параметры).
2. Есть еще одно дополнительное поле Авто-метка «Sizes» — в нем просто список размеров.
3. На странице шаблона выводится список из поля «Sizes»:
{if $_modx->resource.Sizes?}
<div class="form_size">
<p class="h4">Выберите размер</p>
<div class="d-flex flex-wrap ">
{set $sizes = $_modx->resource.Sizes | split}
{foreach $sizes as $size first=$first}
<div class="form___size_item">
<span>{$size}</span>
<p>ВОТ СЮДА НУЖНО ВСТАВИТЬ ЗНАЧЕНИЕ ИЗ ЯЧЕЙКИ ТАБЛИЦЫ</p>
</div>
{/foreach}
</div>
</div>
{/if}
Мне нужно в этот цикл подставить соответствующие значения из таблицы, т.е. сравнивать размеры по названию и, при совпадении, подставлять параметр из определенной колонки таблицы.
Как это можно реализовать?
Игорь
20 марта 2020, 11:32
modx.pro
1
239
0

Не получается сделать запрос с условием OR для pdoResources

Здравствуйте/
Пытаюсь сделать фильтр из нескольких блоков, в одном из которых есть группа чекбоксов с возможностью множественного выбора. Код сниппета:
<?php
//Filter Fields Settings
$filter = array();

$tags = $_GET['tags'];
if($tags){
    $idx = 0;
    foreach ($tags as $tag){ 
        if($idx == 0){$idx= 1;$comma='';}else{$comma=' OR ';}
         $filter_tags .= $comma."sposob_filtr LIKE '%".$tag."%'";
    }
    $filter[] = $filter_tags;
}

if($_GET['mysum']) {
	$filter[] = 'min_sum_filtr<='.$_GET['mysum'];
	$filter[] = 'max_sum_filtr>='.$_GET['mysum'];
}

//End Settings
	print_r($filter);
//Sort
if($_GET['sortby']) {
	$sortby = $_GET['sortby'];
} else {
	$sortby = 'pagetitle';
}
if($_GET['sortdir']) {
	$sortdir = $_GET['sortdir'];
} else {
	$sortdir = 'asc';
}
//End Sort

//Offset
$offset = 0;
if($_GET['offset']){
	$offset = $_GET['offset'];
}

if($filter) {
	$where = $modx->toJSON(array($filter));
} else {
	$where = '';
}

$params_count = array(
	'parents' => $parents,
	'limit' => 0,
	'tpl' => '@INLINE ,',
	'select' => 'id',
	'includeTVs' => $fields,
	'showHidden' => '1',
	'where' => $where
	);

$count = $modx->runSnippet('pdoResources',$params_count);
$count = count(explode(',',$count))-1;
$modx->setPlaceholder('count',$count);

$params = array(
	'parents' => $parents,
	'limit' => $limit,
	'offset' => $offset,
	'tpl' => $tpl,
	'select' => 'id,pagetitle,introtext,content',
	'includeTVs' => $fields,
	'showHidden' => '1',
	'sortby' => $sortby,
	'sortdir' => $sortdir,
	'where' => $where
	);

$more = $count - $offset - $limit;
$lim = $more > $limit ? $limit : $more;

$button = '';
if($more > 0){
	$button = '<div class="ajax-filter-count" data-count="'.$count.'"><a href="#" class="ajax-more">Загрузить еще '.$lim.' из '.$more.'</a></div>';
}

return $modx->runSnippet('pdoResources',$params).$button;
Проблема в том, что если выбрать несколько чекбоксов и еще другое условие, то это второе условие не срабатывает (насколько я понял, это происходит из-за того, что OR в чекбоксах «перекрывает» новое условие). Переменная $filter, которая потом должна преобразовываться в json строку для where выглядит так:
Array ( [0] => sposob_filtr LIKE '%cash%' OR sposob_filtr LIKE '%visa%' [1] => min_sum_filtr<=100 [2] => max_sum_filtr>=100 )
Логично предположить, что группу условий с OR нужно взять в скобочки, но у меня не получается…
Что делать? (
Игорь
29 января 2020, 16:27
modx.pro
148
0