Dan

Dan

С нами с 29 июня 2021; Место в рейтинге пользователей: #149
Dan
Dan
29 декабря 2023, 16:03
0
То, про что вы говорите, не требует PHP вообще. Это чистый js в 3 строчки. Мое решение позволяет видеть какой товар есть в корзине и в каком количестве на любой странице сайта, и в то же время позволяет удалять товар из корзины, не находясь на ее странице.
Dan
Dan
29 декабря 2023, 10:11
+1
Класс может не добавили или в скрипте ошибка какая. А тут нет разницы какой CSS-фреимворк, я ими вообще не пользуюсь например) если что можете написать доступы мне телеграмм (аккаунт в профиле) гляну сегодня и поправлю, заодно напишу в чем была проблема
Dan
Dan
27 декабря 2023, 19:52
0
Все верно. Копируете полностью методы add и remove (полный код функций function add и function remove). И добавляете им в return $this->success ключ incart_html с нужным чанком.

на странице категории пока еще не разобрался
В чанке tpl товара, вместо кнопки сабмит вставляете код, который указан в статье (сниппет inCart с параметром product обернутый в incart-container)

Работает правда немного косячно
Что не так работает?
Dan
Dan
25 декабря 2023, 17:32
0
И ещё один вопрос, как отловить событие из плагина на js, чтобы вывести предупреждение на фронте?
Не нужно никаких js.
Расширяете msOrderHandler переопределив метод submit. В нем проверяете
if ($delivery_cost == 0) {
    return $this->error('Стоимость доставки не может быть равна нулю.'); //тут свое сообщение. Можно использовать ключи записей словаря
}
Dan
Dan
25 декабря 2023, 17:26
0
Интересное решение с использованием ZoomX!
Ну, как я и писал, мое решение не претендует на топ. Если будет критика и правки, я только за — поправлю на сайтах своих)
Dan
Dan
25 декабря 2023, 11:33
0
С версии 4.1.4 кстати можно обойтись и без PHP, но тогда часть скрипта придется внедрять в скрипт от ms2. События remove и change с этой версии возвращают id товара и его кол-во в корзине. По сути нужно только category и name. Можно внедрить код в метод send в скрипте ms2 и в случае success получать объект формы, с которой была отправка и цеплять эти данные с дочерних метатегов.
Dan
Dan
24 декабря 2023, 15:03
+1
Отличное решение!
Кстати по поводу purchase я вешал отправку на колбэк
miniShop2.Callbacks.Order.submit.response.success = function (response) {
//Тут сбор данных и отправка
}
Но минус в том, что под каждую разметку приходится немного править код, но зато нет дублей.

А для событий change и remove я расширил msCartHandler, чтобы он возвращал id товара, добавленное/удаленное количество, его категорию и название.
Dan
Dan
21 ноября 2023, 21:49
0
Расширить класс msOrderHandler, переопределив в нем метод getNum
Dan
Dan
16 октября 2023, 22:10
0
object_err_nfs, если посмотреть класс modprocessor и конкретно абстрактный класс modObjectRemoveProcessor, появляется если Modx не может получить объект указанного класса по ключу. Может стоит в своем коде подключить его, т.е.:
$modx->addPackage('ms2Gallery', $modx->getOption('core_path').'components/ms2gallery/model/ms2gallery/');
Dan
Dan
16 октября 2023, 21:50
0
Покажите как приходят ID-шники в POST-запросе? Точно в верном формате?
Dan
Dan
05 сентября 2023, 17:57
0
т.е. у вас артикул выводится даже на странице ресурсов с id 29 и 31 и на их дочерних ресурсах?
Dan
Dan
04 сентября 2023, 17:02
0
Это же страница товара, а не карточка. И я ведь написал в комменте, почему вы его не прочитали? Нужно выводить не [[+article]] в шаблоне, ибо это плейсхолдер, а {$_modx->resource.article}
Dan
Dan
04 сентября 2023, 16:43
0
Во первых, прочитайте тщательно мой коммент выше, где я указал ссылку на документацию и поймете, где у вас ошибка.
Во вторых, покажите вызов сниппета, которым выводятся карточки, код чанка карточки.
Dan
Dan
04 сентября 2023, 16:08
0
Я же написал в комменте. В самом первом моем комменте и комменте Артура, условие для страницы товара. Для карточки товара, если она выводится сниппетом, условие будет то, что я написал в последнем комменте
Dan
Dan
04 сентября 2023, 15:44
0
Вам бы документацию Fenom почитать.
{$_modx->resource.id} и подобные этому вызовы обращаются к полям текущего ресурса. Поэтому в чанке будет так:
{if $parent != 31 && $id != 31}
  <div class="reward"><span>Артикул:</span> <span class="item">{$article}</span></div>
{/if}
И кстати:
1) Не смешивайте стандартный синтаксис и fenom. Раз пишите в fenom, пишите все в нем. Т.е. не
[[+article]]
, а
{$article}
2) По-моему в первом условии должно быть не
[[+article]]
, а
{$_modx->resource.article}
Dan
Dan
04 сентября 2023, 14:25
+1
что бы у всех подкаталогов родителя 31 скрывался артикул
При этом код у вас написан наоборот. Наверное нужно что-то в этом роде:
{if $_modx->resource.parent != 31 || $_modx->resource.id != 31}
  <div class="reward"><span>Артикул:</span> <span class="item">[[+article]]</span></div>
{/if}
Dan
Dan
04 сентября 2023, 14:13
0
Вы хоть свой вызов и чанки покажите
Dan
Dan
01 сентября 2023, 17:04
0
Вызов сниппета бы увидеть