Вопросы
Ручная сортировка строчек товаров в msCategory не работает
MODX Revolution 2.8.3-pl (traditional)
miniShop2 2.5.0-pl
Столкнулся с тем, что список товаров в категории после нажатия на заголовок столбца для сортировки по цене или названию перестает реагировать на ручной drug and drop, товар тащится, но не остается там, где я его ставлю в списке.
Как победить эту неведомую хрень? Может у кого было подобное.
Заказчику удобно перетаскивать вручную, но при этом если случайно нажать заголовок столбца, надо откатывать базу, чтобы восстановить работоспособность админки
miniShop2 2.5.0-pl
Столкнулся с тем, что список товаров в категории после нажатия на заголовок столбца для сортировки по цене или названию перестает реагировать на ручной drug and drop, товар тащится, но не остается там, где я его ставлю в списке.
Как победить эту неведомую хрень? Может у кого было подобное.
Заказчику удобно перетаскивать вручную, но при этом если случайно нажать заголовок столбца, надо откатывать базу, чтобы восстановить работоспособность админки
Плагин на событие mSyncOnProductOffers
Добрый день!
Помогите написать не большой плагин на событие mSyncOnProductOffers.
Что бы при выгрузке из 1с обновлялось поле у товара, созданное через msFieldsManager (поле называется remain).
Установлен компонент для учета остатков msProductRemains (он работает по такому-же событию и обновляет свои остатки)
Есть плагин, которые работает при сохранении товара.
Помогите написать не большой плагин на событие mSyncOnProductOffers.
Что бы при выгрузке из 1с обновлялось поле у товара, созданное через msFieldsManager (поле называется remain).
Установлен компонент для учета остатков msProductRemains (он работает по такому-же событию и обновляет свои остатки)
case 'mSyncOnProductOffers':
$xml = $modx->getOption('xml', $scriptProperties);
$field = $modx->getOption('mspr_msync_field', $scriptProperties, 'Количество');
if ( !is_object($xml) || !isset($xml->$field) ) break;
$product = $modx->getOption('resource', $scriptProperties);
$msProductRemains->saveRemains(array_merge($product->get('options')?:array(), array(
'product_id' => $product->get('id')
,'count' => (float) $xml->$field
,'set' => true
)));
break;Нужно что бы при обновлении товара, добавлялось количество в поле remain, сейчас это работает на сохранение товара.Есть плагин, которые работает при сохранении товара.
<?php
$eventName = $modx->event->name;
switch($eventName) {
case 'OnDocFormSave':
if ($resource->get('class_key') == 'msProduct') {
$modx->addPackage('msproductremains', $modx->getOption('msproductremains.core_path',null,$modx->getOption('core_path').'components/msproductremains/').'model/');
$stock = 0;
$sql = "SELECT remains FROM {$modx->getTableName('msprRemains')} WHERE product_id = ".$id;
$query = $modx->prepare($sql);
$query->execute(array(0));
$remains = $query->fetchAll(PDO::FETCH_ASSOC);
foreach ($remains as $remain) {
$stock += $remain['remains'];
}
// $resource->setTVValue('stock', $stock);
$resource->set('remain', $stock);
$resource->save();
}
break;
} Кто-нибудь пробовал писать кеширование для mFilter2?
Этот сниппет нужно вызывать некешированным.
Но это потому что стандартный механизм кеша в MODX кеширует слишком… топорно.
Что, если написать свое кеширование, которое будет зависеть от get-параметров? В него будет включена пагинация и примененные фильтры.
Кто-нибудь пробовал? Какие тут подводные камни?
Не хочется потратить несколько часов, а то и дней. И понять, что идея «так себе».
Но это потому что стандартный механизм кеша в MODX кеширует слишком… топорно.
Что, если написать свое кеширование, которое будет зависеть от get-параметров? В него будет включена пагинация и примененные фильтры.
Кто-нибудь пробовал? Какие тут подводные камни?
Не хочется потратить несколько часов, а то и дней. И понять, что идея «так себе».
msfilter2 и скрытие отключенных (disabled) чекбоксов
Добрый всем день.
Есть ли возможность в фильтре скрывать чекбоксы, которые переходят в состояние disabled, после начала фильтрации (изображение 1)?

Попытался скрыть через CSS просто по классу, но вместо отключенных чекбоксов остается пустое место, сдвига выборов не происходит (изображение 2).
Есть ли возможность в фильтре скрывать чекбоксы, которые переходят в состояние disabled, после начала фильтрации (изображение 1)?

Попытался скрыть через CSS просто по классу, но вместо отключенных чекбоксов остается пустое место, сдвига выборов не происходит (изображение 2).
Возможно ли в сниппете, вызванном из чанка tpl, получить переменные товара, которые устанавливаются при вызове msProducts?
Я вызываю msProducts. В аргументе tpl я указываю чанк. В этом чанке я вызываю сниппет. Как мне в сниппете получить значения, которые msProducts отправил в чанк? Я имею в виду значения конкретного товара (значения опций, pagetitle, longtitle и т.д.).
Их нужно в сниппет самому передавать? Но ведь значений очень много может быть. А еще опции, которые зависят от родителя товара. Просто так все это не передать в сниппет. Тут будут сложности и overhead.
Может, все же есть способы получить данные от msProducts в сниппете, который вызывали в чанке tpl, не передавая их в сниппет явно? Может, в каком-то массиве внутри $modx они содержатся? Или у $modx есть функция для их получения?
Их нужно в сниппет самому передавать? Но ведь значений очень много может быть. А еще опции, которые зависят от родителя товара. Просто так все это не передать в сниппет. Тут будут сложности и overhead.
Может, все же есть способы получить данные от msProducts в сниппете, который вызывали в чанке tpl, не передавая их в сниппет явно? Может, в каком-то массиве внутри $modx они содержатся? Или у $modx есть функция для их получения?
Поле из адреса в классе расчета достаки
Добрый день.
пытаюсь сделать расчет стоимости доставки, в зависимости от времени, выбранного пользователем. Для этого добавил поле — Удобное время доставки, в нем интервалы. У каждого интервала своя стоимость плюсом.
Скажите, как данные из этого поля передать в скрипт своего класса расчета стоимости доставки?
Сам расчет стандартный
пытаюсь сделать расчет стоимости доставки, в зависимости от времени, выбранного пользователем. Для этого добавил поле — Удобное время доставки, в нем интервалы. У каждого интервала своя стоимость плюсом.
Скажите, как данные из этого поля передать в скрипт своего класса расчета стоимости доставки?
Сам расчет стандартный
class msDeliveryCourierHandler extends msDeliveryHandler implements msDeliveryInterface {
public function getCost(msOrderInterface $order, msDelivery $delivery, $cost = 0) {
$freedeliverysumm = 1299;
$delivery_time = 28; // Значение интервала
$cart = $order->ms2->cart->status();
$zakaz = $order->get();
$cart_cost = $cart['total_cost'];
if($cart_cost > $freedeliverysumm){
return $cost;
}else{
$delivery_cost = parent::getCost($order, $delivery, $cost);
return $delivery_cost;
}
}
} FormIt сохранить поля которых нет в форме
Здравствуйте! Столкнулся с таким вопросом.
Есть формы которые отправляют определенные данные и сохраняют их в FormIt. Но мне нужно чтобы дополнительно FormIt сохранял определенные данные, которых нет в форме (по определенным причинам я не хочу их там указывать, даже скрывая эти поля).
И вот даже не могу понять в какую сторону копать. В идеале это было бы сделать Плагин, чтобы в каждую форму не писать новый Хук, но и с Хуком в целом подойдет.
В документации ничего такого не нашел. Посмотрел Сниппет FormItSaveForm там есть такое:
Есть формы которые отправляют определенные данные и сохраняют их в FormIt. Но мне нужно чтобы дополнительно FormIt сохранял определенные данные, которых нет в форме (по определенным причинам я не хочу их там указывать, даже скрывая эти поля).
И вот даже не могу понять в какую сторону копать. В идеале это было бы сделать Плагин, чтобы в каждую форму не писать новый Хук, но и с Хуком в целом подойдет.
В документации ничего такого не нашел. Посмотрел Сниппет FormItSaveForm там есть такое:
$newFormArray = array(
'form' => $formName,
'date' => time(),
'values' => $dataArray,
'ip' => $modx->getOption('REMOTE_ADDR', $_SERVER, ''),
'context_key' => $modx->resource->get('context_key'),
'encrypted' => $formEncrypt,
'encryption_type' => $encryptionType,
'hash' => $formHashKey,
); OnWebPageInit получение настроек сайта / Работа с cookie куками и API MODX
Здравствуйте! Возник такой вопрос, не могу найти решение в интернете, хотя казалось бы вопрос простой.
Событие OnWebPageInit и мне в этом событии нужно получить параметр настройки сайта. В сниппете все работает, а именно в обработчике события нет:
Но именно как в этом событии получить настройку сайта я не могу найти. Подскажите пожалуйста
UPD:
Сделал через событие OnHandleRequest — все работает и обращение к API MODX и работа с Куками
Событие OnWebPageInit и мне в этом событии нужно получить параметр настройки сайта. В сниппете все работает, а именно в обработчике события нет:
$modx->getOption('setting_param')Как я помню в OnWebPageInit всегда вопрос по доступности к API modx.Но именно как в этом событии получить настройку сайта я не могу найти. Подскажите пожалуйста
UPD:
Сделал через событие OnHandleRequest — все работает и обращение к API MODX и работа с Куками
Подскажите как настроить Sitemap под мультиязычность
Есть снипет который уже не обслуживается но очень хорошо работает… точнее работает на сайтах без мультиязичности. Проблема в том что он выводит все ссылки без учета Site_url (Base_url) определенного контекста.
Например главная под RU выводит
Ru: site.net/
EN: site.net/.а должно быть… site.net/en
подскажите что исправить.
Еще в контекстах есть настройка Site_start где указан ID главной каждого контекста. Как сделать проверку чтоб к главним в контекстах не добавлялся Алиас
Например главная под RU выводит
Ru: site.net/
EN: site.net/.а должно быть… site.net/en
подскажите что исправить.
Еще в контекстах есть настройка Site_start где указан ID главной каждого контекста. Как сделать проверку чтоб к главним в контекстах не добавлялся Алиас
Вывод всех товаров производителя (vendor:name=pagetitle)
У меня созданы ресурсы с названием производителей.
Созданы сами производители, привязаны к этим ресурсам.
В товарах указаны эти производители.
В ресурсе я хочу вывести все товары каталога производителя равного pagetitle текущей странице.
Но получаю пустые результаты, подскажите как правильно.
Созданы сами производители, привязаны к этим ресурсам.
В товарах указаны эти производители.
В ресурсе я хочу вывести все товары каталога производителя равного pagetitle текущей странице.
Но получаю пустые результаты, подскажите как правильно.