R2m0x94 (Vasily) · 28 марта 2025, 11:38 Добрый день, а где можно познакомится с методами записи и получения объектов к доступу таблиц? Опробовав логически перебрать все варианты получилось соединиться с _msie_presets_fields // Получение $item = $modx->getObject('MsiePresetsFields', array('id' => 1));// Запись ... $item = $modx->newObject('MsiePresetsFields'); $item->fromArray($msie_2); $item->save(); Новые дополнения и их версии / msImportExport 2.0 129 0 2
R2m0x94 (Vasily) · 22 июня 2024, 01:13 /** @var $utm utmExample */.htaccess <IfModule mod_rewrite.c> Options +FollowSymLinks RewriteEngine On RewriteCond %{QUERY_STRING} (^|&)^utm_source=yandex($|&) RewriteRule ^(.*)$ /$1?utm_source=chromium&utm_medium=cpc&utm_campaign=metrica [R=301,L] </IfModule>plugin: <?php if ($modx->event->name == 'OnHandleRequest') { if ($modx->context->get('key') == 'mgr') {return;} if (strpos($_SERVER['REQUEST_URI'], 'utm_source=chromium') !== false) { $_SESSION['utm_saved'] = '?utm_source=chromium&utm_medium=cpc&utm_campaign=metrica'; return; } else { if (empty($_SESSION['utm_saved'])) { return; } if (!empty($_GET['utm_source'])) { return; } $modx->sendRedirect($modx->getOption('site_url').ltrim($_SERVER['REQUEST_URI'], '/').$_SESSION['utm_saved']); } } return; Вопросы / Перенос по страницам или сохранение UTM меток. 8 +1 1
R2m0x94 (Vasily) · 20 июня 2024, 23:29 Пока нет, но будут новости — сообщу! Спасибо за рабочий пример) {'!mFilter2' | snippet : [ 'leftJoin' => '{ "cfFieldPrices" : { "class" : "cfField", "alias" : "cfFieldPrices", "on" : "cfFieldPrices.city_id = ' ~ $_modx->getPlaceholder('current_city.id') ~ ' AND cfFieldPrices.placeholder = CONCAT(\'[pre]\', msProduct.id, \'_price[/pre]\')" } }', 'select' => '{ "msProduct" : "*", "cfFieldPrices" : "cfFieldPrices.value AS cfprice" }' ]} Новые дополнения и их версии / cityFields. Города, информация и цены для каждого 92 +1 2
Павел Романов · 28 мая 2024, 12:22 Сделайте сниппет getTags: <?php $id = $modx->getOption('id', $scriptProperties, $modx->resource->get('id')); $table = $modx->getOption('table_prefix').'ms2_products'; if($query = $modx->query("SELECT * FROM {$table} WHERE id = {$id}")){ $prod = $query->fetch(PDO::FETCH_ASSOC); $tags = json_decode($prod['tags'], 1); foreach($tags as $tag){ $out .= $modx->getChunk($tpl, array('tag' => $tag)); } } return $out; Вызывайте: [[getTags? &tpl=`tag_tpl`]] Если не на странице товара, указывайте &id: [[getTags? &id=`[[+id]]` &tpl=`tag_tpl`]] Чанк tag_tpl: <a href="/search/?[[+tag]]" class="some-class">[[+tag]]</a> Вопросы / Вывести теги товара на странице товара zoomx (smarty) 8 +2 2
cronAbs · 15 ноября 2023, 10:22 Возможно условие, как-то обвернуть? &where=`[{"Data.id:NOT IN":["32"]}, {"Data.favorite":"1","OR:Data.new:=":"1"}]`[[!msProducts? &parents=`2` &depth=`5` &limit=`10` &sortby=`{"publishedon":"DESC"}` &where=`{"Data.id:NOT IN":["32"],"Data.favorite":"1","OR:Data.new:=":"1"}` &tpl=`idx_new` &showLog=`1` ]] Вопросы / Не срабатывает исключение ресурсов в msProducts 1 0 1
cronAbs · 25 июля 2023, 14:51 Как из свойств товара-ресурса записать в одну опцию товара? Например если 2-3 значения, а 1 ключ, конечно можно использовать вариант в свойствах если там уже есть данные json, как многомерный массив, но мы сделаем тестовую опцию множественный выбор. Назовём опцию made_from Заведём в опцию значения (В настройках minishop2), чтобы получились значения: Металла Дерева Вторсырья Текстиля Пластика * — не программно, вручную (если программно, то дописывайте код) Далее выполним: <?php $key = 'made_from'; // имя опции товара $resource = $modx->getObject('modResource', 44); $product = $modx->getObject('msProduct', $resource->id); //$arr = $resource->get('properties')['technicals']['Детали изготовлены из']; $arr = ['Пластика','Вторсырья']; $options = $product->loadData()->get('options'); foreach ($arr as $k => $v) { $options[$key][$k] = $arr[$k]; } $product->set('options', $options); $product->save();Готово. Теперь mFilter2 сможет фильтровать по опции. Если необходимо записать или обновить товары, то необходимо завернуть всё в getCollection Вопросы / Как записать опции товару? 12 0 1
R2m0x94 (Vasily) · 17 апреля 2022, 10:26 В сниппете mFilter2 раскомментируйте или добавьте строку на ~408, чтобы посмотреть в журнале ошибок — на какой странице проблема. <?php if (in_array($v['type'], array('number', 'decimal')) && isset($suggestions[$filter_key])) { $tmp = $suggestions[$filter_key]; array_walk($tmp, function($v, $k) use (&$tmp) { if (empty($v)) { unset($tmp[$k]); } }); $tmp = array_keys($tmp); if ($v['type'] == 'number') { $current_value = ($idx == 0) ? floor(min($tmp)) : ceil(max($tmp)); //$modx->log(modX::LOG_LEVEL_ERROR, 'PHP warning: min & max: [mSearch2] array("number", "decimal"): on "'.urldecode($_SERVER['REQUEST_URI']).'"'); } else { $current_value = ($idx == 0) ? min($tmp) : max($tmp); } }Далее, проверьте в самом вызове сниппета параметр &suggestions — какой фильтр используется, потом перейдите в чанк с input type=[number] и добавьте к input атрибуты min=«0» и max=«1000», max можно не указывать. Надеюсь помог. Вопросы / mFilter2 6 0 1
Андрей · 27 января 2021, 22:49 а там где вываливается весь каталог, group содержит и цифры и буквы: Z2416Да, действительно, у меня опция была числовая, потому не проверял с буквами. Сделай такой вывод, работает правильно: {'!msProducts' | snippet : [ 'resources' => -$_modx->resource.id, 'parents' => 35, 'limit' => 10, 'tpl' => 'tpl-shop-item-small', 'innerJoin' => '{ "Options":{ "class":"msProductOption"}}', 'groupby' => 'msProduct.id', 'where' => ['Options.key' => 'group', 'AND:Options.value:=' => $_modx->resource.group.0] ]} Вопросы / Выборка товаров по свойствам в MS2 2.2.0 30 0 1
Mikhail Tyrsyna · 25 сентября 2018, 17:10 utils.js Extras.combo.Field = function (config) { config = config || {}; Ext.applyIf(config, { url: Extras.config.connector_url, baseParams: { action: config.action, }, name: 'repository', fields: ['name'], mode: 'remote', displayField: 'name', fieldLabel: _('Extras'), valueField: 'name', editable: true, anchor: '99%', allowBlank: false, autoLoad: false }); Extras.combo.Field.superclass.constructor.call(this, config); }; Ext.extend(Extras.combo.Field, MODx.combo.ComboBox); Ext.reg('extras-combo-field', Extras.combo.Field); Потом просто используешь свой xtype где тебе нужно { xtype: 'extras-combo-field', action: 'mgr/load/getlist', } Процессор примерно такой <?php require_once MODX_CORE_PATH.'components/extras/processors/mgr/extras/getlist.class.php'; class ExtrasLoadFieldProcessor extends ExtrasFieldGetListProcessor { public $permission = ''; public function prepareRow(xPDOObject $object) { $array = parent::prepareRow($object); $array['id'] = $array['name']; return $array; } } return 'ExtrasLoadFieldProcessor'; Вопросы / Добавление select с данными из другой таблицы в modExtra 15 +1 1
Михаил · 18 июля 2018, 11:03 Все решилось гораздо проще. Пропустил решение, которое не раз обсуждалось, с помощью sendForward. 1. Плагин на OnPageNotFound: <?php if ($modx->event->name != 'OnPageNotFound') {return false;} $alias = $modx->context->getOption('request_param_alias', 'q'); if (!isset($_REQUEST[$alias])) {return false;} $request = $_REQUEST[$alias]; if (!$id_res = $modx->findResource($request, 'web')) return false; $modx->sendForward($id_res); exit();2. Включить настройку allow_forward_across_contexts. Вопросы / Кеширование ресурса из другого контекста 1 0 1
Возможно ли реализовать возможность предоплаты за доставку на сайте? Так ради этого мне и нужно это все, чтобы клиент платил сразу при оформлении заказа, чтобы избавить себя от мусорных заявок (когда человек оставляет заявку, а предоплату делать не ...
Редизайн сообщества На больших экранах основной текст статьи я бы сделал 18 px. Да и текст комментариев можно таким сделать. Для меня лично 16 — мелковато на больших экранах (в комментариях вообще 15 ...
MiniShop3 1.11.0 при клике на radio идет пересчет итоговой суммы в orderUI, в зависимости от способов(оплаты доставки) я так поняла. попробуй код запуска события поставить ниже чем orderUI, после
ImageOptimizer - WebP/AVIF и responsive <picture> для MODX 3 Дополнение доступно modstore.pro/packages/photos-and-files/imageoptimizer
Localizator3 для MODX 3: перевод полей и TV без отдельного context на язык, Vue 3 + PrimeV... Добавил localizator3_default_language
msInShopNotify Начиная с версии 3.0.0-beta добавлена поддержка MiniShop3 Минимальные требования: PHP 8.4 MODX 3.2 MiniShop3
MaxNotify Обновление 1.2.0-pl (03.07.2026) — добавлены уведомления о заявках FormIt через hook-сниппет `maxNotifyFormIt`; — добавлены уведомления о заявках SendIt через hook-...
[msBonus2] 1.3.0 Бонус-коды, уведомления о сгорании и совместимость с msMultiCurre... Да, планируется. Даже чуть больше, чем просто бонусная система)
Опробовав логически перебрать все варианты получилось соединиться с _msie_presets_fields
// Получение
// Запись
plugin:
Вызывайте:
Если не на странице товара, указывайте &id:
Чанк tag_tpl:
Например если 2-3 значения, а 1 ключ, конечно можно использовать вариант в свойствах если там уже есть данные json, как многомерный массив, но мы сделаем тестовую опцию множественный выбор.
* — не программно, вручную (если программно, то дописывайте код)
Далее, проверьте в самом вызове сниппета параметр &suggestions — какой фильтр используется, потом перейдите в чанк с input type=[number] и добавьте к input атрибуты min=«0» и max=«1000», max можно не указывать. Надеюсь помог.
Потом просто используешь свой xtype где тебе нужно
Процессор примерно такой
1. Плагин на OnPageNotFound:
2. Включить настройку allow_forward_across_contexts.