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

Баха Волков
07 августа 2023, 13:29
+1
Сорри, исправил, ночью писал, перепутал с самим php
Константин Ильин
07 августа 2023, 08:58
+1
В феноме только так ведь конкатенация и частенько лучше в скобку.
'optionFilters' => ('{"brand":"' ~ $_modx->resource.pagetitle ~ '"}')
Точки это в PHP

во втором случае тоже желательно в скобки)
Александр Туниеков
07 августа 2023, 04:50
+1
Ссылки на документацию слетели. Домен не прилинкован. Не хорошо. Компонент продаете так документацию не теряйте плиз.
Нашел документацию. docs.modx.pro/components/googlesheets/ поправте ссылки в описании компонента на модсторе
Баха Волков
06 августа 2023, 21:56
0
Изучайте документацию. В вашем случае, вы можете использовать конкатенацию:

'optionFilters' => '{"brand":"' ~ $_modx->resource.pagetitle ~ '"}'

// или

'optionFilters' => ['brand' => $_modx->resource.pagetitle] | toJSON,
Александр
06 августа 2023, 13:43
0
мне кстати сейчас в modx 3, поставленной сегодня выдает Array в ответ на {'metaTitle' | resource}
Prihod
05 августа 2023, 15:46
0
Значит у тебя версия php 8 или выше
Андрей
05 августа 2023, 15:41
0
Добрый день! Тоже не получается совершить импорт (терпит неудачу). Настройки все производил согласно видео инструкции. Вот логи:

Array
(
[type] => 1
[message] => Uncaught Error: Unknown named parameter $reader in /home/user/web/stairsworkshop.ru/public_html/core/components/msimportexport/handlers/readers/msiereader.class.php:122
Stack trace:
#0 /home/user/web/stairsworkshop.ru/public_html/core/components/msimportexport/handlers/readers/msiexlsxreader.class.php(63): MsIeReader->fireEvent()
#1 /home/user/web/stairsworkshop.ru/public_html/core/components/msimportexport/handlers/workers/msieimportworker.class.php(59): MsIeXLSXReader->read()
#2 /home/user/web/stairsworkshop.ru/public_html/core/components/msimportexport/handlers/workers/msieworker.class.php(119): MsIeImportWorker->process()
#3 /home/user/web/stairsworkshop.ru/public_html/core/components/msimportexport/model/msimportexport/msietask.class.php(212): MsIeWorker->run()
#4 /home/user/web/stairsworkshop.ru/public_html/core/components/msimportexport/handlers/managers/msietaskmanager.class.php(96): MsieTask->run()
#5 /home/user/web/stairsworkshop.ru/public_html/core/components/msimportexport/handlers/watchers/msiewatcher.class.php(284): MsIeTaskManager->run()
#6 /home/user/web/stairsworkshop.ru/public_html/core/components/msimportexport/handlers/watchers/msiewatcher.class.php(123): MsIeWatcher->process()
#7 /home/user/web/stairsworkshop.ru/public_html/core/components/msimportexport/scripts/watcher.php(18): MsIeWatcher->run()
#8 {main}
thrown
[file] => /home/user/web/stairsworkshop.ru/public_html/core/components/msimportexport/handlers/readers/msiereader.class.php
[line] => 122
)
Артур Шевченко
04 августа 2023, 20:56
0
Я же чёрным по белому написал
Обратите внимание ни какой код после отправки заказа выполнен не будет, т.к. мы попросили MiniShop2 вернуть нам json, он сделает всё, что должен, и принудительно завершит работу.
Есть надежда, что когда-нибудь @Николай Савин уберёт die() из обработчика заказа)))
Максим
04 августа 2023, 12:57
0
У меня купить в один клик в виде модалки, после субмита появляется просто сообщение в виде спасибо. А в случае заказа через корзину, да, грузится страница мол ваш заказ такой-то, спасибо.
Через профиль пользователя не выйдет, т.к. заказы оформляются от анонимов. Пробовал через кэш, но пока не выходит. Видимо надо кэшировать куда-то в файл и потом забирать от туда же.
Dan
Dan
04 августа 2023, 12:49
1
0
Попробуйте через leftJoin и where. Условие с class_key в msProducts не нужно.
[[!msProducts?
   &parents=`4`
   &leftJoin=`{
      "opt": {
         "class": "msProductOption",
         "on": "opt.key = 'volume2' AND opt.product_id = msProduct.id"
      }
   }`
   &where=`["opt.volume2 > 1000"]`
   &tpl=`emkosti`
   &limit=`0`
]]
Vladimir
04 августа 2023, 12:25
0
Вы не решили проблемму?
Николай Савин
04 августа 2023, 11:17
0
Конечно не восстанавливается, потому что метод submit редиректит на страницу спасибо или в платежную систему.
Если у вас страница спасибо, то я бы на ней вызвал сниппет восстановления корзины.
Если у вас редирект на платежку — то тут сложнее. Корзину лучше бы писать куда-то в профиль пользователя и после его возвращения восстанавливать ее. На сессии лучше не надеяться.
Максим
04 августа 2023, 10:18
0
Спасибо Николай за наводку. Не силен в бэке, по наитию сделал так. Заказ улетает, но корзина не восстанавливается с товарами из старой сессии. После отправки заказа корзина становится пустой:

$values = $hook->getValues();
$ms2 = $modx->getService('minishop2');
$ms2->initialize('web');

$count = (float)$values['count'] ?: 1;

// Step 1: Temporarily save the current cart to the session
$_SESSION['tmp_cart'] = $ms2->cart->get();

// Step 2: Clear the cart
$ms2->cart->clean();

// Step 3: Add the specific product to the cart with the desired quantity
$ms2->cart->add((int)$values['id'], $count, $values['options']);

$ms2->order->config['json_response'] = true; // Ask to return JSON

// Add fields to the order
$ms2->order->add('receiver', $values['receiver']);
$ms2->order->add('email', $values['email']);
$ms2->order->add('phone', $values['phone']);
$ms2->order->add('delivery', $values['delivery']);
$ms2->order->add('payment', $values['payment']);
$ms2->order->add('comment', $values['comment']);

// Step 4: Create a new order
$ms2->order->submit();

// Step 5: Add other cart items from the session back to the cart
if (isset($_SESSION['tmp_cart']) && is_array($_SESSION['tmp_cart']['products'])) {
    $ms2->cart->set($_SESSION['tmp_cart']);
}
Николай Савин
04 августа 2023, 10:16
0
Да хороший наглядный пример. Ты как всегда на высоте Семен. Спасибо.
Семён Кудрявцев
04 августа 2023, 10:14
+1
Можно позаимствовать реализацию у онлайнтрейда — www.onlinetrade.ru/basket.html,
очень удобно создаешь сколько угодно тебе корзин, называешь их как тебе надо, типа — присмотрел к др, подраки на нг, ит.д
Лежат себе и кушать не просят, актуализируются автоматически.
Если сделать грамотно, очень удобно будет. Корзины хранятся в бд, доступны менеджерам из админки, в любой момент могут их посмотреть, помочь клиенту дособрать, или оформить любую из корзин.
Николай Савин
04 августа 2023, 09:06
+1
Ты кстати уже не первый, кто об этом спрашиваешь. Я начинаю задумываться о реализации вариантов корзин.
Но пока на данный момент решение может быть только следующим (примерно):
1. Временно сохраняем текущую корзину в сессию через $ms2->cart->get();
2. Очищаем корзину
3. Добавляем в нее новый товар
4. Создаем заказ.
5. Если не пустая сессия с сохраненной корзиной закидываем ее опять в корзину через $ms2->cart->set($_SESSION['tmp_cart'])
Максим
04 августа 2023, 08:42
0
Артур, может есть вариант как при реализации сделать отправку заказа именно 1 товара? Суть: когда в корзине лежит уже 10 товаров и посетитель на другом товаре оформляет купить в один клик, то в админку прилетеает не один товар, а 10+1. Заранее спасибо!
Максим
04 августа 2023, 08:36
0
Артур, может есть вариант как при реализации сделать отправку заказа именно 1 товара? Суть: когда в корзине лежит уже 10 товаров и посетитель на другом товаре оформляет купить в один клик, то в админку прилетеает не один товар, а 10+1. Заранее спасибо!
Антон
04 августа 2023, 01:06
0
Спасибо за наводку.
Проблема оказалась в кодировке столбцов таблицы msop_modifications, была указана latin1_swedish_ci.
Замена на utf8mb4_unicode_ci исправила ситуацию.
Олег
03 августа 2023, 20:17
0
В сопоставлении таблиц MySQL utf8mb4_general_ci, в config.inc.php поменял utf8 на utf8mb4. Не помогает