Последние темы


"shopkeeper3" вывести данные о заказе после оформления

  • Добрый вечер!
    Подскажите каким образом в "shopkeeper3" вывести данные о заказе после оформления.
    Находил где то плагин для этого, но сейчас не могу найти.
    Вывести нужно номер заказа и что купили.
    Помогите пожалуйста. Заранее благодарю.

  • <?php
    $modx->addPackage('shopkeeper3', $modx->getOption('core_path').'components/shopkeeper3/model/');
    $order = $modx->getObject('shk_order', [[!+shk.id]]);
    if( !$order ){
        return '';
    }
    $purchases = $modx->getCollection('shk_purchases', array('order_id' => $order->id));
    foreach ($purchases as $p) {
       echo "
            <li>Номер Вашего заказа — <b>№ [[!+shk.id]]</b></li>
            <li>Данные заказа — {$p->get('name')} 
            ";
    }
    

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

    Номер Вашего заказа — № 1
    Данные заказа — All about me. №6. My flooring
    Номер Вашего заказа — № 1
    Данные заказа — Freeze-frame

  • как вывести разобрался, правда костыльно
    при таком сниппете выводятся данные о заказе №1 , что поправить что бы работало как нужно.

  • Подскажите, как сделать так, что бы не дублировались строки, если в заказе более одной позиции

    Убрать строку с номером заказа из цикла.

    $order = $modx->getObject('shk_order', [[!+shk.id]]);
    

    И это работает? Удивительно...

    Надо создать сниппет в админке и передавать в него ID заказа через параметры.

    [[!my_snippet?order_id=`[[!+shk.id]]`]]
    

    Или брать из плейсхолдера, который уже доступен.

    //Это в коде сниппета
    $order_id = $modx->getPlaceholder('shk.id');
    
  • <?php
    $modx->addPackage('shopkeeper3', $modx->getOption('core_path').'components/shopkeeper3/model/');
    $order_id = $modx->getPlaceholder('shk.id');
    if( !$order ){
        return '';
    }
    $purchases = $modx->getCollection('shk_purchases', array('order_id' => $order->id));
    
    foreach ($purchases as $p) {
       echo "
            <li>Номер Вашего заказа — <b>№ [[!+shk.id]]</b></li>
            <li>Данные заказа — {$p->get('name')} 
            ";
    }
    

    так вообще не работает.

  • Так это всё у меня получилось реализовать, с мучениями правда. Вроде работает правильно.
    Теперь другой вопрос, как вывести дополнительные параметры.
    Вот в этом коде, куда что вставить? options ставил, но там массив выходит, вот его как то преобразовать нужно я так понимаю, но как???

    <?php
    $modx->addPackage('shopkeeper3', $modx->getOption('core_path').'components/shopkeeper3/model/');
    $order_id = $modx->getPlaceholder('shk.id');
    $order = $modx->getObject('shk_order', $order_id);
    if( !$order ){
        return '';
    }
    $purchases = $modx->getCollection('shk_purchases', array('order_id' => $order->id));
    echo "<li>Номер Вашего заказа — <b>№ $order_id</b></li>";
    echo "<li>Данные заказа — ";
    foreach ($purchases as $p) {
       echo ", <a href='[[~{$p->get('p_id')}]]'>{$p->get('name')}</a> ({$p->get('count')} шт.)";
    }
    
  • Вы пользовались поиском по форуму? По-моему где-то был готовый сниппет или какие-то куски.

  • @CSite Блин, можнож это в более цивильный вид перевести.
    Например в поле "Данные заказа" тег li открывается но не закрывается.
    По хорошему еще использовать return вместо echo и завернуть ответ в $modx->setPlaceholder('placeholder', $item);

  • Я вроде весь форум перерыл, кусками и собрал это)
    в php не силён.

 

Последние комментарии

  • D

    @Andchir
    Исходя из ошибки выше:

    в ваш плагин было бы неплохо добавить проверку на существование выбранного ресурса, что-бы исключить появление данной ошибки вы собираетесь дорабатывать плагин для работы с данными MIGX db, которые не имеют связи с ресурсами, а "живут" в отдельной таблице и редактируются через CMP?

    Читать далее
  • D

    @Andchir
    [23-Aug-2019 16:30:27 Europe/Moscow] PHP Fatal error: Uncaught Error: Call to a member function get() on null in /home/a0139615/domains/new.bistriki.com/public_html/core/components/catalogfill/model/catalogfill.class.php:459
    Stack trace:
    #0 /home/a0139615/domains/new.bistriki.com/public_html/core/components/catalogfill/processors/mgr/export.php(32): Catalogfill->csv_export('web')
    #1 /home/a0139615/domains/new.bistriki.com/public_html/core/model/modx/modprocessor.class.php(361): include('/home/a0139615/...')
    #2 /home/a0139615/domains/new.bistriki.com/public_html/core/model/modx/modprocessor.class.php(177): modDeprecatedProcessor->process()
    #3 /home/a0139615/domains/new.bistriki.com/public_html/core/model/modx/modx.class.php(1764): modProcessor->run()
    #4 /home/a0139615/domains/new.bistriki.com/public_html/core/model/modx/modconnectorresponse.class.php(144): modX->runProcessor('export', Array, Array)
    #5 /home/a0139615/domains/new.bistriki.com/public_html/core/model/modx/modconnectorrequest.class.php(86): modConnectorResponse->outputContent(Array)
    #6 /home/a0139615/ in /home/a0139615/domains/new.bistriki.com/public_html/core/components/catalogfill/model/catalogfill.class.php on line 459

    Читать далее
  • L

    @Dolce подскажите, как решили проблему? у меня тоже самое

    Читать далее
  • @knplabs :

    Удалил - ничего не изменилось. При очистке кэша висит прелоадер 16 секунд. Потом выдает ту же ошибку.

    Попробуйте удалить все папки в папке /var/cache/. У меня такого не было. Советую использовать http://devilbox.org/ вместо xampp. Там и MongoDB есть.

    Читать далее