Перейти к содержанию
Mishanay

[Решено] Сортировка товаров по ID в админке

Рекомендуемые сообщения

Доброго времени. Поскажите пожалуйста как сделать сортировку в админке по ID товара? ID в колонке возле товара я вывел и пытался сделать сортировку по принципу расширения «Сортировка по категориям» но что то вероятно не то делаю.И ещё вопрос. У меня перестали выводиться товары на главную страницу при том что копаться с сортировкой по ID я стал позже. Что может быть?Заранее спасибо за ответы!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Перестали выводится последние добавленные товары или какие?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Перестали выводится последние добавленные товары или какие?

Да, последние добавленные товары.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Перестали выводится последние добавленные товары или какие?

Да, последние добавленные товары.
Не на первой странице последние добавленные товары выводятся?Ковыряли что-нибудь из этого?:

product.phplast_home.tpl

?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

product.php

ковырял. Но не сильно. Только бавлял выражения вроде:

if (isset($this->request->get['filter_category'])) {$url .= '&filter_category=' . $this->request->get['filter_category'];}

К тому же только в адмике.

last_home.tpl не трогал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

может просто в админке модуль отключили?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

может просто в админке модуль отключили?

Да, спасибо! Банальная не внимательность.Как насчёт сортировки по ID? Очень надо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

раз колонку ID уже добавили, то от нее и будем отталкиваться (подробно расписывать не буду, видно что с программированием знакомы, что где вставлять думаю знаете):в ..adminviewtemplatecatalogproduct_list.tpl:заголовок таблицы будет выглядеть примерно так

<td class="left"><?php if ($sort == 'p.product_id') { ?>              <a href="<?php echo $sort_id; ?>" class="<?php echo strtolower($order); ?>">ID товара</a>              <?php } else { ?>              <a href="<?php echo $sort_id; ?>">ID товара</a>              <?php } ?></td>
в ..admincontrollercatalogproduct.php примерно 414 строка добавим строку:
$this->data['sort_id'] = HTTPS_SERVER . 'index.php?route=catalog/product&token=' . $this->session->data['token'] . '&sort=p.product_id' . $url;
в ..adminmodelcatalogproduct.php:в функции getProducts найти массив
$sort_data = array(				'pd.name',				'p.model',				'p.quantity',				'p.status',				'p.sort_order'			);
и добавить в него строчку
'p.product_id',

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Fix305Спасибо! Всё работает.Только есть одно, НО:В версии 1.4.7 вместо:

$this->data['sort_id'] = HTTPS_SERVER . 'index.php?route=catalog/product&token=' . $this->session->data['token'] . '&sort=p.product_id' . $url;
надо вставить:
$this->data['sort_id'] = HTTPS_SERVER . 'index.php?route=catalog/product&sort=p.product_id' . $url;
и тогда всё отлично работает.Модет ещё дадите совет? Как добавить поле поиска по ID тут же?И как вывести ID в письме, отправляемом клиенту и администратору после приобретения товара?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в файле ..adminviewtemplatecatalogproduct_list.tpl :поле для ввода

<td class="center"><?php echo $product['product_id']; ?></td>
ниже в JS в функцию filter() добавить:
var filter_id = $('input[name='filter_id']').attr('value');		if (filter_id) {		url += '&filter_id=' + encodeURIComponent(filter_id);	}
в файле ..admincontrollercatalogproduct.phpнаходим все "filter_quantity" и по образу и подобию делаем для "filter_id" 1 в 1.в файле ..adminmodelcatalogproduct.phpв функцию getProducts()вставить (там поймешь где)
if (isset($data['filter_id']) && !is_null($data['filter_id'])) {								$sql .= " AND p.product_id = '" . $this->db->escape($data['filter_id']) . "'";			}			
в функцию getTotalProducts()вставить
if (isset($data['filter_id']) && !is_null($data['filter_id'])) {			$sql .= " AND p.product_id = '" . $this->db->escape($data['filter_id']) . "'";		}
должно работать (тестировал на 1.4.8b). Про ид в письмах если сам не разберешься завтра выложу.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Отлично работает! Ты мужик!!! Спасибо!Только вместо:

<td class="center"><?php echo $product['product_id']; ?></td>
надо:
<td><input type="text" name="filter_id" value="<?php echo $filter_id; ?>" /></td>
Я письма копал, НО! Опять это НО. Постоянно ошибка. Я примерно прикидываю как можно вывести, но всё как то мысль не доходит до своего конечного итога, и в следствии положительного результата.Жду решения от тебя.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да чет поторопился не ту строку скопировал =)насчет почты:в ..catalogmodelcheckoutorder.php найди массив

$template->data['products'][] = array(					'name'     => $product['name'],					'model'    => $product['model'],					'option'   => $option_data,					'quantity' => $product['quantity'],					'price'    => $this->currency->format($product['price'], $order_query->row['currency'], $order_query->row['value']),					'total'    => $this->currency->format($product['total'], $order_query->row['currency'], $order_query->row['value'])				);
добавить строчку
'product_id'     => $product['product_id'],
теперь в шаблоне (../template/mail/order_confirm.tpl) который уходит на почту клиентам будет доступна переменная $products[..]['product_id']а что бы еще и админу приходило идем чуть нижек строчке
$text .= $result['title'] . ' ' . html_entity_decode($result['text'], ENT_NOQUOTES, 'UTF-8') . "n";
добавляем
$result['product_id']
делал теоретически, но работать должно))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!В письме клиенту всё супер.А вот с админом не совсем понятно. Я так понимаю что генерация письма админу в блоке

// Text Mail$text  = sprintf($language->get('text_greeting'), html_entity_decode($order_query->row['store_name'], ENT_QUOTES, 'UTF-8')) . "nn";$text .= $language->get('text_order_id') . ' ' . $order_id . "n";........
впихиваю туда переменную и ничего.Мне бы его отформатировать (придать человеческий вид :) ) что-то вроде:

Вы получили заказ.№ заказа: 28Дата заказа: 27.08.2010Состояние заказа: ОжиданиеТовары:Кол. Наименование Упаковка Цена Артикул4 Супер-пупер товар (100 мл.) 335.00 р. 3482 Супер-пупер товар (110 мл.) 732.00 р. 275Итого:Сумма: 1067.00 р.Единая ставка: 200.00 р.Итого: 1267.00 р.

Как то так :D . Думаю понятно мысль донёс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Доброго времени. Поскажите пожалуйста как сделать сортировку в админке по ID товара? ID в колонке возле товара я вывел и пытался сделать сортировку по принципу расширения «Сортировка по категориям» но что то вероятно не то делаю.

А можете подробнее описать как добавить сортировку по категориям в админке?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В моем случае Opencart 2 - работает такой вариант:

admin/controller/catalog/produkt.php

строка 261 - меняю $sort = 'pd.name'; на $sort = 'p.product_id';

после строки 465 добавляю -

$data['sort_product_id'] = $this->url->link('catalog/product', 'token=' . $this->session->data['token'] . '&sort=p.product_id' . $url, 'SSL');  

 

admin/model/catalog/produkt.php

после строки 373 ($sort_data = array()

добавляю -

'p.product_id',

 

Считаю, что самая удобная сортировка товаров в админке Opencart - по умолчанию по ID товара,

а в tpl даже незачем столбец делать с ИД.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Гость
Эта тема закрыта для публикации ответов.

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.