Володя

Володя

С нами с 18 декабря 2012; Место в рейтинге пользователей: #6
Володя
30 июля 2018, 08:57
+3
Запрос на смену доставки асинхронный. Пока выполняется один запрос, успевает выполнится следующий. При получении ответа от коннектора срабатывает выставление нужного способа доставки. Таким образом получается ситуация minishop2 заглючил.
Выход либо поставить прелоадер при смене доставки, заблокировав на время запроса какие либо действия пользователя, либо сделать запрос синхронным.
Володя
29 июля 2018, 11:10
0
В этом компоненте предусмотрено что-то подобное?
нет, в текущей реализации нет работы с прокси. Вы можете расширить базовый класс rgContentGetter и добавить туда что угодно.

Писал свой парсер для Алиэкспресса, столкнулся с тем, что при попытке качать несколько товаров, они отдают страницу для авторизации.
Столкнулся с такой же проблемой в ходе тестирования компонента. Как выяснилось закрыты товары что лежат в каком либо магазине, но у такого товара всегда есть оригинальная страница с другим адресом. Так вот решилось небольшими костылями.
Кратко: Если попытка получить контент закончилась неудачей — редирект на мобильную страницу — она всегда доступна, там выдираем ссылку на оригинальную и парсим уже ее.
Конкретного заказчика устроило данное решение, на этом и остановились. А так если компонент будет популярен то допишу работу с проксями…
Володя
27 июля 2018, 18:18
0
А рядом говорят, что не работала.
вот мой коммент modx.pro/news/15883#comment-99911 от 11 июля 2018, 12:31 — она работала.
не особо слежу за этим, но по моему и в начале этой недели она тоже работала.
Володя
27 июля 2018, 18:11
0
не критично, просто не так давно она работала, сейчас нет…
Володя
27 июля 2018, 18:04
0
при авторизации через vk на modx.pro выдает
{"error":"invalid_request","error_description":"Security Error"}
Володя
27 июля 2018, 17:59
0
Возможно ошибка в tinycompressor?
Володя
26 июля 2018, 14:00
+1
Можно чуть подробнее разжевать, как сделать, чтобы появилась форма для ввода исходных данных для парсинга?


у вас старая версия minishop2, потому и нет ничего. Мой косяк, совсем забыл про это. Добавил в описание.
По поводу возврата средств за дополнение обратитесь в чат на сайте магазина.
Извините за данный недочет.

Спасибо!
Володя
26 июля 2018, 09:34
+2
И после обработки, в части кода, который сформирован методом where() у нас получается вот что:
WHERE  ( `a`.`id` LIKE 0 AND `a`.`city` LIKE 0 AND `a`.`name` LIKE '%300%' AND `a`.`phone` LIKE 0 AND `a`.`mail` LIKE 0 AND `a`.`performer` LIKE 0 )
Для проверки использую $c->toSql().
в данном случае toSql не вариант для проверки, поясню на примере

первый запрос
$c = $modx->newQuery('modResource');
$c->select('id');

$c->where(array(
    'id:LIKE' => '%10%',
));
$c->prepare();

$total = $modx->getCount('modResource', $c);
print_r($c->toSQL() . PHP_EOL);
print_r($total . PHP_EOL);
даст нам
SELECT `id` FROM `modx_site_content` AS `modResource` WHERE `modResource`.`id` LIKE 0 
2
как видим запрос типа кривой, но результат выдал 2. Странно да? Уже повод задуматься…

Давай выполним второй запрос, минуя метод where
$c = $modx->newQuery('modResource');
$c->select('id');

$c->query['where'][] = new xPDOQueryCondition(array(
    'sql'         => '`modResource`.`id` LIKE \'%10%\'',
    'conjunction' => 'AND',
));
$c->prepare();

$total = $modx->getCount('modResource', $c);
print_r($c->toSQL() . PHP_EOL);
print_r($total . PHP_EOL);

результат
SELECT `id` FROM `modx_site_content` AS `modResource` WHERE `modResource`.`id` LIKE '%10%' 
2

Итог: в первом и втором запросе мы получили нужный результат. Так в чем же дело?
Фишка старого доброго (как говорит Иван Климчук) xPDO
ps. Вообщем не факт что твоя ошибка была в этом месте… совсем не факт. Просто при toSQL
выполняется parseBindings что приводит запрос к такому виду…
Володя
26 июля 2018, 09:26
0
ты делаешь
$c->where($this->where);
что делает метод where ?

он всего лишь пишет в массив $this->query['where'] условия. Я тебе и предлагал туда записать условия напрямую в виде sql
Володя
25 июля 2018, 19:57
0
В функции prepareQueryBeforeCount я формирую запрос. Формирую where через foreach:
если у вас prepareQueryBeforeCount, то почему
$this->where

а не
$c->where
на худой конец
$this->query['where']
Володя
25 июля 2018, 12:17
0
Кстати, сейчас у них поддержка очень плохо отвечает, то, что раньше решалось за 2 часа — теперь на 2 суток растягивается.
да, поддержка заметно хуже стала.

Сейчас свяжусь с Яндексом на предмет верстать всё обратно и сообщу, если никто больше не отзовётся.
не должно возникнуть сложностей, создается новая витрина под протокол api и все.
Володя
23 июля 2018, 08:28
0
Скорее всего ваш сниппет Getdb не отдает общее кол-во элементов и pdoPage не выводит пагинацию.
Самое простое в код Getdb добавить
$modx->setPlaceholder('total', $total);
где $total общее кол-во найденных элементов без учета limit
Володя
22 июля 2018, 15:53
0
И есть php файл с подключенным API MODX, который как раз и возвращает нам услуги:
Попробуй в нем добавить
$_SERVER['HTTP_X_REQUESTED_WITH'] = '';
перед вызовом pdoPage
Володя
20 июля 2018, 12:52
+2
Написать в ТП. Указать где можно увидеть проблему, приложить доступы к админке сайта.
Все как обычно…
Володя
20 июля 2018, 12:51
0
Видимо, где-то класс терял.
скорее всего…

Еще раз спасибо!
пожалуйста!
Володя
20 июля 2018, 12:40
0
у них какая-то несовместимость есть?
не могу сказать. Когда то давно чтото писалось для совместимости и оно вроде работало.
Володя
20 июля 2018, 12:38
1
+1
А QuickView позволяет повесить функцию закрытия на имеющуюся кнопку, а не на созданную им?
попробуйте добавить в чанк как
<div class="quickview quickview-buttons"><button class="btn quickview quickview-remove btn-default quickview-action" data-button='{ "action":"close" }'>×</button></div>
Должно сработать.
Володя
20 июля 2018, 12:14
0
вызвать сниппет msOptionsPrice.initialize после вызова любого сниппета miniShop.