Всего 125 986 комментариев

R2m0x94 (Vasily)
22 декабря 2021, 18:38
0
Точнее так будет более правильнее:
$plugin = ['availability' => '{core_path}components/minishop2/plugins/cart/availability/index.php'];
if ($miniShop2 = $modx->getService('miniShop2')) {
    $miniShop2->addPlugin('cart', $plugin);
}
R2m0x94 (Vasily)
22 декабря 2021, 18:15
0
Возьмем например такую иерархию в дереве каталогов проекта:
plugins
|_cart
|_|_availability
|_|_|_index.php
|_order
|_|_custom_modules
|_|_|_index.php
|_|_deliverytime
|_|_|_index.php
И рассмотрим пример системной настройки ms2_plugins: []
Давайте попробуем туда записать данные за вместо квадратных скобок, поместим массив json:
{
    "cart": {"availability": "{core_path}components/minishop2/plugins/cart/availability/index.php"}, 
    "order": {
        "custom_modules": "{core_path}components/minishop2/plugins/order/custom_modules/index.php",
        "deliverytime": "{core_path}components/minishop2/plugins/order/deliverytime/index.php"
    }
}
Работает, отлично!

На Вашем же примере надо просто выполнить код в консоле, который будет помещать массив в плагин cart
<?php
$plugins = [
    'cart' => ['availability' => '{core_path}components/minishop2/plugins/cart/availability/index.php']
];
if ($miniShop2 = $modx->getService('miniShop2')) {
    $miniShop2->addPlugin($plugins);
}
И Вы увидите в системной настройке ms2_plugins массив-json со следующем содержимом:
{"cart": {"availability": "{core_path}components/minishop2/plugins/cart/availability/index.php"}}
Алексей
22 декабря 2021, 15:30
0
да этот официальный плагин затирает cart_cost переменную, вся логика расчёта корзины теряется
да и удаляться сам без ошибок не умеет, приходиться файлик
core/components/minishop2/custom/order/boxberryOrderHandler.class.php
вручную удалять
прям бестолково сделан, ничего не скажешь, сдэком проще доставлять-)
vrm13
22 декабря 2021, 09:39
0
согласен, но я не могу в поддержку более года прошло на оба компонента, поэтому сам ковырял. У msoneclick даже есть события типа «msoneclick_after_init» только всё рано не получилось, в консоли вижу только одну разницу в вызовах на странице и в модальном окне: на странице когда всё работает подключается actions.php от msOrderFiles, а в модальном окне его не появляется, а как он запускается я так не понял.
Андрей
21 декабря 2021, 21:43
+1
«Подскажите, пожалуйста, на каких компонентах такое можно реализовать?»
По идее можно попробовать сделать на — UserEvents
Николай Савин
21 декабря 2021, 20:12
+3
Ой да кто тут опытный, это же MODX. Тут если знают что такое PHP — это уже опытные.
А если умеют компоненты делать — так вообще полубоги.
Тодор
21 декабря 2021, 18:26
+2
я не самый опытный в этом вопросе, но посмотрю может как-нибудь соберу вместе свои примеры по этому вопросу и опубликую
Тодор
21 декабря 2021, 18:23
1
+2
Здесь немного сложнее, нужно расширить класс mse2FiltersHandler по этой инсрукции и отредактировать метод getSortFields, перед return нужно добавить еще пару строк
if(!empty($this->config['sortby'])){
    //если хочеш использовать те параметри что были при инициализации mFilter2
    $sortby = explode(",", $this->config['sortby']);
    array_unshift($data,  $sortby[0]); 
    //можно и напрямую заново определить sortby
    //array_unshift($data, "CASE `Data`.`vendor` WHEN 7 THEN 1 ELSE 0 END ASC"); 
}
Николай
21 декабря 2021, 14:39
0
Здравствуйте, а так и должно быть? Видео
Николай Савин
21 декабря 2021, 12:56
1
+2
Это очень интересный кейс. @Тодор а чего бы тебе не написать чуть более расширенную заметку на эту тему. Что-то вроде «Сортировка с использованием операторов БД».
Не припоминаю, чтобы я тут такое встречал.
Giant Dad
21 декабря 2021, 12:53
0
Спасибо. Это помогло. А можно ещё как-то сделать так, чтобы при сортировке, положим, по цене, сначала тоже выводились товары с указанным свойством с сортировкой по цене, а потом — остальные тоже с сортировкой. Например, сначала товары производителя «Х» от самого дорогого до самого дешёвого, а потом товары всех остальных производителей, тоже от дорогого до дешёвого? В одном списке.
Александр Туниеков
20 декабря 2021, 21:08
0
У меня все TV пропадали, кроме тех, что вне категорий. Выяснилось, что исчезло поле rank таблицы категорий, а при построении TV делается запрос категорий с сортировкой по rank. И соответственно запрос ничего не возвращал.
Проверяй таблицу категорий, файлы manager\templates\default\resource\sections\tvs.tpl, manager\controllers\default\resource\update.class.php, manager\controllers\default\resource\resource.class.php.
Shedko Denis
20 декабря 2021, 20:01
0
ИМХО, для начала откройте в другом браузере. И если там не будет такой ошибки — что почти 99,99%, то загрузите сайт без кэша.

Чтобы просто перезагрузить страницу без использования старого кэша необходимо нажать на клавиатуре CTRL+F5 или CTRL+SHIFT+R.
Бывало такое на одном из пк, почему именно на нем — не выяснили.
Тодор
20 декабря 2021, 18:49
4
+3
Убери
'sort'=>'resource|menuindex:asc',
оставь только
'sortby' => 'CASE `Data`.`vendor` WHEN 7 THEN 1 ELSE 0 END ASC, msProduct.id',
Giant Dad
20 декабря 2021, 17:35
0
А как можно получать изображения модификаций товаров из МойСклад в модификацию msOptionsPrice2? Используется API 1.2. Это где-то в настройках syncMoySklad указывать? Я вижу параметр sync_moysklad_modification_fields, но не понимаю, что дописать в JSON, чтобы получить картинку модификации. Это вообще возможно?
Giant Dad
20 декабря 2021, 16:28
0
Сниппет mFilter2, вот такой вызов
{'!mFilter2' | snippet : [
                'element'=>'msProducts',
                'class'=>'msProduct',
                'tplOuter'=>'tpl_mfilter_outer.tpl',
                'tpl'=>'tpl.product.row.custom2',
                'limit'=>'12',
                'sort'=>'resource|menuindex:asc',
                'showEmptyFilters'=>'false',
                'filters'=>'
        				msoption|dlina:number,
        				msoption|karmany:number,
        				msoption|razmer:default,
                        msoption|sezon:default'
        	    'aliases'=>'
        				msoption|dlina==dlina,
        				msoption|karmany==karmany,
        				msoption|razmer==razmer,
                        msoption|sezon==sezon',
                'parents'=>$_modx->resource.id,
                'tplPageWrapper'=>'@INLINE <ul id="mse2_pagination" class="pagination">{$first}{$prev}{$pages}{$next}{$last}</ul>',
                'tplPageActive'      => '@INLINE <li class="active"><a href="{$href}">{$pageNo}</a></li>',
                'tplPageFirst'	    => '@INLINE <li class="control"><a href="{$href}">«</a></li>',
                'tplPageLast'	    => '@INLINE <li class="control"><a href="{$href}">»</a></li>',
                'tplPagePrev'	    => '@INLINE <li class="control"><a href="{$href}">‹</a></li>',
                'tplPageNext'	    => '@INLINE <li class="control"><a href="{$href}">›</a></li>',
                'tplPageSkip'	    => '@INLINE <li class="disabled"><span>...</span></li>',
                'tplPageFirstEmpty'	=> '@INLINE <li class="control"><span>«</span></li>',
                'tplPageLastEmpty'	=> '@INLINE <li class="control"><span>»</span></li>',
                'tplPagePrevEmpty'	=> '@INLINE <li class="disabled"><span>‹</span></li>',
                'tplPageNextEmpty'	=> '@INLINE <li class="disabled"><span>›</span></li>',
                'includeTVs'=>'catalog_hide',
                'where'=>'{"catalog_hide:IS": null}'
                'sortby' => 'CASE `Data`.`vendor` WHEN 7 THEN 1 ELSE 0 END ASC, msProduct.id',
            ]}
Я не очень хорошо разбираюсь в сортировке. Если можно, подскажите хотя бы куда смотреть, что читать. Какие-то примеры…
Тодор
20 декабря 2021, 16:24
0
Что именно не помогоает? Єто общий принцип как именно можна ето сделать. Дальше все зависит от того, к какому снипету ето надо прикрутить и поддержывает ли етот снипет такие параметры
Giant Dad
20 декабря 2021, 16:19
0
Вместо __VENDOR__ID__ же нужно подставить id из таблицы modx_ms2_vendors? Если да, то не помогает