Автор Тема: Передача переменных по шаблонам  (Прочитано 176 раз)

02 Октября 2016, 14:29:30
  • Фрилансер
  • *
  • Сообщений: 170
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
есть файл payment.tpl , содержащий переменный $id и т.п.; содержимое:
<div class="row">
    <div class="col-xs-12">
        <p class="payment_module">
            <a class="bankwire" href="{$link->getModuleLink('payparts2', 'redirect', ['id_cart'=>$id], true)}" title="{l s='Pay with PayParts' mod='payparts2'}" title="Оплата чеком">
                {l s='Pay with Pay2Pay' mod='payparts2'} <span>(оплата на сайте)</span>
            </a>
        </p>
    </div>
</div>


<p class="payment_module">
    <a {*class="bankwire" *} href="{$link->getModuleLink('payparts2', 'redirect', ['id_cart' => {$id}])}" title="{l s='Pay PayParts' mod='payparts2'}">
        <img src="{$this_path}logo.png" width="100px" />{l s='Pay PayParts' mod='payparts2'} <span> {$id} lal   (онлайн рассрочка от Приватбанка)</span>
    </a>
</p>

и есть файл blockcart.tpl , в который нужно передать эти же переменные, как быть?
02 Октября 2016, 14:35:31
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 1195
  • Репутация: +28/-1
  • Сообщество PrestaShop
    • Просмотр профиля
В контроллере cart инициализируйте переменную шаблона
$var_tpl = > $this->context->order->myvar;
02 Октября 2016, 14:46:55
Ответ #2
  • Фрилансер
  • *
  • Сообщений: 170
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
не совсем понял, как это решит мою проблему. можно разжевать поподробнее?
спасибо
02 Октября 2016, 14:54:32
Ответ #3
  • Фрилансер
  • *
  • Сообщений: 170
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
02 Октября 2016, 15:34:50
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 13147
  • Репутация: +14553/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Передача переменных между шаблона идет через контроллеры.
Вам нужно переопределить контроллер корзины, добавить новую переменную для шаблона и присвоить значение этой переменной.
У вас задача опставлена неправильно, так как передавать что-то из шаблона  payment.tpl в шаблон blockcart.tpl не имеет смысла.
Первый, это шаблон выбора метода оплаты. Никакой информации кроме выбора метода оплаты нет.
Всю информацию можно получить из объекта Cart.
02 Октября 2016, 16:10:30
Ответ #5
  • Фрилансер
  • *
  • Сообщений: 170
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
окей, стало чутка яснее, но не до конца.
каким образом переопределить контроллер? нужно создать новый экшн?
как создать переменную для конкретного шаблона?
по возможности, псевдокодом хоть.
02 Октября 2016, 16:58:02
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 13147
  • Репутация: +14553/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Какую переменную хотите получить в корзине?
02 Октября 2016, 18:57:47
Ответ #7
  • Фрилансер
  • *
  • Сообщений: 170
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Все, которые есть в payment.tpl , что в первом посте...
02 Октября 2016, 19:15:41
Ответ #8
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 105576
  • Репутация: +39545/-0
    • Просмотр профиля
    • Webstudio UwK
Используйте Context Object - PrestaShop Developer tutorials Using the Context Object
$context->cart;Потом доступны все свойства и методы класса /classes/Cart.php
Cоздание интернет сайтов Webstudio UwK
02 Октября 2016, 19:23:41
Ответ #9
  • Фрилансер
  • *
  • Сообщений: 170
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
это всё хорошо, прочитал мельком, но не заметил, где там написано про айдишник корзины и т.п.?
переменные из первого поста.
или я опять чего-то не заметил?)
02 Октября 2016, 19:25:06
Ответ #10
  • Ветеран
  • *****
  • Сообщений: 20838
  • Репутация: +25276/-0
  • Prestashop - просто и эффективно
    • Просмотр профиля
Странный у вас шаблон payment.tpl. Для каждого модуля должкен быть отдельный файл tpl.
В теме тоже другой шаблон для вывода всех методов оплаты - order-payment.tpl.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
02 Октября 2016, 20:30:23
Ответ #11
  • Фрилансер
  • *
  • Сообщений: 170
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
это какой-то подпольный модуль, не понятно как попавший к моей заказчку. короче - жесть.
короче работу этого модуля мне нунно перенести в другое место, т.е. именно поэтому мне нужны переменные модуля в другом шаблоне - для его корректной работы в другом месте.
03 Октября 2016, 10:30:30
Ответ #12
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 85953
  • Репутация: +25399/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Разделите модули, удалите из модуля bankwire код от payparts2. Для модуля payparts2 назначте новый шаблон и выволите его на любом этапе заказа с помощью хуков hookPayment, hookPaymentReturn.
03 Октября 2016, 16:07:55
Ответ #13
  • Фрилансер
  • *
  • Сообщений: 170
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Для модуля payparts2 назначте новый шаблон и выволите его на любом этапе заказа с помощью хуков hookPayment, hookPaymentReturn.
вот конкретно это и не знаю, как сделать. как назначить новый шаблон? как заюзать эти хуки - оин имеют графический интерфейс или посредством кода с ними работать?
03 Октября 2016, 16:22:01
Ответ #14
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 85953
  • Репутация: +25399/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Как создать модуль в Prestashop.
Создайте новый модуль, в нем определите новый шаблон. В руководсве программиста prestashop есть описание всех хуков.