"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 не силён.



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

Похоже, подключение к Форум | MODX Shopkeeper было разорвано, подождите, пока мы пытаемся восстановить соединение.