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


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

 

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

  • @Andchir Чета не додумался. Спасибо огромное, завелось.

    Читать далее
  • Потому что в этой функции нет объекта $modx. Можно попробовать добавить такую строчку вверху функции (внутри):

    global $modx;

    Читать далее
  • Добрый день.
    Задача: Есть таблица где записываются id данных из других созданных таблиц.
    Нужно в функции filter_export и filter_import объединить данные из разных таблиц.

    Как я пробывал решить свою задачку:

    function filter_export($value_arr,$doc_id=0) { //var_dump($output_arr); //exit; $output_arr = $value_arr; if(isset($output_arr['execution'])) { $ids = $output_arr['execution']; $result = $modx->query("SELECT * FROM LKp3KJ_my_execution WHERE id = $ids"); $row = $result->fetch(PDO::FETCH_ASSOC); $output_arr['execution'] = $row[title]; } /* if(isset($output_arr['price'])) $output_arr[1] = floatval($output_arr[1]) - 200; */ return $output_arr; }

    В ответ получаю 500 ошибку на странице импорт/экспорт.

    Читать далее
  • Спасибо за содействие! Приношу извинения за неудобства.

    Читать далее