Opencart 1.5.x. Доработка: улучшения при вводе атрибутов товаров

Дек 04 2011

Кому нравится способ ввода атрибутов товаров в OpenCart 1.5.1.2? Думаю, что никому: если их хотя бы десяток, начинаешь забывать, путаться или упорно пытаться вспомнить, как этот атрибут назвали ранее. Кабель? Шнур питания? Длина шнура? Ох… Почему по умолчанию везде в админке сделан поиск по «сначалам» названий (и в связях товаров, и в атрибутах, и в рекомендуемых, и… да везде, в общем) — мне совершенно непонятно. Это неудобно. Мешает, утомляет, раздражает и тормозит.

В идеале я бы предпочёл видеть и редактировать атрибуты товаров в виде таблицы. Или хотя бы выпадающие списки. Почти как сейчас, но чтобы не приходилось мучительно вспоминать первую букву или держать рядом страницу со списком. Ну а пока таблицы нет, можно существенно облегчить себе ввод атрибутов, внеся совсем небольшое исправление.

Которое реализует:

  • поиск любого вхождения введённых символов, а не только с начала названий атрибутов;
  • при вводе «.» в пустое поле показывается полный список атрибутов, остаётся только выбрать необходимый.

diff --git a/public_html/admin/controller/catalog/attribute.php b/public_html/admin/controller/catalog/attribute.php
 index 637ab6c..8097fc1 100644
 --- a/public_html/admin/controller/catalog/attribute.php
 +++ b/public_html/admin/controller/catalog/attribute.php
 @@ -432,6 +432,7 @@ class ControllerCatalogAttribute extends Controller {
 }
}+ /*
 $sort_order = array();
foreach ($json as $key => $value) {
 @@ -439,6 +440,7 @@ class ControllerCatalogAttribute extends Controller {
 }
array_multisort($sort_order, SORT_ASC, $json);
 + */
$this->load->library('json');
diff --git a/public_html/admin/model/catalog/attribute.php b/public_html/admin/model/catalog/attribute.php
 index 1e438ef..019b155 100644
 --- a/public_html/admin/model/catalog/attribute.php
 +++ b/public_html/admin/model/catalog/attribute.php
 @@ -35,7 +35,10 @@ class ModelCatalogAttribute extends Model {
 $sql = "SELECT *, (SELECT agd.name FROM " . DB_PREFIX . "attribute_group_description agd WHERE agd.attribute_group_id = a.attribute_group_id AND agd.language_id = '" . (int)$this->config->get('config_language_id') . "') AS attribute_group FROM " . DB_PREFIX . "attribute a LEFT JOIN " . DB_PREFIX . "attribute_description ad ON (a.attribute_id = ad.attribute_id) WHERE ad.language_id = '" . (int)$this->config->get('config_language_id') . "'";
if (isset($data['filter_name']) && !is_null($data['filter_name'])) {
 - $sql .= " AND LCASE(ad.name) LIKE '" . $this->db->escape(mb_strtolower($data['filter_name'], 'UTF-8')) . "%'";
 + if( $data['filter_name'] == '.' )
 + $sql .= " AND LCASE(ad.name) LIKE '%'";
 + else
 + $sql .= " AND LCASE(ad.name) LIKE '%" . $this->db->escape(mb_strtolower($data['filter_name'], 'UTF-8')) . "%'";
 }
if (isset($data['filter_attribute_group_id']) && !is_null($data['filter_attribute_group_id'])) {

 

Автор: Ruslan Brest.


Нет комментариев

Комментарии:

Добавить комментарий


*

Вверх