Купчинский Михаил

Купчинский Михаил

С нами с 19 января 2013; Место в рейтинге пользователей: #524

Расширение любых таблиц MODX

В очередной раз понадобилось изменить таблицу сайта, менять которую не предусмотрено.

Что обычно люди делают в таких случаях? Верно, редактируют ядро или нужный компонент, и больше их не обновляют. Но ведь это неправильно, и можно решить вопрос иначе.

Пишем обычный плагин, выставляем для него событие OnMODXInit и меняем модель для нужных классов системы или дополнений. Например, я добавил id менеджера в заказ miniShop2:
Василий Наумкин
16 ноября 2015, 07:07
modx.pro
117
10 467
+11

pdoResources where по дате

Привет, помогите пожалуйста составить выборку ресурсов.

Нужно отфильтровать ресурсы по дате, которая передаётся в GET.
Пример адреса site.ru/page?date=2015-11-10
Павел
12 ноября 2015, 07:32
modx.pro
3
5 970
0

mFilter2 и Характеристики

Здравствуйте!
приобрел сегодня крутой компонент mFilter2

Но загвоздка с характеристиками.

вызов
[[!mFilter2?
		&limit=`12`
		&element=`msProducts`
		&filters=`
			ms|price:number
			,parent:categories
			,ms|vendor:vendors
			,msoption|obem_resivera
		`
		&includeTVs=`raiting`
		&class=`msProduct`
		&tpls=`product_item`
		&tplOuter=`tpl.mFilter2.outer.ttok`
		&tplFilter.outer.ms|price=`tpl.mFilter2.filter.slider`
		&tplFilter.row.ms|price=`tpl.mFilter2.filter.number`
	]]
Константин Ильин
03 ноября 2015, 17:58
modx.pro
1
3 675
0

Похожие товары

Добрый вечер!

В данный момент радуюсь прекрасному minishop2, делая на нем магазин. Встал вопрос о похожих товарах: как реализовать их вывод? Может есть те, кому не жалко поделиться кодом? Или может хотя бы подскажете, куда копать?

Спасибо большое!
Oneman
31 октября 2015, 14:09
modx.pro
1
3 246
0

Вывод в зависимости от содержимого плейсхолдера

Добрый день!
Подскажите, пожалуйста, как выводить информацию в зависимости от содержимого плейсхолдера?
В данный момент информация выводится таким образом:

[[!+availability:gt=`0`:then=`<div class="available">[[+availability]]</div>`:else=``]]
Если в miniShop2 характеристика [[+availability]] не заполнена, то ничего не выводится, если выбрано какое-либо значение, то выводится
<div class="available">[[+availability]]</div>

Опция [[+availability]] имеет 2 значения «Есть в наличии» и «Под заказ». Подскажите, какая должна быть конструкция, чтобы при выборе значения «Есть в наличии» выводился div с классом class=«available», а при выборе значения «Под заказ» class=«not_available»?

Решение:

[[!+availability:gt=`0`:then=`[[!+availability:is=`Под заказ`:then=`<div class="not_available">[[+availability]]</div>`:else=`<div class="available">[[+availability]]</div>`]]`:else=``]]
Victor
30 октября 2015, 11:21
modx.pro
2
1 483
0

MS2: доп. поле товара (плагин) типа «checkbox»

Друзья, всем привет!

Уже несколько часов не могу найти ответа на простой, казалось бы, вопрос. Нужно добавить товару кастомное поле типа checkbox, в нашем случае оно имеет имя «outofstock». Все делаю по инструкции (текстовые поля добавлял неоднократно). Поле добавилось и работает на странице товара. Но если добавить это поле в грид категории и пытаться его отредактировать из грида, получается следующее:
  • Отображается как 1/0, т.е. цифра (соответственно, checked/unchecked), а не как чекбокс;
  • Если редактировать — появляется checkbox, можно поставить галку (он в момент редактирования пустой вне зависимости от имеющегося значения);
  • После сохранения (перехода на другой товар) — сохраняется значение true или false, вот именно словами (в зависимости от того, была поставлена в чекбокс галка или нет);
  • Если затем перезагрузить страницу, то все значения обратно становятся 0 или 1 (но при этом измененные значения сохраняются, т.е. если я на предыдущем шаге галку ставил, то показывает 1, а если нет, то 0).
Т.е. значение сохраняется по смыслу верно, проблема только с отображением. А хотелсь бы, чтобы было по аналогии с дефолтовыми галками «new», «favorite» и т.д.

Вот так выглядит плагин:

Павел Ширяев
27 октября 2015, 23:56
modx.pro
4
2 746
0

mFilter2 - фильтрация категорий по дочерним товарам

Публикую решение довольно распространённой задачи. Нужно фильтровать товары, но выводить не их, а их категории. Таким образом получается фильтр категорий, но по свойствам их дочерних товаров.

Первым делом нужно разобраться в логике работы mFilter2:
  1. Фильтр использует для поиска и вывода ресурсов один сниппет, указанный в &elements. В случае работы с товарами там обычно указывается msProducts.
  2. К этому сниппету будет 2 обращения: предварительная выборка и возврат подходящих id товаров, а затем их вывод пользователю.
  3. Различить эти два запроса можно по присылаемому параметру returnIds.
В получение id товаров нам вмешиваться не нужно, потому что фильтр должен построить из них фильтры. Нам нужно изменить только вывод этих товаров, заменив их на категории.
Василий Наумкин
11 октября 2015, 07:25
modx.pro
23
4 897
+4

Не работает пересчет цен в корзине

В зависимости от общего количества товара в корзине плагин устанавливает скидку на каждый товар: от 1 до 5 — 0%, от 5 до 10 — 0%, от 10 и выше — 20%.
Код плагина:
switch ($modx->event->name) {
	case 'msOnAddToCart': case 'msOnChangeInCart':
	$tmp = $cart->get();
$price=	$tmp[$key]['price'];
$tmpm = $cart->status();
$total_count = $tmpm['total_count'];
if ($total_count >= 10) {
	$price=$price*0.8;
} elseif ($total_count >= 5) {
	$price=$price*0.9;
} else {
	$price=$price;
}
$tmp[$key]['price']=$price;
	$cart->set($tmp);	
	break;
}
Беда в том, что цена пересчитывается не у всех товаров в корзине, а только у последнего добавленного/измененного, а для того что бы у остальных она поменялась, надо у каждого оставшегося изменить кол-во. Никак не могу понять, как после увеличения/уменьшения total_count, пересчитывать цены у каждого товара в корзине автоматом.
Артем
11 октября 2015, 07:03
modx.pro
5
2 289
+1

Как реализовано указание доменов в modHost?

Здравствуйте.

Скажите, пожалуйста, как реализовано указание доменов на modhost.pro? Там ведь они указываются для nginx конфига. Каким образом получилось сделать так, чтобы для сайта можно было указывать домены отдельно не в конфиге nginx в параметр server_name?
Павел Гвоздь
11 октября 2015, 01:20
modx.pro
1
1 073
0

msProducts. Выборка по нескольким опциям

Доброй ночи.
Пытаюсь сделать сложную выборку по группам доп. опций, пока что без особых успехов.
Между опциями должно быть условие «И», внутри каждой опции — «ИЛИ».
Делаю так:
&optionFilters=`{
	"ps_target:LIKE": "Витрины и мебель",
	"OR:ps_target:LIKE": "Ландшафт",
	"OR:ps_target:LIKE": "Автомойки"
}`
Все хорошо, в выборке товары, опция «ps_target» которых соответствует какому-либо из 3х значений.
Теперь добавляем вторую группу опций:
&optionFilters=`{
	"ps_target:LIKE": "Витрины и мебель",
	"OR:ps_target:LIKE": "Ландшафт",
	"OR:ps_target:LIKE": "Автомойки",
	"AND:ps_type:LIKE": "Модульный"
}`
ОК. Выбираются товары с любым из 3х значением ps_target и значением ps_type == Модульный.
Как только во вторую группу добавляются условия, начинаются сложности.
Александр
07 октября 2015, 22:55
modx.pro
6
5 661
0