Купчинский Михаил
С нами с 19 января 2013; Место в рейтинге пользователей: #524Расширение любых таблиц MODX
В очередной раз понадобилось изменить таблицу сайта, менять которую не предусмотрено.
Что обычно люди делают в таких случаях? Верно, редактируют ядро или нужный компонент, и больше их не обновляют. Но ведь это неправильно, и можно решить вопрос иначе.
Пишем обычный плагин, выставляем для него событие OnMODXInit и меняем модель для нужных классов системы или дополнений. Например, я добавил id менеджера в заказ miniShop2:
Что обычно люди делают в таких случаях? Верно, редактируют ядро или нужный компонент, и больше их не обновляют. Но ведь это неправильно, и можно решить вопрос иначе.
Пишем обычный плагин, выставляем для него событие OnMODXInit и меняем модель для нужных классов системы или дополнений. Например, я добавил id менеджера в заказ miniShop2:
pdoResources where по дате
Привет, помогите пожалуйста составить выборку ресурсов.
Нужно отфильтровать ресурсы по дате, которая передаётся в GET.
Пример адреса site.ru/page?date=2015-11-10
Нужно отфильтровать ресурсы по дате, которая передаётся в GET.
Пример адреса site.ru/page?date=2015-11-10
mFilter2 и Характеристики
Здравствуйте!
приобрел сегодня крутой компонент 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`
]]
Похожие товары
Добрый вечер!
В данный момент радуюсь прекрасному minishop2, делая на нем магазин. Встал вопрос о похожих товарах: как реализовать их вывод? Может есть те, кому не жалко поделиться кодом? Или может хотя бы подскажете, куда копать?
Спасибо большое!
В данный момент радуюсь прекрасному minishop2, делая на нем магазин. Встал вопрос о похожих товарах: как реализовать их вывод? Может есть те, кому не жалко поделиться кодом? Или может хотя бы подскажете, куда копать?
Спасибо большое!
Вывод в зависимости от содержимого плейсхолдера
Добрый день!
Подскажите, пожалуйста, как выводить информацию в зависимости от содержимого плейсхолдера?
В данный момент информация выводится таким образом:
Опция [[+availability]] имеет 2 значения «Есть в наличии» и «Под заказ». Подскажите, какая должна быть конструкция, чтобы при выборе значения «Есть в наличии» выводился div с классом class=«available», а при выборе значения «Под заказ» class=«not_available»?
Решение:
Подскажите, пожалуйста, как выводить информацию в зависимости от содержимого плейсхолдера?
В данный момент информация выводится таким образом:
[[!+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=``]]
MS2: доп. поле товара (плагин) типа «checkbox»
Друзья, всем привет!
Уже несколько часов не могу найти ответа на простой, казалось бы, вопрос. Нужно добавить товару кастомное поле типа checkbox, в нашем случае оно имеет имя «outofstock». Все делаю по инструкции (текстовые поля добавлял неоднократно). Поле добавилось и работает на странице товара. Но если добавить это поле в грид категории и пытаться его отредактировать из грида, получается следующее:
Вот так выглядит плагин:
Уже несколько часов не могу найти ответа на простой, казалось бы, вопрос. Нужно добавить товару кастомное поле типа checkbox, в нашем случае оно имеет имя «outofstock». Все делаю по инструкции (текстовые поля добавлял неоднократно). Поле добавилось и работает на странице товара. Но если добавить это поле в грид категории и пытаться его отредактировать из грида, получается следующее:
- Отображается как 1/0, т.е. цифра (соответственно, checked/unchecked), а не как чекбокс;
- Если редактировать — появляется checkbox, можно поставить галку (он в момент редактирования пустой вне зависимости от имеющегося значения);
- После сохранения (перехода на другой товар) — сохраняется значение true или false, вот именно словами (в зависимости от того, была поставлена в чекбокс галка или нет);
- Если затем перезагрузить страницу, то все значения обратно становятся 0 или 1 (но при этом измененные значения сохраняются, т.е. если я на предыдущем шаге галку ставил, то показывает 1, а если нет, то 0).
Вот так выглядит плагин:
mFilter2 - фильтрация категорий по дочерним товарам
Публикую решение довольно распространённой задачи. Нужно фильтровать товары, но выводить не их, а их категории. Таким образом получается фильтр категорий, но по свойствам их дочерних товаров.
Первым делом нужно разобраться в логике работы mFilter2:
Первым делом нужно разобраться в логике работы mFilter2:
- Фильтр использует для поиска и вывода ресурсов один сниппет, указанный в &elements. В случае работы с товарами там обычно указывается msProducts.
- К этому сниппету будет 2 обращения: предварительная выборка и возврат подходящих id товаров, а затем их вывод пользователю.
- Различить эти два запроса можно по присылаемому параметру returnIds.
Не работает пересчет цен в корзине
В зависимости от общего количества товара в корзине плагин устанавливает скидку на каждый товар: от 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, пересчитывать цены у каждого товара в корзине автоматом. Как реализовано указание доменов в modHost?
Здравствуйте.
Скажите, пожалуйста, как реализовано указание доменов на modhost.pro? Там ведь они указываются для nginx конфига. Каким образом получилось сделать так, чтобы для сайта можно было указывать домены отдельно не в конфиге nginx в параметр server_name?
Скажите, пожалуйста, как реализовано указание доменов на modhost.pro? Там ведь они указываются для nginx конфига. Каким образом получилось сделать так, чтобы для сайта можно было указывать домены отдельно не в конфиге nginx в параметр server_name?
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 == Модульный.Как только во вторую группу добавляются условия, начинаются сложности.