Ответить Новая тема Новый опрос 
 Получить название продукта из заказа
vnovak
Новичок
Сообщений: 36
Регистрация: 10-07-2015


26-05-2016 21:27
Всем привет!

Столкнулся с таким вопросом - для аналитики со страницы подтверждения заказа нужно отправить название продукта, колличество и стоимость.. На страницу был передан массив продуктов и $product.product_quantity и $product.price работают ок.

А вот $product.name не хочет. Полагаю, что это из-за мультиязычного сайта и $product.name является массивом имен в разных языках.. так как тогда обратиться к нужному? Пробовал такие конструкции $product.name.1, $product.name.EN но никакая не сработала...

Подскажите, пожалуйста!!
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


26-05-2016 23:50
1. Откройте файл /controllers/front/OrderConfirmationController.php и после:
Код:
parent::initContent();
добавьте:
Код:
$this->context->smarty->assign('products', (new Cart($this->id_cart))->getProducts());

2. В шаблоне /themes/тема/order-confirmation.tpl добавьте подобный код:
Код:
{if isset($products) && $products}
    {foreach from=$products item=p}
        {$p.name}
    {/foreach}
{/if}
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
vnovak
Новичок
Сообщений: 36
Регистрация: 10-07-2015


27-05-2016 13:31
Алекс, добрый день! Спасибо за ответ. Массив продуктов из контроллера передается. Вопрос в том, что .name содержит в себе тоже массив названий на разных языках и при обращении .name выдается пустая строка. А вот как выбрать конкретное название из этого массива?
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


27-05-2016 14:17
Цитата:( vnovak @ 27-05-2016 14:31 Смотреть сообщение )
А вот как выбрать конкретное название из этого массива?

Если product - объект, используйте подобный код:
Код:
{$product->name.1}

Если product - массив, используйте подобный код:
Код:
{$product.name.1}


Если оба варианта не работают приложите код.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
vnovak
Новичок
Сообщений: 36
Регистрация: 10-07-2015


27-05-2016 14:49
Смотрите

это у нас в контроллере:
Код:
....
$order = new Order($this->id_order);
$produkty = $order->getProducts();
$this->context->smarty->assign(array(
'id_order' => $this->id_order,
'produkty' => $produkty,
'email' => $this->context->customer->email
));
......


это у нас сейчас в шаблоне:
Код:
.....
{literal}
_hrq.push(['addProduct', '{/literal}{$product.name.1}{literal}', '{/literal}{$product.product_quantity}{literal}', '{/literal}{$product.price}{literal}']);
{/literal}
.....


а это результат
Код:
_hrq.push(['addProduct','','1','4.917000']);


все есть кроме имени :confus:
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


27-05-2016 15:00
Цитата:( vnovak @ 27-05-2016 15:49 Смотреть сообщение )
все есть кроме имени :confus:

Код:
{$product.product_name}
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
vnovak
Новичок
Сообщений: 36
Регистрация: 10-07-2015


27-05-2016 15:33
Работает, спасибо! а почему в других шаблонах используется просто .name?
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


27-05-2016 16:12
Цитата:( vnovak @ 27-05-2016 16:33 Смотреть сообщение )
почему в других шаблонах используется просто .name?

После оформления заказа, данные по заказу вкл. название товаров записывается в отдельные таблицы order_detail, orders и тд.
Метод getProducts получает данные из таблиц order_detail
Название товара записано в поле product_name.
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
vnovak
Новичок
Сообщений: 36
Регистрация: 10-07-2015


27-05-2016 16:46
Понял, спасибо!
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос