Юрий Эффа

Юрий Эффа

С нами с 06 апреля 2013; Место в рейтинге пользователей: #216
Юрий Эффа
07 ноября 2014, 15:06
0
Господа парсинг-гуру (даже не modx =] ), подскажите такую вещь, пожалуйста…
Работал скрип обновление валют, описанный тут выше в комментариях, а сегодня, при попытке запуска выдал:
Fatal error:
Uncaught SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn't find <definitions>
in 'http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL'
in /home/****/www/assets/components/cbrf/ExchangeRatesCBRF.class.php:7
Stack trace:
#0 /home/****/www/assets/components/cbrf/ExchangeRatesCBRF.class.php(7): SoapClient->SoapClient('http://www.cbr....')
#1 /home/****/www/updrates.php(38): ExchangeRatesCBRF->__construct()
#2 {main} thrown in /home/****/www/assets/components/cbrf/ExchangeRatesCBRF.class.php on line 7
 
Собственно, в 7ой строке:
$client = new SoapClient("http://www.cbr.ru/DailyInfoWebServ/DailyInfo.asmx?WSDL");
 
Вопрос в чём… либо проблемы в работе скрипта, либо ЦБР что-то поменял… либо куда копать намекните хоть?

Юрий Эффа
27 октября 2014, 16:00
0
Как его можно заставить работать со сторонним свойством товара? В mysql оно как tinyint, в админке — чекбокс. Надо хранить в ms_product варианты чекбокса как [«0»,«1»]? ))
Юрий Эффа
27 октября 2014, 15:55
0
Поставил… К сожалению, работает либо только по «color», либо только по «size» — две опции выбрать нельзя. Конечно, вариант с возможностью указания значения смещения цены на фиксированное положительное\отрицательное значение или процент был бы приемлемее…
Юрий Эффа
29 сентября 2014, 18:40
0
тоже сам разобрался — дело было в xtype'е поля
казалось бы, где связь )
Юрий Эффа
29 сентября 2014, 18:26
0
Отдельный вопрос… возможно вы знаете, где посмотреть чтобы узнать почему значения чекбокса могут не писаться в базу? Колонка в _ms2_products называется refreshed, со параметрами, полностью повторяющими параметры колонки new
// /core/components/minishop2/plugins/refreshed/model/msproductdata.map.inc.php
<?php
return array(
    'fields' => array(
        'refreshed' => 0
    )
    ,'fieldMeta' => array(
        'refreshed' => array(
            'dbtype' => 'tinyint',
	     'precision' => '1',
	     'attributes' => 'unsigned',
	     'phptype' => 'boolean',
            'null' => true,
            'default' => 0
	  )
    )
);
Юрий Эффа
29 сентября 2014, 17:45
0
Отбой! проблема была в pluginname из /assets/components/minishop2/plugins/******/msproductdata.js
miniShop2.plugin.pluginname = {
	getFields: function(config) { ......
Юрий Эффа
28 сентября 2014, 12:54
0
т.е. добавить нужный мне php-файл в Действия. Для клиента так лучше — одну кнопку нажимать
Юрий Эффа
28 сентября 2014, 12:51
0
Или, если нет авторизации и скидка одна для всех, завести колонку product_sale и в парсер добавить расчёт price с учётом скидки… без всякого msDiscount

А можно написать свой «Обновить сайт» и запускать из верхнего меню? Чтобы помимо очистки кеша добавить туда запуск парсера?

Вернее, просто сменить очистку кеша на запуск парсера? Очистка кеша к него есть
Юрий Эффа
28 сентября 2014, 12:44
0
Теперь вопрос… как эта конструкция будет работать с msDiscount?
Если:
Что в MS2, что в msDiscount цены меняются при выводе на сайт
т.е. скидки — это такой же модификатор цен от базового значения, по котором гоняет фильтр
Юрий Эффа
26 сентября 2014, 22:34
1
+2
Спасибо за волшебный пендель)
Сделал так:
1. Переименовал колонку price (из _ms2_products), в которой были все цены, в price_eur
2. Привязал её к карточке товара, как это описано ЗДЕСЬ. Т.е. на странице товара в админке у меня появилось поле Цена, у.е. (да в лексиконах тоже запись сделал).
3. Создал колонку price в _ms2_products
4. В парсер, который должен выполняться по крону, добавил
$sql1 = "UPDATE ".$modx->getTableName('msProductData')." SET `price` = ".str_replace(',','.',$euro)." * `price_eur` WHERE `price_eur` > 0";
$q = $modx->prepare($sql1);
$q->execute();
и это, и сам парсер взяты отсюда: Цена в рублях по курсу доллара в miniShop2.
5. Отключил сниппет модификатор цен!
6. Руками запустил парсер — колонка price в _ms2_products обновилась.
7. Фильтры заработали по колонке прайс )
Юрий Эффа
26 сентября 2014, 16:37
0
Cледующим этапом планируется внедрение msDiscount — надеюсь эта модификация цены будет работать с mFilter2.
Юрий Эффа
26 сентября 2014, 16:35
0
Удобно, но это костыль… к тому же, в магазине 2к+ товаров
Юрий Эффа
26 сентября 2014, 15:24
0
Компонент, конечно, хороший.., но его покупка не решила проблему, которая была под mFilter1 (собственно, для чего приобретался — в остальном нареканий не было). Получается, что интеграция minishop и msearch2 неполная…
Юрий Эффа
26 сентября 2014, 11:16
0
Спасибо. Так даже удобнее, чем если бы брался заголовок поля!
Юрий Эффа
26 сентября 2014, 11:14
0
всё равно не понимаю как связать данные из фильтра с модифицированными значениями и место, где формируется выдача… можете посмеяться над нубом, да )

Ты, похоже, добавл не все методы для своего нового фильтра
Если честно, вообще ничего не добавлял — для быстрой проверки работоспособности скопировал функцию, изменил имя, и min max умножил на 49… может в этом проблема?
Юрий Эффа
26 сентября 2014, 08:36
0
Василий, я именно так и делаю… фильтр строится по ценам товара, минуя модификатор
Юрий Эффа
19 мая 2014, 20:47
0
Не понимаю как получить значения цен и изменить вид фильтра, т.к. если делать по аналоги с «производителями», т.е.
$arr = array(
		'name' => 'Цена'
		,'type' => 'text'
		,'values' => array(1,2,3,4,5,6,7,8,9)
	);
return json_encode($arr);
на выходе получаем список чекбоксов (что во общем-то логично — это я уже понял))
Юрий Эффа
19 мая 2014, 20:33
0
Вот здесь ты советовал решение по переводу списка id-шников производителей в их текстовые имена.
Можно по аналогии взять список цен для фильтра, передать сниппету типа «extra_filter_vendor» (в примере), и получить обратно цены пересчитанные по нужной формуле? (по курсу, например)
Юрий Эффа
19 мая 2014, 20:26
0
Василий, спасибо. Это применимо к mFilter из mSearch (без двойки)?