Володя

Володя

С нами с 18 декабря 2012; Место в рейтинге пользователей: #4
Володя
20 августа 2017, 07:41
0
Все, как тут, только имя опции изменил. Если указываю name=«options[{$name}][]», то цена меняется только по первой опции, если name=«options[{$name}]», то цена меняется в зависимости от опции, но не суммируется.
если вы задали опцию как
options[{$name}]
то естественно на сервер придет не массив, а только последнее значение…
Володя
16 августа 2017, 17:29
0
к чему такие сложности?
сделайте все в сниппете и просто его вызывайте.
Володя
16 августа 2017, 15:31
0
ну раз у вас нет сниппета, то тут данные берутся из кеша.
см коммент modx.pro/help/13074/#comment-85512
Володя
16 августа 2017, 14:49
0
Вариант с некешированным плейсхолдером на Fenom как нибудь можно реализовать?
да вы смотрите как у вас вызван сам сниппет…
Володя
16 августа 2017, 14:27
0
Неужели все сбрасывают кэш при изменении цены на 1 товар?
возможные варианты:
— грохать весь кеш
— грохать кеш конкретного обновляемого ресурса
Володя
16 августа 2017, 14:03
0
После загрузки прайсов

после грохнуть кеш…
Володя
16 августа 2017, 13:37
+4
id: config.id + '-group_id',
желательно вообще не задавать, иначе будут проблемы при одновременном открытии нескольких окон, панелей и тд когда id дублируются.

var cmp = Ext.getCmp(config['id'] + '-schedule_id');
так тоже не есть хорошо, но когда нет других вариантов конечно можно)

можно сделать так
listeners: {
    select: {
        fn: function (r) {
            this._handleChange();
        },
        scope: this
    }
}

//...

_handleChange: function () {
    var f = this.fp.getForm();
// получаем поля по имени
    var _field1 = f.findField('name_field1');
    var _field2 = f.findField('name_field1');

    _field2.baseParams['name_field1'] = _field1.getValue();

    // показываем пагинацию если нужно на комбике
    if (!!_field2.pageTb) {
        _field2.pageTb.show();
    }
    _field2.store.load();
}
Володя
12 августа 2017, 11:13
+3
Задачу было необходимо решить скорее, поэтому решил сам
отлично! Могу только сказать спасибо!)
Естественно, когда если ты внедришь поддержку работы с массивами опций, то данное решение утратит актуальность и я его удалю. Только просьба сообщить об этом тут. :)
Не собираюсь в ближайшее время это делать. Это повлияет на логику компонента…
Да и зачем удалять. Хороший пример как можно модифицировать стандартную логику расчета.
Володя
12 августа 2017, 11:04
+1
Вот что значит свежая голова и умелые руки…
Оказалось, что компонент не умеет прибавлять к начальной цене товара несколько цен из модификаций одной опции.
наверно неверно сформулировал. Компонент просто не работает с опциями массивами…
$modx->newQuery('msopModification')
для этого можно задействовать метод getModificationByOptions
ps. И да, для таких вопросов есть ТП в которой они успешно решаются…
Володя
09 августа 2017, 14:16
0
а в мапе?
Володя
09 августа 2017, 12:15
0
Пишите в ТП с указанием доступов к админке и ссылкой на чанк вызова.
Спасибо.
Володя
09 августа 2017, 11:20
0
возможно еще где то придется подпилить…
Володя
09 августа 2017, 10:32
0
не не… ему нужно необработанные данные. В том виде что сейчас он их никак не получит.
Володя
09 августа 2017, 10:32
0
скопируйте сниппет msProducts в сниппет с другим именем и убери обработку чанка чтобы получить сырые данные. Ведь именно это тебе нужно правильно я понял?
Володя
09 августа 2017, 09:45
0
чтобы
подгружается цены, вес, корзина и тд
используйте msProducts.
если по каким то причинам вам это недоступно то посмотрите как это реализовано в сниппете msProducts
Володя
09 августа 2017, 09:42
0
задайте пустой tpl и посмотрите какие плейсхолдеры достпны.
Если я не ошибаюсь то основная картинка в thumbs -> main
Володя
09 августа 2017, 09:23
0
переопределить вот это место еще github.com/modxcms/revolution/blob/cd3cec956341ef137dc161e3a7f555e4a4c9755c/manager/assets/modext/widgets/resource/modx.panel.resource.js#L474
возможно еще где то придется подпилить…
Володя
07 августа 2017, 14:04
0
попробовал на пустом шаблоне, вот код.
<script src="/assets/components/themebootstrap/js/jquery.min.js"></script>

[[!QuickView.initialize?
&services=`miniShop2,AjaxForm`
&bootstrapModalJsCss=`0`
&bootstrapDialogJsCss=`0`
]]

[[!mFilter2?
	&parents=`0`
	&element=`msProducts`
	&filters=`
		ms|price:number,
		parent:categories,
		msoption|tags,
		ms|vendor:vendors,
		ms|old_price:boolean,
	`
	&tpl=`@INLINE
    <a class='quickview'
	  data-click
	  data-quickview-mode="selector"
	  data-data-element="product.quickview" 
	  data-quickview-output=".bs-quickview-output" 
	  data-output-buttons='["close"]'
	  data-data-id="[[+id]]"
	  data-dialog-title="">[[+pagetitle]]</a>

`
	&class=`msProduct`
	&sort=`ms|price:desc`
	&tplOuter=`tpl.mFilter2.outer`
	&tplFilter.outer.ms|price=`tpl.mFilter2.filter.slider`
	&tplFilter.row.ms|price=`tpl.mFilter2.filter.number`
]]
<hr>
<div class="bs-quickview-output"></div>
все корректно работает…
Володя
07 августа 2017, 13:28
0
если у вас не используется bootstrap вам нужно подключить скрипты модалки и диалога так как функцинаол завязан на них, либо пользовать через selector, там эти скрипты не требуются.