Автор Тема: Переход по ссылке из заказа на атрибут товара  (Прочитано 471 раз)

17 Январь 2018, 17:43:12
  • Пользователь
  • **
  • Сообщений: 70
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день! Товар на сайте имеет много атрибутов, у каждого атрибута своя цена и артикул. В заказе, который клиент получает на e-mail, видна цена и артикул атрибута, но при переходе по ссылке на этот атрибут мы переходим на атрибут по умолчанию. Как сделать так, чтобы из формы заказа можно было переходить не на атрибут по умолчанию, а на атрибут, который указан в заказе?
17 Январь 2018, 19:45:48
Ответ #1
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Ссылки у товара можно добавить в контроллере модуля оплаты или в классе PaymentModule.
Так для письма о заказа через стандарные модули оплаты добавлять нужно в product_var_tpl_list  в /classes/PaymentModule.php
18 Январь 2018, 10:47:34
Ответ #2
  • Пользователь
  • **
  • Сообщений: 70
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Добрый день. Зашел в /classes/PaymentModule.php, нашел $product_var_tpl_list = array();Что надо туда добавить, чтобы в заказе ссылки переходили на атрибуты товара?

Поправка: Интересует, чтобы ссылка на атрибут работала в письмах, которые приходят из модуля Mail alerts, в html коде письма от Mail alerts это место называется {items}

Нашел в mailalerts.php такое место '{items}' => $items_table,Как мне теперь изменить тут, чтобы ссылка в письме от mailalerts шла не на общий товар, а на его атрибут?

Нашел такой код в файле mailalerts.php:
$items_table = '';
foreach ($order_return_products as $key => $product)
{
$url = $context->link->getProductLink($product['product_id']);
$items_table .=
'<tr style="background-color:'.($key % 2 ? '#DDE2E6' : '#EBECEE').';">
<td style="padding:0.6em 0.4em;">'.$product['product_reference'].'</td>
<td style="padding:0.6em 0.4em;">
<strong><a href="'.$url.'">'.$product['product_name'].'</a>
</strong>
</td>
<td style="padding:0.6em 0.4em; text-align:center;">'.(int)$product['product_quantity'].'</td>
</tr>';
}
Видно, что тут идет ссылка на товар $url = $context->link->getProductLink($product['product_id']);Надо создать в этом php файле какое-то условие, что если заказ был на атрибут товара, то ссылка переходит на атрибут, а не на общий товар, я так понимаю?
18 Январь 2018, 11:49:24
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Для mailalerts в /modules/mailalerts/mailalerts.php  в определенеии списка товаров
foreach ($products as $key => $product)заменять нужно переменную url
$url = $context->link->getProductLink($product['product_id']);
18 Январь 2018, 11:53:46
Ответ #4
  • Ветеран
  • *****
  • Сообщений: 22125
  • Репутация: +25303/-1
  • Prestashop - просто и эффективно
    • Просмотр профиля
$link->getProductLink($product_id, $product_link_rewrite, null, null, null, null, 'тут id атрибута", false ,false, true)
Эксперт Prestashop - решения всех проблем, написание модулей, создание тем для интернет-магазинов под Prestashop.
Эксперт Magento - создам сайт на Magento, программирование кастомных модулей для Magento, кастомизация тем Magento.
Лучшие цены!!!
18 Январь 2018, 12:11:58
Ответ #5
  • Пользователь
  • **
  • Сообщений: 70
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
PrestaMan, то есть вот так? $link->getProductLink($product_id, $product_link_rewrite, null, null, null, null, 'id_attribute', false ,false, true);А куда это вставить?
У меня есть только такая строчка: $url = $context->link->getProductLink($product['product_id']);
То есть надо создавать отдельную переменную $link?

Если так? $url = $context->link->getProductLink($product_id, $product_link_rewrite, null, null, null, null, 'id_attribute', false ,false, true);
18 Январь 2018, 12:15:40
Ответ #6
  • Пользователь
  • **
  • Сообщений: 70
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Adik, у Вас есть идеи как можно изменить переменную $url? $url = $context->link->getProductLink($product['product_id']);
18 Январь 2018, 12:43:58
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Так уже написали как изменить, только значения поставить правильно нужно
$url = $context->link->getProductLink($product['product_id'], $product['link_rewrite'], null, null, null, null, $product['product_attribute_id'], false ,false, true);
18 Январь 2018, 13:26:51
Ответ #8
  • Пользователь
  • **
  • Сообщений: 70
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Adik, то есть этот код должен работать?
$url = $context->link->getProductLink($product['product_id'], $product['link_rewrite'], null, null, null, null, $product['product_attribute_id'], false ,false, true);
18 Январь 2018, 13:34:13
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Не проверял. Так все правильно, в getProductLink можно передавать id атрибута для получения ссылки на комбинации товара.
18 Январь 2018, 14:04:22
Ответ #10
  • Пользователь
  • **
  • Сообщений: 70
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
18 Январь 2018, 14:19:01
Ответ #11
  • Пользователь
  • **
  • Сообщений: 70
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
PrestaMan, спасибо за ответ, буду пробовать!
18 Январь 2018, 15:54:24
Ответ #12
  • Пользователь
  • **
  • Сообщений: 70
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Adik, PrestaMan, спасибо Вам за ответы, всё работает, проверил!