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

Recommended Posts

Помогите реализовать в разных категориях сортировку товара, ocStore 2.1.0.2.1 чистая

 

Вот по этой статье https://for-opencart.com/additions/different-sort-order вываливается ошибка при заходе в любую из категории

 

Notice: Error: Unknown column 'p2c.category_order' in 'order clause'
Error No: 1054
SELECT p.product_id, (SELECT AVG(rating) AS total FROM review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special FROM product_to_category p2c LEFT JOIN product p ON (p2c.product_id = p.product_id) LEFT JOIN product_description pd ON (p.product_id = pd.product_id) LEFT JOIN product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND p2c.category_id = '18' GROUP BY p.product_id ORDER BY p2c.category_order ASC, LCASE(pd.name) ASC LIMIT 0,15 in /sait/www/system/library/db/mysqli.php on line 41Notice: Trying to get property of non-object in /sait/www/catalog/model/catalog/product.php on line 193Warning: Invalid argument supplied for foreach() in /sait/www/catalog/model/catalog/product.php on line 193

 

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


54 minutes ago, iBeautiful said:

Помогите реализовать в разных категориях сортировку товара, ocStore 2.1.0.2.1 чистая

 

Вот по этой статье https://for-opencart.com/additions/different-sort-order вываливается ошибка при заходе в любую из категории

 


Notice: Error: Unknown column 'p2c.category_order' in 'order clause'
Error No: 1054
SELECT p.product_id, (SELECT AVG(rating) AS total FROM review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special FROM product_to_category p2c LEFT JOIN product p ON (p2c.product_id = p.product_id) LEFT JOIN product_description pd ON (p.product_id = pd.product_id) LEFT JOIN product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND p2c.category_id = '18' GROUP BY p.product_id ORDER BY p2c.category_order ASC, LCASE(pd.name) ASC LIMIT 0,15 in /sait/www/system/library/db/mysqli.php on line 41Notice: Trying to get property of non-object in /sait/www/catalog/model/catalog/product.php on line 193Warning: Invalid argument supplied for foreach() in /sait/www/catalog/model/catalog/product.php on line 193

 

там ошибка в наименовании полей

в базе данных первым же шагом нужно создавать поле с именем category_order  а не category_sort

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

2 hours ago, iBeautiful said:

Ошибка пропала, теперь просто в доп. категории не добавляется товар, только в главную работает, как исправить?

в шаблоне нужно изменить имя поля в чекбоксах выбираемых категорий на name="product_category[<?php echo $category['category_id']; ?>][category_id]"

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

1 минуту назад, Blast сказал:

в шаблоне нужно изменить имя поля в чекбоксах выбираемых категорий на name="product_category[<?php echo $category['category_id']; ?>][category_id]"

Спасибо, но это не помогает, отмечаешь чекбокс, сохраняешь, заходишь снова в товар и он не отмечен

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


14 minutes ago, iBeautiful said:

Спасибо, но это не помогает, отмечаешь чекбокс, сохраняешь, заходишь снова в товар и он не отмечен

сделайте дамп данных и посмотрите есть ли вообще в передаваемых данных инфа о категориях

в файле admin/model/catalog/product.php после

if (isset($data['product_category'])) {

добавьте

var_dump($data['product_category']); die;

 

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

1 час назад, Blast сказал:

сделайте дамп данных и посмотрите есть ли вообще в передаваемых данных инфа о категориях

в файле admin/model/catalog/product.php после


if (isset($data['product_category'])) {

 добавьте

var_dump($data['product_category']); die;

  

Вот

Спойлер


array(38) {
  [34]=>
  array(2) {
    ["category_id"]=>
    string(2) "34"
    ["category_order"]=>
    string(4) "1234"
  }
  [43]=>
  array(2) {
    ["category_id"]=>
    string(2) "43"
    ["category_order"]=>
    string(4) "5555"
  }
  [44]=>
  array(2) {
    ["category_id"]=>
    string(2) "44"
    ["category_order"]=>
    string(4) "6666"
  }
  [47]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [48]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [49]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [50]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [51]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [52]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [58]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [53]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [54]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [55]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [56]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [38]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [37]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [39]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [40]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [41]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [42]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [33]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [25]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [32]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [28]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [35]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [36]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [29]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [30]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [31]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [20]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [27]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [26]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [18]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [46]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [45]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [57]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [17]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
  [24]=>
  array(1) {
    ["category_order"]=>
    string(0) ""
  }
}

 

Всё печально так :(

Змінено користувачем iBeautiful
Выбраны некоторые чекбоксы и внесены данные
Надіслати
Поділитися на інших сайтах


а введенные данные по сортировкам сохраняются?

1234, 5555?

для достоверности можно прямо в базу заглянуть

Змінено користувачем Blast
Надіслати
Поділитися на інших сайтах

17 minutes ago, iBeautiful said:

Нет, я открываю заново товар и ничего не сохранено

ну так трудно гадать

нужно смотреть данные на каждом этапе. До записи в БД в разных условиях. Потом посмотреть в самой БД. Сделать дамп в контроллере после получения данных строкой

$this->model_catalog_product->getProductCategorySorts($this->request->get['product_id']);

Потом во вьюшке. Так и выяснять где они теряются

 

В модели надеюсь внесли изменения и в метод AddProduct и editProduct

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

7 минут назад, Blast сказал:

ну так трудно гадать

нужно смотреть данные на каждом этапе. До записи в БД в разных условиях. Потом посмотреть в самой БД. Сделать дамп в контроллере после получения данных строкой


$this->model_catalog_product->getProductCategorySorts($this->request->get['product_id']);

 Потом во вьюшке. Так и выяснять где они теряются

 

В модели надеюсь внесли изменения и в метод AddProduct и editProduct

Спасибо, удалось добиться почти точной работы, всё заработало, НО единственное, при заходе снова в товар, не отображает цифры с под категории просто везде пишет "Сорт"

 

Вот такая сейчас таблица в /sait/www/admin/view/template/catalog/product_form.tpl как подправить? 

                    <table class="table table-striped">
                    <?php foreach ($categories as $category) { ?>
                    <tr>
                      <td class="checkbox">
                        <label>
                          <?php if (in_array($category['category_id'], $product_category)) { ?>
                          <input type="checkbox" name="product_category[<?php echo $category['category_id']; ?>][category_id]" value="<?php echo $category['category_id']; ?>" checked="checked" />
                          <?php echo $category['name']; ?>
                          <?php } else { ?>
                          <input type="checkbox" name="product_category[<?php echo $category['category_id']; ?>][category_id]" value="<?php echo $category['category_id']; ?>" />
                          <?php echo $category['name']; ?>
                          <?php } ?>
                        </label>
			<input type="text" class="hided_text" placeholder="Сорт" name="product_category[<?php echo $category['category_id']; ?>][category_order]" value="<?php echo (isset($product_category_sorts[$category['category_id']]) && $product_category_sorts[$category['category_id']] >0 ) ? $product_category_sorts[$category['category_id']]:''; ?>" />
                      </td>
                    </tr>
                    <?php } ?>
                    </table>

 

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


так визуально в коде все норм

но алгоритм проверки не меняется

Quote

нужно смотреть данные на каждом этапе. До записи в БД в разных условиях. Потом посмотреть в самой БД. Сделать дамп в контроллере после получения данных строкой


$this->model_catalog_product->getProductCategorySorts($this->request->get['product_id']);

Потом во вьюшке. Так и выяснять где они теряются

 

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

Может где-то здесь проблема, как его дампануть/проверить?

 

	public function getProductCategorySorts($product_id) {
		$product_category_data = array();
		
		$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "'");
		
		foreach ($query->rows as $result) {
			$product_category_data[$result['category_id']] = $result['category_order'];
		}
		
		return $product_category_data;
	}
	

 

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


8 hours ago, iBeautiful said:

Не правильно вставила код в файле /sait/www/admin/controller/catalog/product.php

 

есть кстати подозрение, что если при редактировании товара вы, например, не заполните обязательные поля и опенкарт вернет вас на эту же страницу редактирования этого же товара, то вся сортировка собьется(в БД останется). Проверьте, не сохраняя повторно товар

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

3 часа назад, Blast сказал:

есть кстати подозрение, что если при редактировании товара вы, например, не заполните обязательные поля и опенкарт вернет вас на эту же страницу редактирования этого же товара, то вся сортировка собьется(в БД останется). Проверьте, не сохраняя повторно товар

Действительно, ошибка показалась, как такое исправить?

 

<b>Notice</b>: Array to string conversion in <b>/sait/www/admin/view/template/catalog/product_form.tpl</b> on line <b>384</b>Array

384 стр

<input type="text" class="hided_text" placeholder="sort" name="product_category[<?php echo $category['category_id']; ?>][category_order]" value="<?php echo (isset($product_category_sorts[$category['category_id']]) && $product_category_sorts[$category['category_id']] >0 ) ? $product_category_sorts[$category['category_id']]:''; ?>" />

 

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


6 hours ago, iBeautiful said:

Действительно, ошибка показалась, как такое исправить?

замените

$data['product_category_sorts'] = $this->request->post['product_category'];

на

$data['product_category_sorts'] = array();
foreach($this->request->post['product_category'] as $category_id => $category) {
	$data['product_category_sorts'][$category_id] = $category['category_order'];
}

 

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

2 часа назад, Blast сказал:

замените


$data['product_category_sorts'] = $this->request->post['product_category'];

 на


$data['product_category_sorts'] = array();
foreach($this->request->post['product_category'] as $category_id => $category) {
	$data['product_category_sorts'][$category_id] = $category['category_order'];
}

 

Спасибо большое, ошибки больше нет и всё работает!!! :-o

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


  • 1 month later...

Столкнулся тоже с проблемой при добавлении сортировки для разных категорий.

При этом в "Связи" товара ошибка

Notice: Undefined variable: product_category in /site.ru/public_html/system/storage/modification/admin/view/template/catalog/product_form.tpl on line 387Warning: in_array() expects parameter 2 to be array, null given in /site.ru/public_html/system/storage/modification/admin/view/template/catalog/product_form.tpl on line 387 Бытовая техника

Вроде бы все по инструкции сделано.

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


12 часов назад, morozzz16 сказал:

Столкнулся тоже с проблемой при добавлении сортировки для разных категорий.

При этом в "Связи" товара ошибка


Notice: Undefined variable: product_category in /site.ru/public_html/system/storage/modification/admin/view/template/catalog/product_form.tpl on line 387Warning: in_array() expects parameter 2 to be array, null given in /site.ru/public_html/system/storage/modification/admin/view/template/catalog/product_form.tpl on line 387 Бытовая техника

Вроде бы все по инструкции сделано.

А что оно у вас делает в /system/storage/modification... у вас возможно стоит какой-то модуль, который даёт конфликт, так как у меня данный файл product_form.tpl не модифицируется ничем

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


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

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

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

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

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

Вхід

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

Вхід зараз
×
×
  • Створити...

Important Information

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