Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Решено] адрес клиента в order list


Recommended Posts

ПЛЗ я хочу вставить адрес клиента в order list

 

Делаю так

 

<td class="right"><?php echo $order['order_id']; ?></td>
              
              <td class="left"><?php echo $order['shipping_address_1'];  ?></td>
              
              <td class="left"><?php echo $order['customer']; ?></td>

 

В админ панели появляется Notice: Undefined index: shipping_address_1 in C:\xampp\htdocs\net\admin\view\template\sale\order_list.tpl on line 119

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

Надіслати
Поділитися на інших сайтах


Первым делом открывай

/admin/controller/sale/order.php

Там надо добавить пару строк:

if (strtotime($result['date_added']) > strtotime('-' . (int)$this->config->get('config_order_edit') . ' day')) {
	$action[] = array(
		'text' => $this->language->get('text_edit'),
	        'href' => $this->url->link('sale/order/update', 'token=' . $this->session->data['token'] . '&order_id=' . $result['order_id'] . $url, 'SSL')
		);
	}
// Вставляем эту строку:
	$my_order_info = $this->model_sale_order->getOrder($result['order_id']);
			
	$this->data['orders'][] = array(
		'order_id'      => $result['order_id'],
		'shipping_address' => $my_order_info['shipping_address_1'], // Добавляем этот параметр
		'customer'      => $result['customer'],
		'status'        => $result['status'],
		'total'         => $this->currency->format($result['total'], $result['currency_code'], $result['currency_value']),
		'date_added'    => date($this->language->get('date_format_short'), strtotime($result['date_added'])),
		'date_modified' => date($this->language->get('date_format_short'), strtotime($result['date_modified'])),
		'selected'      => isset($this->request->post['selected']) && in_array($result['order_id'], $this->request->post['selected']),
		'action'        => $action
		);
	}

Далее лезем в шаблон:

/admin/view/template/sale/order_list.tpl

Там добавляем следующие строки:

<td class="right"><?php if ($sort == 'o.order_id') { ?>
       <a href="<?php echo $sort_order; ?>" class="<?php echo strtolower($order); ?>"><?php echo $column_order_id; ?></a>
     <?php } else { ?>
       <a href="<?php echo $sort_order; ?>"><?php echo $column_order_id; ?></a>
     <?php } ?></td>

<!--//////////////////// Вставляем эту строку (1-е вмешательство):-->				
<td class="left"><?php echo 'ADDRESS'; ?></td>
<!--////////////////////-->				

<td class="left"><?php if ($sort == 'customer') { ?>
    <a href="<?php echo $sort_customer; ?>" class="<?php echo strtolower($order); ?>"><?php echo $column_customer; ?></a>
  <?php } else { ?>
    <a href="<?php echo $sort_customer; ?>"><?php echo $column_customer; ?></a>
  <?php } ?></td>
<tr class="filter">
    <td></td>
    <td align="right"><input type="text" name="filter_order_id" value="<?php echo $filter_order_id; ?>" size="4" style="text-align: right;" /></td>

<!--//////////////////// Вставляем строку ниже (2-е вмешательство):-->              
    <td />
<!--////////////////////-->

    <td><input type="text" name="filter_customer" value="<?php echo $filter_customer; ?>" /></td>
<td class="right"><?php echo $order['order_id']; ?></td>

<!--//////////////////// Последняя строка, которую добавляем (3-е вмешательство):-->
   <td><?php echo $order['shipping_address']; ?></td>
<!--////////////////////-->

<td class="left"><?php echo $order['customer']; ?></td>
  • +1 3
Надіслати
Поділитися на інших сайтах


ООО спасибо огромное приогромное реально, я понимаю что тут не уроки по пхп но если можно поясните плз я как раз сейчас учусь но вот это не понимаю ->

 

=> и значение этого

 

и поясните пожалуйста что помещенно в переменную $my_order_info.

 

а какая переменная отвечает за товар я таким же способом смогу ее вытащить??

 

Спасибо Вам еще раз!

Надіслати
Поділитися на інших сайтах


незачто)

 

-> - это из области ООП, я понятия не имею как объяснить что она делает человеческим языком, но суть вот в чем: этой строкой мы создаем переменную $my_order_info, в которую помещается вся инфа о заказе. Т.е. ВООБЩЕ ВСЯ. а этой фигней ("->") мы вызываем нужную функцию (точнее указываем путь через класс).

 

=> - этим имени в списке присваивается значение. т.е. в обычном массиве значения идут подряд и обращаться к ним надо по индексам (my_array[0] например), а в именованном массиве обращение происходит по именам( my_named_array['first_index'] например).

 

соответственно, когда объявляем обычный массив достаточно просто перечислить значения, а интерпретатор автоматически присвоит их индексам от нуля и далее, а для именованного массива необходимо указывать названия (имена) индексов

 

simple_array[] = array ( abc, def, ghi, jkl);

named_array[] = array (

     'first_index'       => 'abc',

     'second_index' => 'def'

   );

 

как-то так...

 

а, вспомнил, эти массивы еще называют ассоциативными, а в PERL'e - Хэшами)

Змінено користувачем lakbor
  • +1 2
Надіслати
Поділитися на інших сайтах


этой строкой мы создаем переменную $my_order_info, в которую помещается вся инфа о заказе -- это не типо того же

$address = mysql_query ("SELECT email, order_id FROM order WHERE page='index'", $bd);
$myrow = mysql_fetch_array($address);

 

вся инфа о заказе. Т.е. ВООБЩЕ ВСЯ. -- тоесть и товар в корзине?

это в базе данных model_sale_order ??

 

а $this ??

 

сорри за тупость))

 

а можно это как то более длинно расписать но более понятно для чайника если не сложно

Надіслати
Поділитися на інших сайтах


1) что запихивается в $my_order_info смотри в файле orders.php начиная примерно с 1540-й строки. там такая же переменная фигурирует как $order_info. Что в ней, соответственно, видно из того, что из нее извлекают ($order_info['то_что_извлекается'])

 

2) Да, то же самое (я не смотрел, что именно ты извлекаешь этим запросом, но СУТЬ такая же), ТОЛЬКО: твой прямой запрос к БД нарушает:

          а) принципы ООП,

          б) безопасность,

          в) тебе придется (ввиду нарушения пункта "а" еще писать код для подключения к БД с вводом логина и пароля (именно поэтому нарушается пункт "б")

 

3) вся инфа ОБ УЖЕ СДЕЛАННОМ заказе. соответственно никакой корзины нет и быть не может, товар из корзины перекочевал в статус товара в заказе.

 

4) в какой таблице базы - не знаю, поищи сам...

 

5) $this - ООПшная отсылка к методу, доступному в данном скрипте

          т.е. $this->model_sale_order->getOrder($result['order_id']) вызывает функцию getOrder(),

          $this->data['orders'][] = array( создает массив $orders, который будет доступен из скрипта (шаблона)

 

     http://php.net/manual/en/language.oop5.basic.php

  • +1 3
Надіслати
Поділитися на інших сайтах


Вы бы лакбору хоть один плюсик поставили, если вам помогли его советы ;)

ДА конечно замылило мозг извините не увидел!)) просто рванул выводить коменты и товар таким же способом но чую опять долго по ночам сидеть придется)))

Надіслати
Поділитися на інших сайтах


Вот по анологии разве не получится?

 

если в $my_order_info залетает все о заказе то поидее вот так 'comment_array'=>$my_order_info['comment'],

и $comment_array потом выводим в ордер лист?? тупня я да)))

Надіслати
Поділитися на інших сайтах


Вы бы лакбору хоть один плюсик поставили, если вам помогли его советы ;)

спасибо=)

 

 

Вот по анологии разве не получится?

 

если в $my_order_info залетает все о заказе то поидее вот так 'comment_array'=>$my_order_info['comment'],

и $comment_array потом выводим в ордер лист?? тупня я да)))

да, по идее верно

 

 

Ой  вчера и правда видно уже кипел, комменты вывел все норм их просто е было))))

ааха то подскажет какая переменная товар ордера??

 

подскажите как проще отследить переменную и в каком скрипте ведь браузер пхп не отображает??

 о какой именно переменной идет речь? поточнее опиши пожалуйста)

  • +1 2
Надіслати
Поділитися на інших сайтах


Вот по анологии разве не получится?

 

если в $my_order_info залетает все о заказе то поидее вот так 'comment_array'=>$my_order_info['comment'],

и $comment_array потом выводим в ордер лист?? тупня я да)))

 

только не

$comment_array

 

, а

$order['comment_array']
  • +1 1
Надіслати
Поділитися на інших сайтах


Вот по анологии разве не получится?

 

если в $my_order_info залетает все о заказе то поидее вот так 'comment_array'=>$my_order_info['comment'],

и $comment_array потом выводим в ордер лист?? тупня я да)))

 

только не

$comment_array

 

, а

$order['comment_array']

 

Вы бы лакбору хоть один плюсик поставили, если вам помогли его советы ;)

спасибо=)

 

 

>Вот по анологии разве не получится?

 

если в $my_order_info залетает все о заказе то поидее вот так 'comment_array'=>$my_order_info['comment'],

и $comment_array потом выводим в ордер лист?? тупня я да)))

да, по идее верно

 

 

Ой  вчера и правда видно уже кипел, комменты вывел все норм их просто е было))))

ааха то подскажет какая переменная товар ордера??

 

подскажите как проще отследить переменную и в каком скрипте ведь браузер пхп не отображает??

 о какой именно переменной идет речь? поточнее опиши пожалуйста)

 

вот в БД есть таблица order_product в ней поле name, хочу в order_list еще сразу вывести что оформил покупатель но тут для меня еще сложнее таблица другая не includ же не чего нет

Надіслати
Поділитися на інших сайтах


Итак, приступим!

 

Перед той строкой, которую недавно впаивали (в order.php)

$my_order_info = $this->model_sale_order->getOrder($result['order_id']);

Вставляй вот ЭТО:

////////////////////////////////////////////////////////////

$my_product = array();
$my_products = $this->model_sale_order->getOrderProducts($result['order_id']);

     foreach ($my_products as $product) {
     $my_product[] = array(
	'order_product_id' => $product['order_product_id'],
	'product_id'       => $product['product_id'],
	'name'     	   => $product['name'],
	'model'   	   => $product['model'],
	'quantity'	   => $product['quantity'],
	);
     }
	
////////////////////////////////////////////////////////////

Далее, переделай массив, который редактировали недавно (чуть ниже):

 

$this->data['orders'][] = array(
   'order_id'      => $result['order_id'],
   'shipping_address' => $my_order_info['shipping_address_1'],
   'products_ordered' => $my_product, // На этот раз добавляем вот этот параметр
   'customer'      => $result['customer'],
   'status'        => $result['status'],
   'total'         => $this->currency->format($result['total'], $result['currency_code'], $result['currency_value']),
   'date_added'    => date($this->language->get('date_format_short'), strtotime($result['date_added'])),
   'date_modified' => date($this->language->get('date_format_short'), strtotime($result['date_modified'])),
   'selected'      => isset($this->request->post['selected']) && in_array($result['order_id'], $this->request->post['selected']),
   'action'        => $action
);

 

Теперь переходим к order_list.tpl:

 

там дописывай старые вмешательства наши, чтоб было как тут:

<!--////////////////////-->				
     <td class="left"><?php echo 'ADDRESS'; ?></td>
     <td class="left"><?php echo 'PRODUCTS'; ?></td>
<!--////////////////////-->	
<!--////////////////////-->              
     <td />
     <td />
<!--////////////////////-->
<!--////////////////////-->
     <td><?php echo $order['shipping_address']; ?></td>
     <td>
          <?php $i=0;
	        $my_prods = $order['products_ordered'];
		while ($i < sizeof($my_prods)) { 
		     echo '>> '. $my_prods[$i]['quantity'] . ' x ' . $my_prods[$i]['name'] . '<br>';
		     $i++;
		}?>
     </td>
<!--////////////////////-->

Соответственно отображение можешь менять по своему желанию, я поставил так ( ">> кол-во_товара х наименование_товара"):

>> 1 х Товар_1

>> 5 x Товар_2

 

Да, и массивчик с запасом, можно посмотреть модель товара, например.

  • +1 4
Надіслати
Поділитися на інших сайтах


Вы монстр спасибо приогромное плюс прислал уже!! ща попробую)))

 

Если можно опять поясните не хочу тупо копировать есть желание хоть чего то выучить основы учил на C# думал что пхп будет попроще
$my_product = array(); это создаем массив да? но скобки пустые

$my_products = $this->model_sale_order->getOrderProducts($result['order_id']); в $my_products -> вызывает функцию model_sale_order от туда getOrderProducts ?? ($result['order_id']);

 

foreach ($my_products as $product) ищим $my_products в $product и если находим то выполняем условие да?

 

{
$my_product[] = array(
    'order_product_id' => $product['order_product_id'],
    'product_id' => $product['product_id'],
    'name'      => $product['name'],
    'model'      => $product['model'],
    'quantity'     => $product['quantity'],
    );
}

 

 

в 'products_ordered' => заносим массив $my_product,

 

<?php $i=0;
     $my_prods = $order['products_ordered'];
        while ($i < sizeof($my_prods))  цикл если i < ??

{
         echo '>> '. $my_prods[$i]['quantity'] . ' x ' . $my_prods[$i]['name'] . '<br>'; ????
         $i++; инкримент вроде +1
        }?>

Надіслати
Поділитися на інших сайтах


пока попробуй как работает, а объясню когда копирование категорий доделаю))

 

да, и не забывай делать бэкапы ВСЕГО, что меняешь))

  • +1 1
Надіслати
Поділитися на інших сайтах


Итак, приступим!

 

Перед той строкой, которую недавно впаивали (в order.php)

$my_order_info = $this->model_sale_order->getOrder($result['order_id']);

Вставляй вот ЭТО:

////////////////////////////////////////////////////////////

$my_product = array();
$my_products = $this->model_sale_order->getOrderProducts($result['order_id']);

     foreach ($my_products as $product) {
     $my_product[] = array(
	'order_product_id' => $product['order_product_id'],
	'product_id'       => $product['product_id'],
	'name'     	   => $product['name'],
	'model'   	   => $product['model'],
	'quantity'	   => $product['quantity'],
	);
     }
	
////////////////////////////////////////////////////////////

Далее, переделай массив, который редактировали недавно (чуть ниже):

 

$this->data['orders'][] = array(
   'order_id'      => $result['order_id'],
   'shipping_address' => $my_order_info['shipping_address_1'],
   'products_ordered' => $my_product, // На этот раз добавляем вот этот параметр
   'customer'      => $result['customer'],
   'status'        => $result['status'],
   'total'         => $this->currency->format($result['total'], $result['currency_code'], $result['currency_value']),
   'date_added'    => date($this->language->get('date_format_short'), strtotime($result['date_added'])),
   'date_modified' => date($this->language->get('date_format_short'), strtotime($result['date_modified'])),
   'selected'      => isset($this->request->post['selected']) && in_array($result['order_id'], $this->request->post['selected']),
   'action'        => $action
);

 

Теперь переходим к order_list.tpl:

 

там дописывай старые вмешательства наши, чтоб было как тут:

<!--////////////////////-->				
     <td class="left"><?php echo 'ADDRESS'; ?></td>
     <td class="left"><?php echo 'PRODUCTS'; ?></td>
<!--////////////////////-->	
<!--////////////////////-->              
     <td />
     <td />
<!--////////////////////-->
<!--////////////////////-->
     <td><?php echo $order['shipping_address']; ?></td>
     <td>
          <?php $i=0;
	        $my_prods = $order['products_ordered'];
		while ($i < sizeof($my_prods)) { 
		     echo '>> '. $my_prods[$i]['quantity'] . ' x ' . $my_prods[$i]['name'] . '<br>';
		     $i++;
		}?>
     </td>
<!--////////////////////-->

Соответственно отображение можешь менять по своему желанию, я поставил так ( ">> кол-во_товара х наименование_товара"):

>> 1 х Товар_1

>> 5 x Товар_2

 

Да, и массивчик с запасом, можно посмотреть модель товара, например.

 

 

пока попробуй как работает, а объясню когда копирование категорий доделаю))

 

да, и не забывай делать бэкапы ВСЕГО, что меняешь))

Да я вставил работает отлично, я все отрабатываю на локалке ))

Надіслати
Поділитися на інших сайтах


Если можно опять поясните не хочу тупо копировать есть желание хоть чего то выучить основы учил на C# думал что пхп будет попроще
$my_product = array(); это создаем массив да? но скобки пустые

//ОБЪЯВЛЯЕМ массив

 

 

$my_products = $this->model_sale_order->getOrderProducts($result['order_id']);
в $my_products -> вызывает функцию model_sale_order от туда getOrderProducts ?? ($result['order_id']);
//Вызываем функцию getOrderProducts() класса model_sale_order и пишем результат ее работы в $my_products


foreach ($my_products as $product) ищим $my_products в $product и если находим то выполняем условие да?

//Не, этим циклом ПЕРЕБИРАЕМ все элементы массива $my_products и на каждой итерации цикла работаем с каждым элементом в отдельности через переменную $product



{
$my_product[] = array(
'order_product_id' => $product['order_product_id'],
'product_id' => $product['product_id'],
'name' => $product['name'],
'model' => $product['model'],
'quantity' => $product['quantity'],
);
}





в 'products_ordered' => заносим массив $my_product,

//Это к какой части кода вопрос?



<?php $i=0;
$my_prods = $order['products_ordered'];
while ($i < sizeof($my_prods)) цикл если i < ??

//Пока $i меньше размера массива $my_prods, sizeof() или, что то же самое, count(),  возвращает кол-во элементов в массиве

{
echo '>> '. $my_prods[$i]['quantity'] . ' x ' . $my_prods[$i]['name'] . '<br>'; ????
$i++; инкримент вроде +1
}?>

 

//расписываю цикл полностью:

$i обнуляем

создаем массив $my_prods и засовываем в него массив проданных товаров, вытянутый из общего массива $order

пока ($i меньше количества элементов в массиве $my_prods) {

    выводим текст ">>" точкой присоединяем к нему значение $my_prods[$i счетчик товарных позиций][количество товара данной позиции] присоединяем к выводимой строке крестик, присоединяем тем же способом название товара из заказа, соответствующее товарной позиции $i, переходим на новую строку

 

Увеличить значение переменной на 1 можно:

а) $i = $i + 1;   // Тут все понятно, я думаю

б) $i++;            //ПОСТинкремент

в) ++$i;            //ПРЕинкремент

г) $i += 1;        // То же самое, что и под буквой А, только в укороченной форме

  • +1 3
Надіслати
Поділитися на інших сайтах


  • 3 weeks later...

Доброго времени, а как сделать так, чтобы в письме выводились контактные данные о покупателе?

Побродить по форуму и воспользоваться формой поиска.

Про генерацию письма я совсем недавно отвечал

 

upd: для ленивых https://opencartforum.com/topic/23298-rezhaktirovanie-shablona-pisma-administratoru/

Надіслати
Поділитися на інших сайтах

  • 2 years later...

Займемся некропостингом!)

Большое спасибо lakbor за реализацию идеи, очень пригодилось!

Возник вопрос - как можно реализовать рабочее поле ввода для фильтрации? (Типа как у "Заказ", "Покупатель" и т.п.).

Пока что приходится пользоваться ctrl+f...

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.