Тодор

Тодор

Был в сети 29 июня 2026, 13:05
Заказы не принимаю
Ну вот ты пешеш 3 плесхолдера:
$placeholders[$tvlogo] = $tvValue;
$placeholders[$tvlogo.'_width'] = $width;
$placeholders[$tvlogo.'_height'] = $height;
а значение $tvlogo = 'image';. Значит то что выше это тоже самое что и:
$placeholders['image'] = $tvValue;
$placeholders['image_width'] = $width;
$placeholders['image_height'] = $height;
соотвественно:
<img class="lazy" src="[[+amp.image]]" width="200" height="200" alt="[[+amp.pagetitle]]">
Лучше написать свой снипет (что то типо такого):
<?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'];
    }
}
Я использу вот такой снипет для отладки ответов после 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;
}
Если не ошибаюсь, то етот код добавит в уже существующе корзину товар, после чего оформляет заказ. Но заказ в 1 клик ето покупка только поточного товара. По етомо после инициализации минишопа я бы еще добавил:
$tmp = $ms2->cart->get();
$ms2->cart->clean();
а после оформления заказа, вернуть назад прежнее содержимое корзини
$ms2->cart->set($tmp);
Добрий день! После выбора области и населеного пунтка, если оставлять поле «Отделение» пустым, и нажать на карту, то открывается ПУСТАЯ карта, без отделении. На демо видео показано что там уже дожны подтягиватся отделения. Если уже выбрать отделение и потом открыть карту — то там уже есть отделения.
И вторая проблема ето то что в селах не подтягиваються названия улиц для — Доставки курером.
По умолчанию поле 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 — в новых может уже добавили
Опиши нормально задачу, что значит согласно h1, покажи пример URL который должен быть, и не просто пример только с export_country, а со всеми выбраными фильтрами: export_country, export_city, mport_country, import_city, cargo_type, transport_type
Здесь немного сложнее, нужно расширить класс 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"); 
}