Валерий

Валерий

С нами с 12 октября 2015; Место в рейтинге пользователей: #633
Валерий
21 ноября 2021, 20:20
0
Проблему решил. Добавил в вызов фильтра:
&leftJoin=`{"Remains":{"class":"msprRemains","on":"msProduct.id = Remains.product_id AND Remains.remains > 0"}}`
&loadModels=`msproductremains`
&groupby=`msProduct.id`
&select=`{"msProduct":"*","Remains":"SUM(Remains.remains) as remains"}`
Валерий
20 ноября 2021, 15:14
0
В одной из веток комментариев уже задавал вопрос, но лучше опишу проблему полнее, так, как ее вижу сейчас:

1. Для вывода товара на сайте используется компонент msFilter2.
2. Для отслеживания остатков компонент msProductRemains
2. В карточках товара важно указывать возможность «Купить» или статус «Нет в наличии». Для чего используется конструкция:
Вызов сниппета, в каждой карточке (в чанке msProducts.row):
[[!getRemains:toPlaceholder=`remains`? &id=`[[+id]]`]]
И условие:
[[!+remains:lt=`1`:then=`<div class="no-remains">Нет в наличии</div>`:else=`<span><button class="btn btn-primary list-prod__submit" type="submit" name="ms2_action" value="cart/add">Купить</button></span>`]]
Условие срабатывает прекрасно, если просто зайти на страницу каталога.
Однако, на странице выдается 20 товаров из множества, таким образом есть еще и пагинация. Если переключаться через пагинацию, то условие выше не работает, потому что в каждую карточку загружается значение первой карточки. Если обновить страничку, то все считается корректно.

Я так понимаю, что здесь мешает сам фильтр. Может быть кто-то встречался с такой проблемой и решил ее?
Валерий
20 ноября 2021, 14:57
0
Есть уточнение. Проблема в кнопках пагинации. Т.е, если перейти просто на ссылку на странице, то все значения подгружаются верно, а если переходить по кнопкам page.nav, то без обновления страницы значение одно на все карточки.
Валерий
18 ноября 2021, 21:42
0
Сергей, добрый вечер.
Спустя несколько лет у меня вновь возникли проблемы с выводом кнопки «нет в наличии» в данном компоненте.
Несмотря на "!" в вызовах сниппета и плейсхолдера, при первой загрузке страницы из 12 товаров, каждому товару присваивается количество первого в списке. Если страничку перезагрузить, то все работает корректно.
Как такое может быть? Могу ли без принудительного обновления страницы я добиться верных значений?
Валерий
21 апреля 2021, 16:29
0
А подскажите, пожалуйста, про сумму скидки.
Кроме этого:
<div class="ms2_total_discount">{$total.discount}</div>
Еще какие-то классы нужны, чтобы обновлялась скидка динамически? А то у меня в этой обертке, при изменении количества товара со скидкой, сумма скидки просто в ноль превращается. Также, если использовать промокод из «msPromoCode2», сумма становится нулем. После обновления страницы все высчитывается корректно.
Ошибок JS в консоли нет.
Валерий
21 апреля 2021, 14:28
0
Да, это я был не прав.
Общую сумму не так выводил. Сейчас все заработало, спасибо за терпение.
Валерий
21 апреля 2021, 13:58
0
Вероятно это я туплю. Но обновил еще раз минишоп (переустановил), перезаписал чанки (17 штук). Версия минишопа 2.8.3. Но в чанках не появилось значений с словом «discount».

Также, оказалось, что вызов discount_price пишет о скидке только тогда, когда я использую промокод. Если же промокод не использован и скидка сделана средствами самого магазина, то там стоит «0».

Вот здесь — new.legendaryleonidas.ru/onlajn-magazin/pasha/nabor-dora-s-assorti-shokoladnyh-yaic.html (если добавить этот товар и перейти в корзину).
Валерий
20 апреля 2021, 16:44
0
Это чудесно, спасибо!
В чанках после обновления не нашел, потому и спросил.

Все прекрасно работает :)
Валерий
20 апреля 2021, 16:09
0
Насколько я понимаю, данный функционал так и не был добавлен, верно?
Просто, чтобы не изобретать велосипед спрашиваю.
Валерий
15 ноября 2020, 11:10
0
В любом случае спасибо за ответ :) С новыми работами будет проще.
Валерий
30 июля 2020, 20:39
0
Похоже, что была проблема в сопоставлении базы данных. Нужно было ставить utf8_general_ci, а было utf8mb4.
Просто также не работал вновь установленный Redirector, но там хоть по логам стало понятно, в чем проблема.
Валерий
30 июля 2020, 19:55
0
Такая же проблема сегодня обнаружилась. Правда, я впервые поставил AutoRedirect.
В логах ничего нет.
Валерий
16 января 2020, 03:42
0
Столкнулся на днях с такой же проблемой. Бился пару часов, пока не понял, где ошибался. В итоге, создал чанк для параметра tpl у pdoSitemap:

<url>
<loc>[[!slash_out? &slash=`[[+url]]`]]</loc>
<lastmod>[[+date]]</lastmod>
<changefreq>[[+update]]</changefreq>
<priority>[[+priority]]</priority>
</url>
Где «slash_out» — сниппет:

if (empty($slash)) { return 'Пустая строка'; }
$slash = preg_replace("#/$#", "", $slash);
return $slash;
И все работает.
Валерий
21 августа 2019, 22:48
0
Проблема решена, благодаря вот этому посту — forums.modx.com/thread/92071/pdoresources-and-tvfilters#dis-post-513666
Получается, что мой TV на этапе вывода все-таки не был в unix формате, хотя уже на выходе был в нем.
Валерий
21 августа 2019, 21:41
0
tvPrefix, как я понимаю, тут не при чем. Он в параметре where не используется.

А про "документы\мероприятия" — это я так про ресурсы написал. Сайт с анонсами мероприятий.
Валерий
12 февраля 2019, 18:38
0
Такой способ не работает «до конца». Когда страница обновлена, то все хорошо. Когда добавляешь еще один товар, то миникорзина показывает вновь общую сумму — после обновления страницы все опять верно.
Тоже дошел до такого «способа», но для странички заказа… Там такая же ерунда, при просчете итераций.
Валерий
06 февраля 2019, 13:30
0
Свою проблему решил в итоге, просто скопировав с нуля родной чанк и удалив аккуратно лишнее, проверяя на каждом удалении работу.
Пришлось внутри чанка организовать две колонки — после этого все заработало.
Похоже, одну из оберток все-таки терял.
Валерий
11 января 2019, 19:03
0
Возможно вы сможете подсказать, что именно вы дописали, чтобы скрипт отрабатывал корректно?
Я дополнил строку
'msOrderProduct.product_id' => $product->id,
вот так:
'msOrderProduct.product_id' => $modx->resource,
И даже все заработало (зарегистрированный пользователь может скачать файл), а анонимный только купить.
Однако, зарегистрированный пользователь теперь может скачать любой файл, а не только тот, что был им куплен… Как вы это обошли?
Валерий
11 декабря 2018, 11:16
0
Всем добрый день.

Столкнулся с непонятной проблемой. Пытаюсь вывести фильтр и результат фильтрации в разных контейнерах.
Получаю такую картину:

1. При указании
&toPlaceholders=`my.`
И при корректном переносе всех id:
<div id="mse2_mfilter" class="wrapper">
    <div class="navigation">
        [[!mFilter2?
            &parents=`[[*id]]`
            &toPlaceholders=`my.`
            &class=`msProduct`
            &element=`msProducts`
            &filters=`
                ms|vendor:vendors,
                ms|price:number,
                ms|size:number
            `
            &tplOuter=`user_tpl.mFilter2.outer`
            &tplFilter.outer.ms|price=`tpl.mFilter2.filter.slider`
            &tplFilter.row.ms|price=`tpl.mFilter2.filter.number`
            &tplFilter.outer.ms|size=`tpl.mFilter2.filter.slider`
            &tplFilter.row.ms|size=`tpl.mFilter2.filter.number`
            &showLog=`1`
        ]]
    </div>
    <div class="right-zone">
        <div id="mse2_results">
			[[+my.results]]
		</div>
    </div>
</div>
В чанке фильтра «user_tpl.mFilter2.outer» удаляю #mse2_mfilter и добавляю к плейсхолдерам «my.», больше ничего не меняю.
Результат: фильтр слева исчезает, а продукция справа есть.

2. Однако, когда я не указываю "&toPlaceholders" и работаю с плейсхолдерами по-умолчанию, у меня фильтр слева есть, но, результат справа не показывается до момента активации фильтра (до первого выбора любого фильтра). Потом справа появляются товары и все работает нормально.

Я понимаю, что где-то ошибся с настройками, но я не могу найти где. Все ID прописаны корректно. Может быть должна быть какая-то максимальная\минимальная глубина нахождения каждого ID?
Валерий
18 октября 2018, 19:10
+1
О, на эту статью еще не натыкался, сейчас сидел с другими.
Спасибо, буду так решать :)