Автор Тема: отображать изображения товара в деталях заказа?  (Прочитано 7147 раз)

31 Октябрь 2014, 12:30:53
Ответ #15
  • Ветеран
  • *****
  • Сообщений: 1090
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Ну и что, учиться и в 60 можно. Было бы желание. Если желания нет, то делайте проще. Зачем вам переопределять классы, методы. Просто меняйте оригинальные файлы и незаморачивайтесь.

Учиться то можно, только запомнить все это сложно, голова
с таким объемом информации справляется с трудом, если
до чего то допер, то через неделю уже и не вспомню как сделал.
Не боги горшки обжигают, не зачем им такой хренью заниматься.
31 Октябрь 2014, 17:20:23
Ответ #16
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В стандарном prestashop не определена переменная id_image ни в модуле MailAlerts, который отсылает письма клиенту и администратору при поступлении заказа, ни в классе PaymentModule, который также отсылает письма подтверждения заказа. Поэтому нужно определить эту переменную в этих файлах. Вы писали в другой теме
Тогда почему вот такая конструкция в файле /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  нет!
Значит вы уже добавили определение этой переменной в класс PaymentModule.php. Скопируйте свой код. который добавили, и добавьте его в класс /modules/mailalerts/mailalerts.php в функцию hookNewOrder.
31 Октябрь 2014, 20:57:46
Ответ #17
  • Ветеран
  • *****
  • Сообщений: 1090
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Не понимаю, что значит (добавить определение этой переменной)
просто вставил код в файл и он заработал ничего не определял.
Не боги горшки обжигают, не зачем им такой хренью заниматься.
31 Октябрь 2014, 22:16:06
Ответ #18
  • Ветеран
  • *****
  • Сообщений: 1285
  • Репутация: +13/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Вот точно такой код и добавьте в файл mailalerts.php в hookNewOrder.
31 Октябрь 2014, 22:53:09
Ответ #19
  • Ветеран
  • *****
  • Сообщений: 1090
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Естественно так и сделал, и не заработало, начал выдрючиваться,
получилось вывести id_product  вот таким образом

вместо переменной  '.$product['id_product'].'
стала работать         '.(int)($product['product_id']).'   /почему начала работать непонимаю

т.е. ссылка начала выводиться в браузере с указанием товара,
но картинка так и не появляется
Не боги горшки обжигают, не зачем им такой хренью заниматься.
01 Ноябрь 2014, 11:19:00
Ответ #20
  • Ветеран
  • *****
  • Сообщений: 16667
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Чем дальше, тем меньше ясности.
1. У вас картинка позазывается при отсылке писем через PaymentModule.php? Имено картинка, а не ссылка?
2. Вы меняли файл PaymentModule.php?
01 Ноябрь 2014, 12:07:46
Ответ #21
  • Ветеран
  • *****
  • Сообщений: 1090
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Показывается картинка , она же и ссылка, и как бы картинка показывалась если бы не менял PaymentModule.php и mailalerts.php (картинка не показывается, ссылка работает)
В файле PaymentModule.php  работает полностью вот такая конструкция, картинка показывается:

<td style="padding: 0.6em 0.4em; text-align: center;">'.$product['reference'].'<br><br><a href="http://сайт.ru/product.php?id_product='.$product['id_product'].'"><img src="http://сайт.ru/img/p/'.$product['id_image'].'-medium.jpg" alt="'.$product['reference'].'" height="80" width="54"></a></td>
<td style="padding: 0.6em 0.4em;"><strong><a href="http://сайт.ru/product.php?id_product='.$product['id_product'].'">'.$product['name'].'</a></strong></td>

В файле mailalerts.php вот такая конструкция:
<td style="padding:0.6em 0.4em; text-align:center;">'.$product['product_reference'].'<br><br><a href="http://сайт.ru/product.php?id_product='.(int)($product['product_id']).'"><img src="http://сайт.ru/img/p/'.$product['image_id'].'-medium.jpg" alt="'.$product['product_reference'].'" height="80" width="54"></a></td>
<td style="padding:0.6em 0.4em;"><strong><a href="http://сайт.ru/product.php?id_product='.(int)($product['product_id']).'">'.$product['product_name'].'</a></strong></td>
все работает только не показывает картинку. Т.Е. вот эта переменная '.$product['image_id'].' не выводит id картинки.
Вопрос: что надо написать вместо этой переменной.
Не боги горшки обжигают, не зачем им такой хренью заниматься.
07 Ноябрь 2014, 11:38:57
Ответ #22
  • Ветеран
  • *****
  • Сообщений: 1090
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Ответа нет, тоже не работает так понимаю.
Где бы найти ответ почему?
Не боги горшки обжигают, не зачем им такой хренью заниматься.
07 Ноябрь 2014, 12:44:07
Ответ #23
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
В файле mailalerts.php нет image_id, перед вашей конструкцией image_id нужно достать из бд. Примерно так
public function getImageId($id_product_attribute)
{
$sql = 'SELECT pai.id_image
         FROM `'._DB_PREFIX_.'product_attribute_image` pai
         WHERE pai.`id_product_attribute` = '.(int)$id_product_attribute;
return Db::getInstance()->getRow($sql);
}
Потом в функцию отсылки письма добавить$images_info = $product->getImages((int)$id_lang);
$image_id_attribute = $product->getImageId($id_product_attribute);
foreach ($images_info as $k => $image)
{
    if($image_id_attribute['id_image'] == $image['id_image'])
    {
$id_image = $image['id_image'];
break;
    }
}
$images = $link->getImageLink($product->link_rewrite,$id_image,"medium");
Потом в шаблоне (если для админа письмо) или в фомировании списка товаров (если для покупателя) добавить вывод
09 Ноябрь 2014, 20:14:55
Ответ #24
  • Ветеран
  • *****
  • Сообщений: 1090
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Вообще то в файле PaymentModule.php тоже нет ни image_id ни id_image, однако там работает и картинка показывается.
А файл mailalerts.php отсылает письмо только Админу.
Не боги горшки обжигают, не зачем им такой хренью заниматься.
10 Ноябрь 2014, 10:14:20
Ответ #25
  • Ветеран
  • *****
  • Сообщений: 1614
  • Репутация: +32/-1
  • Сообщество PrestaShop
    • Просмотр профиля
10 Ноябрь 2014, 10:41:39
Ответ #26
  • Ветеран
  • *****
  • Сообщений: 1807
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
А файл mailalerts.php отсылает письмо только Админу.
Не только, клиентам тоже.
10 Ноябрь 2014, 10:45:47
Ответ #27
  • Ветеран
  • *****
  • Сообщений: 1090
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Не боги горшки обжигают, не зачем им такой хренью заниматься.
10 Ноябрь 2014, 10:48:27
Ответ #28
  • Ветеран
  • *****
  • Сообщений: 1090
  • Репутация: +5/-1
  • Иногда заглядываю
    • Просмотр профиля
    • Помощь патентообладателям по продаже патентов.
Не только, клиентам тоже.

У меня только Админу отсылает сообщение о покупке.
Не боги горшки обжигают, не зачем им такой хренью заниматься.
10 Ноябрь 2014, 10:59:55
Ответ #29
  • Ветеран
  • *****
  • Сообщений: 1807
  • Репутация: +49/-1
  • Сообщество PrestaShop
    • Просмотр профиля
У меня только Админу отсылает сообщение о покупке.
Тогда у вас переделанный движок. В оригинальной престе этот модуль шлет предупреждения админку и клиенту.
Вам проще, если только отсылка через PaymentModule.php. Пишите, что работает в одном письме, значит точно токой-же код должен работать во всех письмах. Наверное, у вас синтаксическая ошибка в шаблонах писем, поэтому и не работает.