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

02 Октябрь 2016, 14:29:30
  • Старожил
  • ****
  • Сообщений: 366
  • Репутация: +0/-0
  • Skype: away4people
    • Просмотр профиля
есть файл 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
  • Ветеран
  • *****
  • Сообщений: 1808
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
В контроллере cart инициализируйте переменную шаблона
$var_tpl = > $this->context->order->myvar;
02 Октябрь 2016, 14:46:55
Ответ #2
  • Старожил
  • ****
  • Сообщений: 366
  • Репутация: +0/-0
  • Skype: away4people
    • Просмотр профиля
не совсем понял, как это решит мою проблему. можно разжевать поподробнее?
спасибо
02 Октябрь 2016, 14:54:32
Ответ #3
  • Старожил
  • ****
  • Сообщений: 366
  • Репутация: +0/-0
  • Skype: away4people
    • Просмотр профиля
02 Октябрь 2016, 15:34:50
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Передача переменных между шаблона идет через контроллеры.
Вам нужно переопределить контроллер корзины, добавить новую переменную для шаблона и присвоить значение этой переменной.
У вас задача опставлена неправильно, так как передавать что-то из шаблона  payment.tpl в шаблон blockcart.tpl не имеет смысла.
Первый, это шаблон выбора метода оплаты. Никакой информации кроме выбора метода оплаты нет.
Всю информацию можно получить из объекта Cart.
02 Октябрь 2016, 16:10:30
Ответ #5
  • Старожил
  • ****
  • Сообщений: 366
  • Репутация: +0/-0
  • Skype: away4people
    • Просмотр профиля
окей, стало чутка яснее, но не до конца.
каким образом переопределить контроллер? нужно создать новый экшн?
как создать переменную для конкретного шаблона?
по возможности, псевдокодом хоть.
02 Октябрь 2016, 16:58:02
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Какую переменную хотите получить в корзине?
02 Октябрь 2016, 18:57:47
Ответ #7
  • Старожил
  • ****
  • Сообщений: 366
  • Репутация: +0/-0
  • Skype: away4people
    • Просмотр профиля
Все, которые есть в payment.tpl , что в первом посте...
02 Октябрь 2016, 19:15:41
Ответ #8
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 105673
  • Репутация: +39553/-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
  • Старожил
  • ****
  • Сообщений: 366
  • Репутация: +0/-0
  • Skype: away4people
    • Просмотр профиля
это всё хорошо, прочитал мельком, но не заметил, где там написано про айдишник корзины и т.п.?
переменные из первого поста.
или я опять чего-то не заметил?)
02 Октябрь 2016, 19:25:06
Ответ #10
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
Странный у вас шаблон payment.tpl. Для каждого модуля должкен быть отдельный файл tpl.
В теме тоже другой шаблон для вывода всех методов оплаты - order-payment.tpl.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
02 Октябрь 2016, 20:30:23
Ответ #11
  • Старожил
  • ****
  • Сообщений: 366
  • Репутация: +0/-0
  • Skype: away4people
    • Просмотр профиля
это какой-то подпольный модуль, не понятно как попавший к моей заказчку. короче - жесть.
короче работу этого модуля мне нунно перенести в другое место, т.е. именно поэтому мне нужны переменные модуля в другом шаблоне - для его корректной работы в другом месте.
03 Октябрь 2016, 10:30:30
Ответ #12
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Разделите модули, удалите из модуля bankwire код от payparts2. Для модуля payparts2 назначте новый шаблон и выволите его на любом этапе заказа с помощью хуков hookPayment, hookPaymentReturn.
03 Октябрь 2016, 16:07:55
Ответ #13
  • Старожил
  • ****
  • Сообщений: 366
  • Репутация: +0/-0
  • Skype: away4people
    • Просмотр профиля
Для модуля payparts2 назначте новый шаблон и выволите его на любом этапе заказа с помощью хуков hookPayment, hookPaymentReturn.
вот конкретно это и не знаю, как сделать. как назначить новый шаблон? как заюзать эти хуки - оин имеют графический интерфейс или посредством кода с ними работать?
03 Октябрь 2016, 16:22:01
Ответ #14
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Как создать модуль в Prestashop.
Создайте новый модуль, в нем определите новый шаблон. В руководсве программиста prestashop есть описание всех хуков.