Автор Тема: Помогите с передачей информации в шаблон  (Прочитано 1460 раз)

12 Ноябрь 2014, 10:09:50
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день!
Помогите решить проблему, пожалуйста.
Есть определенный .tpl - последняя страница в оформлении заказа, где отображаются банковские реквизиты магазина.
Так вот мне нужно туда передать наименование товаров из данного заказа.
Бьюсь второй день - бестолку!
Заранее спасибо!
12 Ноябрь 2014, 11:07:48
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 14066
  • Репутация: +14569/-2
  • Сообщество PrestaShop
    • Просмотр профиля
В контроллере /controllers/front/OrderConfirmationController.php добавить переменную для шаблона products (массив товаров) и в шаблон /themes/default-bootstrap/order-confirmation.tpl добавить таблицу с товарами.
12 Ноябрь 2014, 11:21:58
Ответ #2
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В контроллере /controllers/front/OrderConfirmationController.php добавить переменную для шаблона products (массив товаров) и в шаблон /themes/default-bootstrap/order-confirmation.tpl добавить таблицу с товарами.
Спасибо за ответ! Можно немного подробнее. Я так понимаю, что ковырять нужно функцию displayOrderConfirmation? А вместо order-confirmation.tp - подставить свой шаблон? Я новичек в престе) если можно - небольшой примерчик.
12 Ноябрь 2014, 12:16:55
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 1047
  • Репутация: +3/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Свой шаблон не обязательно, можно добавить в order-confirmation.tp цикл вывода товаров. Смотрите как в корзине выводит товары, код можно взять из шаблона корзины shopping-cart.tpl.
12 Ноябрь 2014, 12:35:10
Ответ #4
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Свой шаблон не обязательно, можно добавить в order-confirmation.tp цикл вывода товаров. Смотрите как в корзине выводит товары, код можно взять из шаблона корзины shopping-cart.tpl.
Спасибо! Уже ковыряю  этом направлении. Но мне нужно вывести именно в нужный мне шаблон payment-return.tpl. Туда нужно закидывать какие-то хуки? Любой помощи благодарен!
12 Ноябрь 2014, 12:37:26
Ответ #5
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Может можно через глобальную переменную {$cart} сработать?
12 Ноябрь 2014, 12:44:56
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 1047
  • Репутация: +3/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Если в payment-return.tpl то можно через $cart, только учесть, что после смены статуса заказа на зарегистированный, $cart сбросит всю информацию, корзина будет пустая. Получать данные нужно перед валидацией и передовать в контроллере /modules/bankwire/controllers/front/validation.php. Как в контроллере /modules/bankwire/controllers/front/payment.php
12 Ноябрь 2014, 12:52:54
Ответ #7
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Если в payment-return.tpl то можно через $cart, только учесть, что после смены статуса заказа на зарегистированный, $cart сбросит всю информацию, корзина будет пустая. Получать данные нужно перед валидацией и передовать в контроллере /modules/bankwire/controllers/front/validation.php. Как в контроллере /modules/bankwire/controllers/front/payment.php
)) Только что попробовал Вы правы - массив пустой :(
До этого пробовал как Вы говорите в контроллере /modules/bankwire/controllers/front/payment.php подключить шаблон payment-return.tpl
Вообще ничего не показало. Наверное не так передал?
12 Ноябрь 2014, 12:56:07
Ответ #8
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Уже просто окончательно запутался!
12 Ноябрь 2014, 13:14:14
Ответ #9
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 21024
  • Репутация: +25282/-0
  • Prestashop - просто и эффективно
    • Просмотр профиля
Если вам нужно менять payment-return.tpl, то в классе BankWire (bankwire.php) в методе hookPaymentReturn определите переменную шаблона
$params['objOrder']->....;название переменной товаров можете определить с помощью  p($variable) and d($variable)
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
12 Ноябрь 2014, 13:27:15
Ответ #10
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Если вам нужно менять payment-return.tpl, то в классе BankWire (bankwire.php) в методе hookPaymentReturn определите переменную шаблона
$params['objOrder']->....;название переменной товаров можете определить с помощью  p($variable) and d($variable)
Спасибо. Сейчас попробую.
12 Ноябрь 2014, 15:36:33
Ответ #11
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Если вам нужно менять payment-return.tpl, то в классе BankWire (bankwire.php) в методе hookPaymentReturn определите переменную шаблона
$params['objOrder']->....;название переменной товаров можете определить с помощью  p($variable) and d($variable)
Определил переменную $products
            'products' => $this->context->cart
в payment-return.tpl все равно передается пустой массив :(
подскажите как определить ее по-другому? p($variable) and d($variable) читал но не понял где их прописать, чтоб проверить.
12 Ноябрь 2014, 15:59:50
Ответ #12
  • Ветеран
  • *****
  • Сообщений: 1288
  • Репутация: +34/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Я думаю, что как-то так
'products' => $params['objOrder']->products;не уверен, что в objOrder входит products, поэтому нужно проверить
echo '<xmp style="text-align: left;">';
print_r($params['objOrder']);
echo '</xmp><br />';
return $params['objOrder'];
12 Ноябрь 2014, 16:18:46
Ответ #13
  • Новичок
  • *
  • Сообщений: 17
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Я думаю, что как-то так
'products' => $params['objOrder']->products;не уверен, что в objOrder входит products, поэтому нужно проверить
echo '<xmp style="text-align: left;">';
print_r($params['objOrder']);
echo '</xmp><br />';
return $params['objOrder'];
Спасибо за ответ! Но не работает.  'products' => $params['objOrder']->products; Забиваю в контроллер в шаблоне lелаю var_dump. Приходит пустой массив. Проблема в валидации - не знаю как ее обойти!))
12 Ноябрь 2014, 17:31:14
Ответ #14
  • Ветеран
  • *****
  • Сообщений: 105596
  • Репутация: +39548/-0
    • Просмотр профиля
    • Webstudio UwK
bankwire.php
public function hookPaymentReturn($params)
{
        .....
        'products' => $params['objOrder']->getCartProducts()
Cоздание интернет сайтов Webstudio UwK