Кому нравится способ ввода атрибутов товаров в 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.