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

FIX сортировки по полю model в админке на странице товаров


Recommended Posts

Привет всем!
Может кто-нибудь фиксил эту дикую сортировку?

Это мягко говоря странно когда 102 больше чем 10199 ;)

Поделитесь решением. Готов угостить апельсинами на ЯД.:)

img-2020-03-20-16-16-57.png.2d2f245789298ecc3d87af4d24d61cfe.png

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


6 часов назад, Otvet сказал:

CAST(p.model AS INT)

 

Большое спасибо за помощь!

Правильно ли я вас понял? ^_^

Нужно это
 

if (!empty($data['filter_model'])) {
   $sql .= " AND p.model LIKE '%" . $this->db->escape($data['filter_model']) . "%'";
}

Заменить на это

if (!empty($data['filter_model'])) {
   $sql .= " AND CAST(p.model AS INT '%" . $this->db->escape($data['filter_model']) . "%')";
}

Простите пожалуйста, SQL не сильная моя сторона.

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


18 часов назад, Otvet сказал:

нет

 

после


ORDER

 

if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
	$sql .= " ORDER BY " . $data['sort'];
} else {
	$sql .= " ORDER BY pd.name";
}

Меняю на это и все работает.

if (isset($data['sort']) && in_array($data['sort'], $sort_data) && $data['sort'] != 'p.model') {
	$sql .= " ORDER BY " . $data['sort'];
} elseif ( $data['sort'] == 'p.model' ) {
	$sql .= " ORDER BY CAST(p.model AS INT)";
}else{
	$sql .= " ORDER BY pd.name";
}

Все манипуляции делаю в файле

admin/model/catalog/product.php

В функции 

public function getProducts($data = array()) {

Большое спасибо!
Тему можно пометить как решенную.

 

 

PS. Инструкция для ocmod

<!--  FIX сортировки по полю model в админке на странице товаров  -->
<file path="admin/model/catalog/product.php" error="skip">
  <operation error="skip">
    <search><![CDATA[if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {]]></search>
    <add position="replace" trim="true"><![CDATA[if (isset($data['sort']) && in_array($data['sort'], $sort_data) && $data['sort'] != 'p.model') {]]></add>
  </operation>
  <operation error="skip">
    <search><![CDATA[$sql .= " ORDER BY " . $data['sort'];]]></search>
    <add position="after" trim="true"><![CDATA[
      } elseif ( $data['sort'] == 'p.model' ) {
      $sql .= " ORDER BY CAST(p.model AS INT)";
    ]]></add>
  </operation>
</file>

Может возникнуть ошибка при переносе на хостинг, так как там может использоваться старая версия mysql.

У меня была версия mysql 5.5.62-1 и выскочила фатальная ошибка.

В этом случае необходимо:

$sql .= " ORDER BY CAST(p.model AS INT)";

Сменить на это:

$sql .= " ORDER BY CAST(p.model AS UNSIGNED)";

 

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


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

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

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

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

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

Вхід

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

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

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