Финансовая поддержка VPS, бесплатные дополнения и docs Донаты оплачивают сервер и двигают бесплатные дополнения MODX и документацию. Поддержать

Всего 126 113 комментариев

Николай Савин
Николай Савин
Спасибо за обратную связь. На данный момент идет работа с полями админки, я перестраиваю полностью принцип их работы (описывал в свежей заметке). Так что да — вполне возможно. что этот кусок сейчас недоступен
Альберт
Альберт
Спасибо за ваш энтузиазм!

Тестировал modx 3 + minishop 3 и столкнулся с тем, что не редактируются поля в свойствах товара – содержимое ms3_product_extra_fields не повлияло на содержимое вкладки. Возможно, случай единичный — но установка была чистая, ранее за минишопом такой проблемы не замечал. В кеше конфига тоже посмотрел — там значение было корректное, то есть изменённое.
Денис Мавлютов
Денис Мавлютов
Добрый вечер. Да, он выводится. Выше есть скриншот кода, где по заголовку H5, виден момент который меня беспокоит,

Просто иногда случается так, что при одних и тех же условиях я получаю рекурсию на последнем элементе.

Item 1
Item 2
Item 3
— item 1
— item 2
— item 3
— — item 1
Вячеслав Варов
Вячеслав Варов
и далее создал копию файла
assets/components/msearch2/action.php

Назвал ее
assets/filters/action.php

Заменил
'results' => !empty($results) ? $results : $modx->lexicon('mse2_err_no_results'),
На
'results' => !empty($results) ? $results : $pdoFetch->getChunk($scriptProperties['tplEmpty'], []),
Далее в файле js который указывается в системных настройках, у меня он assets/js/filters.min.js

Поменял assets/components/msearch2/action.php на assets/filters/action.php

PS может как-то могу поспособствовать добавив это изменение в будущие версии mFilter2?

тут правда не реализована проверка запыленности этого банка, но вроде как это не сложный функционал, на msearch2 он есть
Вячеслав Варов
Вячеслав Варов
в итоге вот к чему пришел

Заменил все вхождения
$modx->lexicon('mse2_err_no_results')
на

$mSearch2->pdoTools->getChunk($scriptProperties['tplEmpty'], $output, $fastMode);
Добился того что при загрузке страницы mfilter2 отдает чанк из параметра tplEmpty

Теперь осталось докрутить чтобы при Ajax работало а то сейчас отдает запись словаря
Вячеслав Варов
Вячеслав Варов
Это не всегда удобно, поскольку уведомление может быть разным, например

Шуб по вашим критериям не найдено

Штанов по вашим критериям не найдено и тд, я вот пока склоняюсь к добавлению поля tplEmpty и настроить обработку чтобы отдавал чанк если пусто а не запись словаря
Вячеслав Варов
Вячеслав Варов
Судя по сниппету mFilter2 он действительно не поддерживает стилизацию сообщения об отсутствии результатов под капотом

if (!empty($toSeparatePlaceholders)) {
	$modx->setPlaceholders($output['filters'], $toSeparatePlaceholders);
	$output['log'] = $log;
	if (is_array($output['filters'])) {
		$output['filters'] = implode($outputSeparator, $output['filters']);
	}

	$pcre = '#^' . preg_quote($toSeparatePlaceholders) . '(\d+)$#';
	$tmp = array();
	foreach ($modx->placeholders as $k => $v) {
		if (preg_match($pcre, $k)) {
			$tmp[] = $v;
		}
	}

	$output['results'] = !empty($tmp)
		? implode($outputSeparator, $tmp)
		: $modx->lexicon('mse2_err_no_results');

	$modx->setPlaceholders($output, $toSeparatePlaceholders);
}
Pandemic
Pandemic
Вывел minishop2 и нашёл там такое, есть объект
sendData
в нём хранится та форма которая будет изменятся при клике, он формируется вовремя клика, и затем если вызвать
miniShop2.Cart.change();
То изменения отправятся. Суть такая собрать все данные с формы под вид объекта
sendData
пример можно посмотреть когда вы вручную нажмёте на кнопку, оно заполнится, потом можно по аналогии.

if(miniShop2){
	miniShop2.sendData = {
		$form: $(el),
		action: "cart/change",
		formData: [
			{
				name: "key",
				value: getElement('input[name="key"]', el).value
			},
			{
				name: "options",
				value: getElement('input[name="options"]', el).value
			},
			{
				name: "count",
				value: getElement('input[name="count"]', el).value
			},
			{
				name: "ms2_action",
				value: "cart/change"
			},
			{
				name: "ctx",
				value: "web"
			},
			{
				name: "ctx",
				value: "web"
			},
		]
	}
	miniShop2.Cart.change();

}
Скаут
Скаут
речь именно про первый заказ.

Получается нужен сниппет: определяем клиента, ищем его заказы, если ничего не нашли — присуждаем скидку.
Присуждение скидки — просто в массиве корзины изменяем значение итога, добавив ключ «старый итог» для визуальной составляющей. Получается так?