Автор Тема: Динамичная ссылка в письме.  (Прочитано 1200 раз)

16 Июль 2014, 20:10:31
  • Ветеран
  • *****
  • Сообщений: 991
  • Репутация: +5/-0
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
В письмах оповещающих о покупке, отправляемых с сайта покупателю и администратору хочу сделать название товара ссылкой чтобы можно было быстро перейти на сайт и посмотреть что купили.
Вид ссылки:
<a href="http://мойсайт.ru/product.php?id_product='.$product['id_product'].'">

В письме покупателю /mails/ru/order_conf.html    информация формируется в файле
 /classes/PaymentModule.php   и все нормально работает.

А в письме отправляемом администратору сайта /modules/mailalerts/mails/ru/new_order.html    информация формируется в файле   /modules/mailalerts/mailalerts.php  и вроде все то же самое, но  переменная  '.$product['id_product'].'   не выводит  ID  продукта,

Никто не подскажет что здесь должно быть прописано?
Не боги горшки обжигают, не зачем им такой хренью заниматься.
17 Июль 2014, 12:52:55
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 14085
  • Репутация: +14569/-2
  • Сообщество PrestaShop
    • Просмотр профиля
Если в цикле добавить $product['product_id'], то работает. Наверное, ошиблись где-то.
18 Июль 2014, 10:48:50
Ответ #2
  • Ветеран
  • *****
  • Сообщений: 991
  • Репутация: +5/-0
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Если в цикле добавить $product['product_id'], то работает. Наверное, ошиблись где-то.


Ошибиться не мог, фраза стандартная, может надо добавить класс для письма админу?
Не боги горшки обжигают, не зачем им такой хренью заниматься.
18 Июль 2014, 12:34:42
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 14085
  • Репутация: +14569/-2
  • Сообщество PrestaShop
    • Просмотр профиля
Там не нужен доп. класс, все уже определено и подключено
public function hookActionValidateOrder($params)
{
....
        $products = $params['order']->getProducts();
....
        foreach ($products as $key => $product)
{
....
                $items_table .=  '.... $product['product_id']
У меня показывает ид каждого продукта.
21 Июль 2014, 00:46:40
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 991
  • Репутация: +5/-0
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Не работает, попробуйте у себя в файле  /modules/mailalerts/mailalerts.php  заменить стандартную строку   приблизительно   стр.167     PS  1.4.5.x - 1.5.2.x
<td style="padding:0.6em 0.4em;"><strong>'.$product['product_name'].(isset($product['attributes_small']) ? ' '.$product['attributes_small'] : '').(!empty($customizationText) ? '<br />'.$customizationText : '').'</strong></td>


  <td style="padding:0.6em 0.4em;"><strong><a href="http://САЙТ.ru/product.php?id_product='.$product['id_product'].'">'.$product['product_name'].(isset($product['attributes_small']) ? ' '.$product['attributes_small'] : '').(!empty($customizationText) ? '<br />'.$customizationText : '').'</a></strong></td>

Активируйте модуль и сделайте какую ни будь покупку, можно с нулевой стоимостью, чтобы Вам как покупателю пришло письмо о покупке товара.
Не боги горшки обжигают, не зачем им такой хренью заниматься.
30 Октябрь 2014, 21:26:15
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 991
  • Репутация: +5/-0
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Получилось включить показ ID продукта была ссылка:

<a href="http://мойсайт.ru/product.php?id_product='.$product['id_product'].'">поменял на
<a href="http://мойсайт.ru/product.php?id_product='.(int)($product['product_id']).'">Заработала, но почему это произошло не понял.

Возникла другая ошибка, при выводе картинки вот таким кодом:
<img src="http://3d-b3.ru/img/p/'.(int)($product['image_id']).'-medium.jpg">картинка не появляется, как надо изменить эту переменную:
'.(int)($product['image_id']).'
Не боги горшки обжигают, не зачем им такой хренью заниматься.
31 Октябрь 2014, 00:02:19
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 21027
  • Репутация: +25282/-0
  • Prestashop - просто и эффективно
    • Просмотр профиля
Ненужно смешивать разные типы переменных.
(int) - это число.
'-medium.jpg' - это строка.

Кавычки использовать одинаковые для открытия / закрытия, двойные или одинарные. Если кавычки внутри кавычек, то одинаковые экранировать слешем.
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
31 Октябрь 2014, 00:53:22
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 991
  • Репутация: +5/-0
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Вполне возможно что Вы правы на счет кавычек. но
это не объясняет что надо сделать, чтобы переменная
 '.(int)($product['image_id']).'   вывела ID картинки.

В предыдущем примере переменная заработала при
изменении написания с   'id_product'  на  'product_id'
почему это произошло не понял.
Не боги горшки обжигают, не зачем им такой хренью заниматься.
31 Октябрь 2014, 11:39:24
Ответ #8
  • Ветеран
  • *****
  • Сообщений: 14085
  • Репутация: +14569/-2
  • Сообщество PrestaShop
    • Просмотр профиля
Потому что нужно указывать точное название переменной, а они разные в разных классах. Про кавычки читайие справку по php. Это основы программирования.
Также прочтите про типы переменных, PrestaMan правильно написал, нельзя смешивать разные типы переменных. Мало того, что это неправльно, но еще и лишгяя работа для скрипта. Вы получаете значение переменной, потом зачем-то приводите его к цифромому виду, а потом обратно конвертируете в строку. Вот эта функция (int) лишняя.
31 Октябрь 2014, 11:49:42
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 991
  • Репутация: +5/-0
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
С основами программирования как ни будь в другой раз,
так как я не программист то не пишу код, а пытаюсь
использовать готовые конструкции,
но переменная id_image  ни в какой конструкции ни
с (int) ни без (int) не хочет выводить изображение.
Хотя в другом файле с этим нет проблем.
Не боги горшки обжигают, не зачем им такой хренью заниматься.
31 Октябрь 2014, 11:53:34
Ответ #10
  • Ветеран
  • *****
  • Сообщений: 14085
  • Репутация: +14569/-2
  • Сообщество PrestaShop
    • Просмотр профиля
Переменная id_image содержит ИД (порядковый) номер изображения, под которым данные храняться в таблице. Естествено, что она не может выдать путь к файлу изображения.
31 Октябрь 2014, 12:23:02
Ответ #11
  • Ветеран
  • *****
  • Сообщений: 991
  • Репутация: +5/-0
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Переменная id_image содержит ИД (порядковый) номер изображения, под которым данные хранятся в таблице. Естественно, что она не может выдать путь к файлу изображения.

Тогда почему вот такая конструкция в файле /classes/PaymentModule.php
<img src="http://сайт.ru/img/p/'.$product['id_image'].'-medium.jpg" alt="'.$product['name'].'" height="80" width="80">без проблем работает, а в файле /modules/mailalerts/mailalerts.php  нет!
Не боги горшки обжигают, не зачем им такой хренью заниматься.