Тодор

Тодор

С нами с 08 мая 2018; Место в рейтинге пользователей: #241
Тодор
06 апреля 2023, 12:52
0
Возникала такая ошыбка в админке. Если выбрать отделение «Поштомат» то невозможно создать ТТН. Выдаёт ошыбку: При создании ТТН произошла ошибка. OptionsSeat is empty. Все поля для НП заполнены
Тодор
21 марта 2023, 22:37
1
0
Лучше написать свой снипет (что то типо такого):
<?php
$tvId = "TV id";
$tvr = $modx->getCollection('modTemplateVarResource', array(
  'tmplvarid' => $tvId,
  'contentid:IN' => [1,2,3]//список ИД ресурсов
));
foreach($tvr as $tv){
    $value = json_decode($tv->get('value'), 1);
    foreach($value as $item){
        echo $item['title'];
    }
}
Тодор
16 марта 2023, 21:40
+1
Передавай переменную с помощю fenoma
{'sidebar_left' | chunk: ['border' => '2']}
потом ловиш
{$border} или {$_pls['border']}
Тодор
20 февраля 2023, 22:25
0
Если не поможет, то подключи свой сервис cart по етой инструкции, и измени там add() или если тебе надо именно при изменни количества, то меняй change()
Тодор
20 февраля 2023, 22:16
0
Пробуй так:
<?php
$minimal = 5;
switch ($modx->event->name) {
    case 'msOnBeforeChangeInCart':
        $count = &$modx->event->params['count'];
        if ($minimal > 1 && $count < $minimal) {
            $count = $minimal;
        }
        $modx->event->returnedValues['count'] = $count;
        break;
}
Тодор
20 февраля 2023, 16:38
0
Я использу вот такой снипет для отладки ответов после submit():
<?php
$formFields = $hook->getValues();
$count = (float) $formFields['count'];
$id = (int) $formFields['id'];
if($id <= 0){
    $hook->addError( 'id', "Неправильное ID товара" );
    return false;
}
if ($miniShop2 = $modx->getService('miniShop2')) {
    $miniShop2->initialize($modx->context->key, array(
        'json_response' => true,
        'max_count' => 1000,
        'allow_deleted' => false,
        'allow_unpublished' => false
    ));
    $tmp = $miniShop2->cart->get();
    $miniShop2->cart->clean();
    $miniShop2->cart->add( $id, $count, $formFields['options']);
    $miniShop2->order->add( 'receiver', $formFields['receiver'] );
    $miniShop2->order->add( 'email', $formFields['email'] );
    $miniShop2->order->add( 'delivery', $formFields['delivery']); // id метода доставки
    $miniShop2->order->add( 'payment', $formFields['payment']); // id метода оплаты
    if($response = $miniShop2->order->submit()){
        if($response['success'] != 1){
            $response = json_decode($response, 1);
            $hook->addError('receiver', $response['message']);
            if(!empty($response['data'])){
                foreach($response['data'] as $field){
                    $hook->addError($field, $response['message']);
                }
            }
            return false;
        }
        $miniShop2->cart->set($tmp);
        return true; // Успешное оформление заказа
    }else{
        $hook->addError('receiver', 'Ошибка при оформлении заказа');
        return false;
    }
}else{
    $hook->addError("receiver", "Проблема инициализации магазина");
    return false;
}
Тодор
20 февраля 2023, 15:20
+1
Если не ошибаюсь, то етот код добавит в уже существующе корзину товар, после чего оформляет заказ. Но заказ в 1 клик ето покупка только поточного товара. По етомо после инициализации минишопа я бы еще добавил:
$tmp = $ms2->cart->get();
$ms2->cart->clean();
а после оформления заказа, вернуть назад прежнее содержимое корзини
$ms2->cart->set($tmp);
Тодор
20 февраля 2023, 12:14
0
Добрий день! После выбора области и населеного пунтка, если оставлять поле «Отделение» пустым, и нажать на карту, то открывается ПУСТАЯ карта, без отделении. На демо видео показано что там уже дожны подтягиватся отделения. Если уже выбрать отделение и потом открыть карту — то там уже есть отделения.
И вторая проблема ето то что в селах не подтягиваються названия улиц для — Доставки курером.
Тодор
12 октября 2022, 18:53
+1
По умолчанию поле receiver не выводиться (https://prnt.sc/0zVDfqsJwzG4), есть поеле customer — но в нее передаеться fullname с таблицы пльзователя. Если нужно именно receiver с таблицы msOrderAddress, то нужно изменить mgr/orders/getlist (core/components/minishop2/processors/mgr/orders/getlist.class.php). В prepareQueryBeforeCount добавить leftJoin (после 42 строки):
$c->leftJoin('msOrderAddress', 'Address');
И дописать в select — Address.receiver as receiver (перед return)
$c->select(
    $this->modx->getSelectColumns('msOrder', 'msOrder', '', array('status', 'delivery', 'payment'), true) . ',
    UserProfile.fullname as customer, User.username as customer_username,
    Status.name as status, Status.color, Delivery.name as delivery, Payment.name as payment, Address.receiver as receiver'
);
И тогда тебе будет доступно поле receiver

Така ремарка, после обновления minishop-а, ети изминения сотруться
Версия minishop-а, у меня 2.4.18 — в новых может уже добавили
Тодор
08 февраля 2022, 17:31
0
Если возвращается все и скобки и надпись lexicon"{'LabelA' | lexicon}" — то скорее всего феном не вкючен
Тодор
08 февраля 2022, 17:24
0
Нужно вручную перебирать TV
$output = [];
foreach($tv as $item){
    $output[$item['MIGX_id']] = $item;
}
После чего обращатся к определенной(нужной) ячейке:
$output[$MIGX_id];
Тодор
12 января 2022, 15:38
0
Опиши нормально задачу, что значит согласно h1, покажи пример URL который должен быть, и не просто пример только с export_country, а со всеми выбраными фильтрами: export_country, export_city, mport_country, import_city, cargo_type, transport_type
Тодор
21 декабря 2021, 18:26
+2
я не самый опытный в этом вопросе, но посмотрю может как-нибудь соберу вместе свои примеры по этому вопросу и опубликую
Тодор
21 декабря 2021, 18:23
1
+2
Здесь немного сложнее, нужно расширить класс mse2FiltersHandler по этой инсрукции и отредактировать метод getSortFields, перед return нужно добавить еще пару строк
if(!empty($this->config['sortby'])){
    //если хочеш использовать те параметри что были при инициализации mFilter2
    $sortby = explode(",", $this->config['sortby']);
    array_unshift($data,  $sortby[0]); 
    //можно и напрямую заново определить sortby
    //array_unshift($data, "CASE `Data`.`vendor` WHEN 7 THEN 1 ELSE 0 END ASC"); 
}
Тодор
20 декабря 2021, 18:49
4
+3
Убери
'sort'=>'resource|menuindex:asc',
оставь только
'sortby' => 'CASE `Data`.`vendor` WHEN 7 THEN 1 ELSE 0 END ASC, msProduct.id',
Тодор
20 декабря 2021, 16:24
0
Что именно не помогоает? Єто общий принцип как именно можна ето сделать. Дальше все зависит от того, к какому снипету ето надо прикрутить и поддержывает ли етот снипет такие параметры
Тодор
20 декабря 2021, 15:03
+1
'sortby' => 'CASE `Data`.`vendor` WHEN __VENDOR__ID__ THEN 1 ELSE 0 END ASC, msProduct.id',
Тодор
17 декабря 2021, 14:25
0
foreach ($gallery as $rank => $v) {
    $sql = "UPDATE {$modx->getTableName('msProductFile')} SET rank=".$rank." WHERE product_id=".$resource_id." AND file = '{$v}'";
    $modx->exec($sql);
}
Тодор
17 декабря 2021, 14:16
+3
ALTER TABLE `modx_ms2_orders` AUTO_INCREMENT = 100000
Тодор
03 декабря 2021, 17:13
+1
if(empty($resource->get('content')) && empty($resource->getTVValue('video') && $resource->get('template')==2){
}