Всего 123 791 комментарий

Наумов Алексей
05 сентября 2023, 17:18
0
В базе удобно… администратор может видеть брошенные корзины.
А еще можно зайти под своей учеткой с разных устройств и видеть корзину же?..
Николай Савин
05 сентября 2023, 17:17
+4
Не вижу ни одной причины за эту идею.
В то время как хранение корзины в базе дает кучу преимуществ
1. Во-первых, это уже реализовано в ms2 и повторить реализацию можно тупо быстрее.
2. Во-вторых, менеджеры могут просматривать какие заказы сейчас находятся на стадии оформления, какие брошены и брать контактные данные, если хоть какие-то остались. В общем полный функционал брошенных корзин
3. Сам покупатель не привязан к клиенту. Начал оформлять заказ на телефоне (авторизованный), затем перешел за комп и сразу после авторизации видит свой заказ.
Павел Голубев
05 сентября 2023, 17:13
0
А почему всю корзину не хранить в LocalStorage? А при оформлении заказа прокидывать в процессор создающий заказ данные из LocalStorage. Там и событие есть на изменение, можно сразу все корзины офовлять по нему.
Наумов Алексей
05 сентября 2023, 15:10
0
1. нагенерируйте нужные превью, указав их в источнике файлов miniShop2
2. см. доки docs.modx.pro/components/easycomm/rating-in-pdoresources-and-msproducts
Сергей
05 сентября 2023, 14:44
0
Доброго времени суток! Вопрос по компоненту — amocrm.
у меня работает в режиме хука для Formit — ajaxform.
Проблема — не создается контакт в вмо, телефон пишется просто в доп полях, он приходит но контакта нет.
Создается на сколько я понял, только когда авторизован в modx.
Поковырял исходники. Там вроде как контакт создается на событие — OnUserFormSave (создание, обновление юзера).
Мне надо бы для анонимов сделать.
Артур Шевченко
05 сентября 2023, 13:57
+1
И ещё важно не забыть сделать метод генерации ключа товара в корзине публичным.
Maks
05 сентября 2023, 13:52
0
Во-первых избавляйтесь от phpthumbon.
Чем посоветуете заменить?

Если у вас выводится на странице много товаров — стоит попробовать вместо вызова ecThreadRating делать join таблицы чтобы получать рейтинг товара.
Если не трудно покажите как это сделать?
Наумов Алексей
05 сентября 2023, 12:13
+2
п. 3 и 4 в msProducts — ура))
Необязательная регистрация пользователя — тоже ура)
Константин
05 сентября 2023, 10:57
0
Да, именно на странице товара и не получается отключить вывод артикула.
Ни так:
{if $parent != 31 && $id != 31 && $parent != 29 && $id != 29}
Ни так:
{if $_modx->resource.parent != 31 && $_modx->resource.id != 31 && $_modx->resource.parent != 29 && $_modx->resource.id != 29}
Наумов Алексей
05 сентября 2023, 10:54
0
Ну у вас прям навороченный чанк…
Во-первых избавляйтесь от phpthumbon.
Во-вторых уберите встроенный синтаксис modX (с прямоугольными скобками который).
Если у вас выводится на странице много товаров — стоит попробовать вместо вызова ecThreadRating делать join таблицы чтобы получать рейтинг товара.

Два вызова msOptions тоже… может как-то упростить?
Maks
05 сентября 2023, 10:44
0
<div class="ms2_product col-6 col-sm-6 col-md-4 mb-3 px-2">
              <div class="product text-center">
                  {var $productimage = 'phpthumbon' | snippet : ['input' => $_pls['$thumb'],  'options' => 'h=200&f=jpg&bg=ffffff']}
                  {var $productimagewebp = 'phpthumbon' | snippet : ['input' => $_pls['$thumb'],  'options' => 'h=200&f=webp&bg=ffffff']}
 [[!addComparison?
  &list_id=`15`
  &id=`[[+id]]`
]]                                           
                <a href="{$uri}" class="clr3" title="{$_modx->resource.pagetitle} {$pagetitle}">
                 
                    <picture>
                        <source srcset="{$thumb}" type="image/webp">
                        <source srcset="{$thumb}" type="image/jpg">
                        <img src="{$thumb}" alt="{$_modx->resource.pagetitle} {$pagetitle}" title="{$_modx->resource.pagetitle} {$pagetitle}" class="lazy img-fluid">
                    </picture>

                    
 <div class="flags ">
                    {if $new?}
                        <span class="badge badge-secondarynew  badge-pill mr-md-1">{'ms2_frontend_new' | lexicon}</span>
                    {/if}
                    {if $popular?}
                        <span class="badge badge-secondarytop badge-pill mr-md-1">{'ms2_frontend_popular' | lexicon}</span>
                    {/if}
                    {if $favorite?}
                        <span class="badge badge-secondaryfav badge-pill mr-md-1"> {'ms2_frontend_favorite' | lexicon}</span>
                    {/if}
                    {if $sklad?}
                        <span class="badge badge-secondarysklad badge-pill mr-md-1"> {'ms2_frontend_sklad' | lexicon}</span>
                    {/if}                    
                </div>                      
                    
                </a>
                               
                <div class="product-info">
                  <p class="font-weight-bold text-uppercase h4">
                      <a href="{$uri}" class="clr3" title="{$_modx->resource.pagetitle} {$pagetitle}"> 
[[+titletovar:ifempty=`[[+pagetitle]]`]]                  
                      </a></p>
                    [[!ecThreadRating?
                    	&thread=`resource-[[+id]]`
                    	&tpl=`RatingTovar`
                    ]]  

                  	  {$_modx->runSnippet('msOptions', [
                		'product' => $id,
                		'options' => 'tags',
                		'tpl' => '@FILE chunks/catalog/ProductOptions.tpl',
                	  ])}                       
                  	  {$_modx->runSnippet('msOptions', [
                		'product' => $id,
                		'options' => 'brand,made_in,available',
                		'tpl' => '@FILE chunks/catalog/msOptionsTags.tpl',
                	  ])}
                
                    {if $old_price?}
                        <img src="assets/img/icons/promo-badge.svg" alt="Иконка Акции" width="40" height="40" loading="lazy" class="promobadge">
                        <span class="old_price ml-md-3"><del>{$old_price} {'ms2_frontend_currency' | lexicon}</del></span>
                    {/if}                  
                  <p class="price clr1 font-weight-bold">
                   [[+price:is=`0`:then=`[[*context_key:is=`web`:then=`Цена по запросу`:else=`Ціна за запитом`]] `:else=`{$price} {'ms2_frontend_currency' | lexicon}`]]  
                  </p>

        
                  <a href="{$uri}" class="product-link" title="{$_modx->resource.pagetitle} {$pagetitle}">{'ms2_frontend_add_to_cart' | lexicon}</a>
 

        
                </div>
              </div>
            </div>
Чанк
Наумов Алексей
05 сентября 2023, 09:58
0
Попробовать:
1. отключить suggestions и посмотреть время
2. временно убрать почти все фильтры (оставить 1-2) и посмотреть время
2. покажите чанк с товаром, может там чего?
Артур Шевченко
04 сентября 2023, 23:10
0
Так а с чего бы он их начал парсить, если их нет или они в неподходящем для парсинга формате? У вас и ошибки не было, было предупреждение, что вы передаёте в функцию foreach не массив. Я показал как сделать проверку, чтобы предупреждение ушло, но цикл-то от этого не запустился. Надо разбираться что лежит в $node и исходя из этого корректировать код.
Дмитрий
04 сентября 2023, 21:55
0
Ошибка вроде ушла… все равно параметры не парсит ((
Артур Шевченко
04 сентября 2023, 21:24
0
if($key=='@attributes' && is_array($node)){
                foreach($node as $k => $v) {
                    $this->keys[1][] = '@attributes.'.$k;
                    $this->values[] = trim($v);
Дмитрий
04 сентября 2023, 21:18
0
Ошибка как раз показывает на фаил и в нем строка 1668 ошибка
//Атрибуты элемента
            if($key=='@attributes'){
                foreach($node as $k => $v) {
                    $this->keys[1][] = '@attributes.'.$k;
                    $this->values[] = trim($v);
Артур Шевченко
04 сентября 2023, 21:13
0
В описании ошибки должна быть ссылка на файл и сроку в нём.
Dan
Dan
04 сентября 2023, 17:02
0
Это же страница товара, а не карточка. И я ведь написал в комменте, почему вы его не прочитали? Нужно выводить не [[+article]] в шаблоне, ибо это плейсхолдер, а {$_modx->resource.article}
Артур Шевченко
04 сентября 2023, 16:58
0
Вообще мне кажется, что правильнее показывать уведомление об успешной отправке не в «тосте», а в самой форме.
Дизайнеры зачастую даже стили для отображения ошибок не рисуют, что уж говорить об успешной отправке, а у всплывашек из коробки приятный дизайн.

Кстати, компонент сессии использует?
Нет, не использует, но использует куки.

Есть ли стандартный шаблон для писем?
Есть три шаблона писем: для обычных форм и опросов, для подтверждения email, для сброса пароля.