Всего 125 683 комментария

Prihod
20 мая 2021, 22:28
0
в ++cultureKey хранится код языка
так что можно делать так
[[++cultureKey:is=`ru`:then=`img src=«logo_ru.svg»`]]
[[++cultureKey:is=`de`:then=`img src=«logo_de.svg»`]]
[[++cultureKey:is=`en`:then=`img src=«logo_en.svg»`]]
или еще проще
src="logo_[[++cultureKey]].svg"
Алексей
20 мая 2021, 19:44
0
ДА! СПАСИБО!!! Работает!
Антон Тарасов
20 мая 2021, 19:32
+2
Костылить — не гуд, нужно переопределять, иначе первое же обновление minishop все эти изменения затрёт! А issue создал: github.com/Ibochkarev/miniShop2/issues/597
Алексей
20 мая 2021, 19:31
0
Спасибо! сейчас попробую закостылить ))
Антон Тарасов
20 мая 2021, 19:27
1
+1
Когда-то «костылили» (что нехорошо конечно) так: в файле core/components/minishop2/model/minishop2/minishop2.class.php
1. правился метод sendEmail, добавлялся параметр $reply_to:

public function sendEmail($email, $subject, $body = '', $replyto = '')
    {
        $this->modx->getParser()->processElementTags('', $body, true, false, '[[', ']]', array(), 10);
        $this->modx->getParser()->processElementTags('', $body, true, true, '[[', ']]', array(), 10);

        /** @var modPHPMailer $mail */
        $mail = $this->modx->getService('mail', 'mail.modPHPMailer');
        $mail->setHTML(true);

        $mail->address('to', trim($email));
        if($replyto){
            $mail->address('reply-to', trim($replyto));
        }
        $mail->set(modMail::MAIL_SUBJECT, trim($subject));
        $mail->set(modMail::MAIL_BODY, $body);
        $mail->set(modMail::MAIL_FROM, $this->modx->getOption('emailsender'));
        $mail->set(modMail::MAIL_FROM_NAME, $this->modx->getOption('site_name'));
        if (!$mail->send()) {
            $this->modx->log(modX::LOG_LEVEL_ERROR,
                'An error occurred while trying to send the email: ' . $mail->mailer->ErrorInfo
            );
        }
        $mail->reset();
    }
2. правился метод changeOrderStatus, вот этот фрагмент с добавлением reply_to:

if ($status->get('email_manager')) {
                $subject = $this->pdoTools->getChunk('@INLINE ' . $status->get('subject_manager'), $pls);
                $tpl = '';
                if ($chunk = $this->modx->getObject('modChunk', array('id' => $status->get('body_manager')))) {
                    $tpl = $chunk->get('name');
                }
                $body = $this->modx->runSnippet('msGetOrder', array_merge($pls, array('tpl' => $tpl)));
                $emails = array_map('trim', explode(',',
                        $this->modx->getOption('ms2_email_manager', null, $this->modx->getOption('emailsender')))
                );
                if (!empty($subject)) {
                    
                    // здесь изменения!!
                    $profile = $this->modx->getObject('modUserProfile', array('internalKey' => $pls['user_id']));
                    $replyto = $profile->get('email');
                    
                    foreach ($emails as $email) {
                        if (preg_match('#.*?@.*#', $email)) {
                            $this->sendEmail($email, $subject, $body, $replyto);
                        }
                    }
                }
            }
P.S. Видимо пора уже это в issue оформить, сделаю.
Иван Бондаренко
20 мая 2021, 12:10
0
Это да. Код этот я привел больше для примера того, как получается ошибка.
Оказалось, проблема в том, что Minishop2 не поддерживает Mysql Ver 8.0.25… Только старые версии.
Наумов Алексей
20 мая 2021, 11:03
1
0
Рациональность в этом всем есть… да…
У меня не было такой задачи… я вообще в основном все сделал только для того, чтобы в админке этим было удобно управлять.

Советую посмотреть в сторону msSetInCart, может он даст нужный функционал?
alexbox
20 мая 2021, 10:53
0
Не хватает примеров вывода сниппета msProductKits
стандартных чанков tpl
alexbox
20 мая 2021, 10:49
0
Ещё идея для развития:

сейчас в корзину попадает товар с артикулом и названием набора — «Набор такой то», Арт. 0000
что если сделать настройку, чтобы на усмотрение Админа сайта выбирать, отправлять в корзину Набор, или «Товары в наборе по позиционно».

Это было бы удобно, чтобы при оплате в фискальный чек попадал не набор, а позиции из набора.
Но и на фронте тогда вывод нужно кастомизировать для такого вида товаров.

Некоторые товары требуют особенного учета, сертификации. Делать наборы и выставлять их в продажу через интернет-магазин — нагрузка на бухгалтерию и гемморой.

Если бы наборы товаров продавались как набор, но в фискальный чек попадали поштучно, это было бы супер удобно!

За такой компонент я бы и заплатил ))
alexbox
20 мая 2021, 10:31
0
В подборе позиций к комплекту было бы удобно поиск по артикулу
Максим
19 мая 2021, 21:59
0
Возможно так будет нагляднее, правда пример не через IF

[[*context_key:is=`ru`:then=`img src=«logo_ru.svg»`]]
[[*context_key:is=`de`:then=`img src=«logo_de.svg»`]]
[[*context_key:is=`en`:then=`img src=«logo_en.svg»`]]

Верно понимаю, что будет плейсхолдер-аналог "context_key", по которому я смогу также проверять?
Prihod
19 мая 2021, 17:38
0
Ну текущая версия языка хранится в плейсхолдере так что по идее ты так же само можешь использовать IF если я конечно правильно понял суть вопроса
Роман
19 мая 2021, 17:02
0
Я думаю может быть проблема в этом:
$q->sortby('product_id', 'ASC');
$q->sortby('rank', 'DESC');
Максим
19 мая 2021, 17:02
0
Раньше когда делал через контексты, если было нужно разные данные на разных языковых версиях, то я просто через IF проверял контекст, и выводил нужную информацию, как с подобным обстоит здесь?

Извиняюсь если вопрос не актуальный, но пробежался по всем комментам и вроде не увидел.
Иван Бондаренко
19 мая 2021, 14:56
0
Спасибо!!! Обидно однако, что нет поддержки актуальных версий MySql.
Alexey
19 мая 2021, 14:55
0
Крайне рекомендую убрать под кат листинги с кодом — чтобы не было простыни в списке
Lori
19 мая 2021, 14:53
0
уже сделал, спасибо) добавил в вопрос решение, хотя ваше смотрится красивее)