Дмитрий Мансуров

Дмитрий Мансуров

С нами с 03 сентября 2014; Место в рейтинге пользователей: #545
Дмитрий Мансуров
25 мая 2022, 19:52
0
Ошибка выскакивает даже если нет вывода в шаблоне, достаточно чтобы TV type image/file были просто привязанными к данному шаблону.
Источник файлов может быть по умолчанию — Filesystem
Параметры вывода — любые, не зависит
Дмитрий Мансуров
22 апреля 2021, 12:33
0
<?php
if ($modx->event->name == 'mSyncOnProductOffers') {
    //$modx->log(1, 'mSyncOnProductOffers $xml ' . print_r($xml,1));
    $resource->setTVValue('edizm',(string)$xml->БазоваяЕдиница->attributes()->НаименованиеПолное);
    $resource->save();
}
Передача единиц измерения в ТВ поле в плагине для компонента mSync
Дмитрий Мансуров
13 декабря 2020, 16:03
0
Я предложил правку, а там посмотрим
https://github.com/bezumkin/pdoTools/pull/306

Кому интересно, но лень разбираться в гитхабе
то вот изменения
Дмитрий Мансуров
09 ноября 2020, 21:27
0
Сделаю, обязательно. Просто торопился сдать проект. И не до этого было.
Гуглил быстро и пока вкладку не закрыл запостил
Дмитрий Мансуров
09 ноября 2020, 17:55
+2
Я конечно понимаю, что времени уже прошло много — 3 года, нго считаю нужным оставить эту инфу здесь
Ссыль на параметры аватара на яндексе
/core/components/hybridauth/providers/Yandex.php
меняем
$userProfile->photoURL = 'http://upics.yandex.net/' . $userProfile->identifier . '/normal';
на
$userProfile->photoURL = 'https://avatars.yandex.net/get-yapic/' . $userProfile->identifier . '/islands-retina-50';
Дмитрий Мансуров
11 февраля 2020, 20:15
0
Сам отвечаю — не верно!
Создал плагин
switch ($modx->event->name) {
    case 'msShiptorOnGetProductOption':         
        if(isset($params['options'][$mode]) && intval($params['options'][$mode]) > 0){
            $response['data'] = array(
                    'value' => $params['options'][$mode]
                );
            $this->modx->event->returnedValues = $response;
        }
        break;
}
Я прописал опции атрибутами, да хоть ТВ полями можно главное передать их
<input name="options[width]" type="hidden" value="20">
<input name="options[length]" type="hidden" value="20">
<input name="options[height]" type="hidden" value="3">
Может это никому и не нужно, но у меня заявки создаются а значит и расчет нужен верный и с этими данными я заявку кидаю
Дмитрий Мансуров
11 февраля 2020, 01:23
0
Но есть sdk, кривущщая дока к нему и руки, допилить не сложно, но есть сюрпризы типа когда цену на сквозную доставку считаешь и она считается по тому же СДЭКу, а вот отправить в заказ нельзя ибо СДЭК не поддерживает.
Не могу удержаться от примера из AddPackage
setPhone(<телефон>) Задает электронную почту получателя. Аргумент должен быть строкой, содержащей действующий номер телефона в формате +79123456789
Проверка номера телефона на корректность, кстати, более придирчивая, чем у miniShop2
Дмитрий Мансуров
11 февраля 2020, 01:16
0
Я так понял по коду что компонент может работать с опциями товара length, width, height и есть вариант задать вручную total_width и тд
Верно?
Дмитрий Мансуров
20 августа 2019, 23:35
0
Та же беда. Заметил, что проблема только на сайтах с yTranslit
Дмитрий Мансуров
15 апреля 2019, 22:24
0
В системных настройках в поле
ms2_order_address_fields
проверь чтобы в списке значилось
properties
Дмитрий Мансуров
28 марта 2019, 23:40
0
Мелкая правка
if(is_numeric($field)){
                        $tvId = intval($field);
                    }else{
                        $tvObj = $modx->getObject('modTemplateVar', array('name' => $field));
                        if($tvObj)$tvId = $tvObj->get('id');
                    }
                    if($tvId == 0){
                        $resource = $modx->getObject('modResource', $id);
                        if($resource) return $resource->get($field);
                    }
Дмитрий Мансуров
26 марта 2019, 02:40
1
0
Я дописал и поправил ваш код.
Теперь он не путается со сниппетом localizator и дружит с ТВ полями
Работает так
{9 | locfield : 'tv_name'}
Можно использовать id tv поля, можно имя (видно из кода)
Запилил я это все в плагин (проверено)
<?php

/** @var modX $modx */
switch ($modx->event->name) {
    case 'pdoToolsOnFenomInit':
        /** @var Fenom $fenom
            Мы получаем переменную $fenom при его первой инициализации и можем вызывать его методы. 
            Например, добавим модификатор вывода имени домена сайта из произвольной ссылки.
        */
        $pdo = $modx->getService('pdoTools');

        // localizator
        $fenom->addModifier('locfield', function ($id, $field = null) use ($pdo, $modx) {
            $pdo->debugParserModifier($id, 'locfield');
            
            /** @var modResource $resource */
            if (empty($id)) {
                $resource = $modx->resource;
            } elseif (!is_numeric($id)) {
                $field = $id;
                $resource = $modx->resource;
            } elseif (!$resource = $pdo->getStore($id, 'resource')) {
                $resource = $modx->getObject('modResource', $id);
                $pdo->setStore($id, $resource, 'resource');
            }
            
            $key =  $modx->getOption('cultureKey');
            if( $modx->getOption('cultureKey') != 'ru' ) {
                $q = $modx->newQuery( "localizatorContent" );
                $q->where( array( "`resource_id` = '" . $id . "'", "`key` = '" . $key . "'" ) );
                $q->select( array( $field ) );
                $s = $q->prepare();  // print $q->toSQL(); die;
                $s->execute();
                $array = $s->fetch(PDO::FETCH_ASSOC);
                $field_value = $array[$field];
                if(empty($field_value)){
                    if(is_numeric($field)){
                        $tvId = intval($field);
                    }else{
                        $tvObj = $modx->getObject('modTemplateVar', array('name' => $field));
                        $tvId = $tvObj->get('id');
                    }
                    
                    $q = $modx->newQuery( "locTemplateVarResource" );
                    $q->where( array( "`contentid` = '" . $id . "'", "`key` = '" . $key . "'", "`tmplvarid` = '" . $tvId . "'" ) );
                    $q->select(  'value'  );
                    $s = $q->prepare();   
                    $s->execute();
                    $array = $s->fetch(PDO::FETCH_ASSOC);
                    
                    return $array['value'];
                }else{
                    return $field_value;
                }
                
            }
            
            $output = '';
            if (!empty($resource)) {
                if (!empty($field)) {
                    if (strtolower($field) == 'content') {
                        $output = $resource->getContent();
                    } else {
                        $output = $resource->get($field);
                        if (is_null($output)) {
                            $output = $resource->getTVValue(preg_replace('#^tv\.#i', '', $field));
                        }
                    }
                } else {
                    $output = $resource->toArray();
                }
            }
            $pdo->debugParserModifier($id, 'locfield');
            return $output;
        });
        break;
}
Галочку
pdoToolsOnFenomInit
не забудьте

И для страждущих getImageList (проверено)
[[getImageList?  &tpl=`why_we.tpl` &value=`[[*why_we]]`]]
или даже так, когда данные в другом ресурсе (не успел проверить, но вроде должно)
{'getImageList' | snippet : [
    'tpl' => 'why_we.tpl',
    'value' => (9 | locfield : 'tv_name')
]}
Дмитрий Мансуров
20 февраля 2018, 23:47
0
Доброе время суток.
Подскажите в какое поле мне добавить
"popular":{"key":"Популярный","type":"boolean"},"new":{"key":"Новый","type":"boolean"},"favorite":{"key":"Распродажа","type":"boolean"}
В МС поля с именами Популярный, Новый, Распродажа (тип флажок) созданы.
Например
"tv6":{"key":"На главной","type":"boolean"}
Я добавил в moysklad_product_attributes и прекрасно работает
Дмитрий Мансуров
14 мая 2017, 22:41
0
$miniShop2->order->submit();
и
$miniShop2->cart->clean();
Корзину очищают

Не понимаю зачем ты очищаешь корзину а потом пытаешься сформировать заказ с уже пустой корзиной
Дмитрий Мансуров
17 апреля 2017, 12:38
0
$groupMember->set('user_group', $group); // Устанавливаем группу
	$groupMember->set('member', $user->get('id')); // Устанавливаем id в группу
	$groupMember->set('role', 1); // 1 - это членство с ролью Member
Дмитрий Мансуров
10 февраля 2017, 09:23
0
Решил или еще нужна помощь?
Из логов видно что у тебя косяк с кодировкой, она явно не UTF-8
Так же явно прописано что у тебя импортирована 1 строка.
Ты хотя бы показал файл, который импортируешь или часть его
Дмитрий Мансуров
12 января 2017, 00:53
4
0
Спустя несколько лет вопрос все еще актуален поэтому напишу краткую инструкцию
Редактируем файлы
core/components/minishop2/model/minishop2/mscarthandler.class.php
Ищем
$count = inval($count);

(у меня это строка 153)
Меняем на
$count = floatval($count);
Файл:
core/components/minishop2/model/minishop2/mysql/msorderproduct.map.inc.php
Ищем
'count' => 
    array (
      'dbtype' => 'int',
      'precision' => '10',
      'phptype' => 'integer',
      'attributes' => 'unsigned',
      'null' => true,
      'default' => 1,
    ),
меняем на
'count' => 
    array (
      'dbtype' => 'decimal',
      'precision' => '10,2',
      'phptype' => 'float',
      'null' => true,
      'default' => 1,
    ),
Файл:
core/components/minishop2/model/schema/minishop2.mysql.schema.xml
Ищем
<field key="count" dbtype="int" precision="10" phptype="integer" attributes="unsigned" null="true" default="1"/>
меняем на
<field key="count" dbtype="decimal" precision="10,2" phptype="float"  null="true" default="1"/>