Среда, 27 Май 2015 в 16:34

OpenCart. Вывод на странице Success.tpl данных о заказе и заказанных товарах на странице

Автор: admin

Screenshot_5
Шаблон common/success.tpl отвечает за страницу «Спасибо за покупку» после оформления заказа и оплаты. Для того,чтобы вывести больше информации о заказе необходимо добавить некоторые изменения. В контроллер отвечающий за success.tpl (checkout/success.tpl или /payment/payaftercheck.php) после

public function success() {
добавим данный код:

 $this->data['order'] = array();
$this->data['products'] = array();

              
if (isset($this->session->data['order_id'])) {
    $order_id = $this->session->data['order_id'];

    $this->load->model('account/order');

    $order_info = $this->model_account_order->getOrder($order_id);

    if ($order_info) {
        $tax = 0;
        $shipping = 0;

        $order_totals = $this->model_account_order->getOrderTotals($order_id);

        foreach ($order_totals as $order_total) {
            if ($order_total['code'] == 'tax') {
                $tax += $order_total['value'];
            } elseif ($order_total['code'] == 'shipping') {
                $shipping += $order_total['value'];
            }
        }

              
//запрос данных о заказе
        $this->data['order'] = $order_info;
        $this->data['order']['store_name'] = $this->config->get('config_name');
        $this->data['order']['order_total'] = $this->currency->format($order_info['total'], $order_info['currency_code'], $order_info['currency_value'], false);
        $this->data['order']['order_tax'] = $this->currency->format($tax, $order_info['currency_code'], $order_info['currency_value'], false);
        $this->data['order']['order_shipping'] = $this->currency->format($shipping, $order_info['currency_code'], $order_info['currency_value'], false);
              
// запрос данных о товарах в заказе
        $products = $this->model_account_order->getOrderProducts($order_id);

        $this->load->model('catalog/product');
        $this->load->model('catalog/category');

        foreach ($products as $product) {
            $sku = '';

            $product_info = $this->model_catalog_product->getProduct($product['product_id']);

            if ($product_info) {
                $sku = $product_info['sku'];
            }

            $categories = array();

            $product_categories = $this->model_catalog_product->getCategories($product['product_id']);

            if ($product_categories) {
                foreach ($product_categories as $product_category) {
                    $category_data = $this->model_catalog_category->getCategory($product_category['category_id']);

                    if ($category_data) {
                        $categories[] = $category_data['name'];
                    }
                }
            }
              
$this->data['products'][] = array(
                'order_id' => $order_id,
                'product_id' => $product['product_id'],
                'sku' => $sku,
                'name' => $product['name'],
                'category' => implode(',', $categories),
                'quantity' => $product['quantity'],
                'price' => $this->currency->format($product['price'] + ($this->config->get('config_tax') ? $product['tax'] : 0), $order_info['currency_code'], $order_info['currency_value'], false)
            );
        }
    }
}

Для вывода на страницу «Операция выполнена успешно», например, данных о заказе, достаточно в шаблон success.tpl добавить нужные параметры:

 <?php echo $order['order_id']; ?> // номер заказа
<?php echo $order['order_total']; ?> // сумма заказ
Для вывода информации о заказанных товаров достаточно добавить такие параметры:

<?php foreach ($products as $product) { ?>
      <a href="<?php echo $product['href']; ?>"><?php echo $product['name']; ?></a> //Название товара и ссылка на него
        <?php echo $product['quantity']; ?> //количество товаров
        <?php echo $product['price']; ?> //цена товара
      <?php } ?>

Аналогично можно вывести и другие параметры заказа

Ваш отзыв

Цитаты великих

"Нобелевская премия — это пропуск в вечность, порой выданный «не по адресу»."

Януш Вишневский

Я в Контакте