2013-09-16 5 views
0

На моем веб-сайте довольно важно отображать названия продуктов в истории заказов (my_account/order_history), а в opencart указывается только идентификатор заказа. Я частично решил проблему, но я бы очень признателен за некоторые подсказки о том, как действовать. тема была когда-то был открыт в 2011 году в http://forum.opencart.com/viewtopic.php?f=20&t=46387&p=437991#p437991показать название продукта в истории заказа opencart

  1. Основная проблема заключается в том, что файл order_list.tpl оленья кожа имеет доступ к $product['name'] в контроллер order.php (где его определенный в function info() вместо function index()), только order_info. tpl есть. Я попытался скопировать части кода из функции info() в функцию index(), но у нее по-прежнему не было доступа. Любой намек на то, что я должен сделать? Нужно ли что-то менять в файле модели? или как изменить файл контроллера (order.php), чтобы позволить order_list.tpl иметь правильный доступ?
  2. Один из подходов, которые я попытался сделать, - это рендеринг содержимого order_info с помощью javascript в order_list.tpl в новом div (как описано в http://goo.gl/nMXhEu), однако, как новичок в js, я могу изменить его, чтобы открыть сразу после загрузки страницы (не при перемещении). Я пытался изменить MouseOver загрузить, beforeload несколько другой без какого-либо успеха ..

$("body").on("mouseover", function(e){ 
    $(".order-info").load(e.target.href, function(){ 
     $(e.target).addClass("unloaded"); 
    }); 
}); 

Любая помощь или намекнуть, как действовать будет очень ценится

ответ

0

благодарит за помогите cske, я очень ценю это. Однако я все еще не мог заставить его работать. Я также попытался внести небольшие корректировки без каких-либо успехов (но тогда я не разработчик js).

Итак, я решил попробовать еще раз изменить файл контроллера, чтобы $product['name'] был доступен для order_list.tpl (как описано в вопросе). Я был в состоянии сделать это, добавив

$products = $this->model_account_order->getOrderProducts($result['order_id']); 

и

foreach ($products as $product) { 
$this->data['products'][] = array('name'=> $product['name'],); 
} 

после

foreach ($results as $result) { 

, что делает возможным называть его в заказах массива, например

$this->data['orders'][] = array(
'product_name'  => $product['name'], 

It однако это рабочее решение: 1. он показывает только один продукт на порядка 2. кидает известить об

Notice: Undefined index: order_id 

Уведомление может быть отключен в области администратора.

Я в порядке с этим решением, но, очевидно, это не может быть правильным решением для других магазинов.

0
$(function() { 
    $(".order-info a").each(function() { 
    var $me = $(this);  
    $me.load($me.attr('href'),function(){ 
      $me.addClass("unloaded"); 
    };  
}); 
+0

Обновлен код, скорректирован на код html – cske

0

Я использовал решение, которое показывает только первый продукт для заказа, чтобы выяснить, как показать все продукты для заказа и их количества.

Вместо:

foreach ($products as $product) { 
    $this->data['products'][] = array('name'=> $product['name'],); 
} 

использования:

$this->data['products'] = array(); 
$prod = ""; 

foreach ($products as $product) { 
    $prod .= $product['quantity'] . " x " . $product['name'] .'<br>'; 
} 

и:

$this->data['orders'][] = array(

добавить:

'product_data' => $prod, 

, то в order_list.tpl вы можете получить список продуктов с количествами:

<?php echo $order['product_data']; ?> 
Смежные вопросы