наведём порядок в значениях опций - добавим им "sort_order".
шаг_#1:
выполните в phpmyadmin или другом sql-менеджере запрос
ALTER TABLE `{ВАШ_DB_PREFIX}category_option_value` ADD `sort_order` INT( 4 ) NOT NULL DEFAULT '0', ADD INDEX ( `sort_order` )
шаг_#2:
в файле admin/model/catalog/filter.php найдите метод
public function addOption($data) {замените
$this->db->query("INSERT INTO " . DB_PREFIX . "category_option_value SET option_id = '" . (int)$option_id . "'");на
$this->db->query("INSERT INTO " . DB_PREFIX . "category_option_value SET option_id = '" . (int)$option_id . "', `sort_order`='".(int)$option_value['sort_order']."'");
шаг_#3:
там же найдите метод
public function editOption($option_id, $data) {замените
$this->db->query("INSERT INTO " . DB_PREFIX . "category_option_value SET option_id = '" . (int)$option_id . "', value_id = '" . (int)$value_id . "'");на
$this->db->query("INSERT INTO " . DB_PREFIX . "category_option_value SET option_id = '" . (int)$option_id . "', value_id = '" . (int)$value_id . "', `sort_order`='".(int)$value['sort_order']."'");
шаг_#4:
ниже найдите метод
public function getOptionValues($option_id) {замените
$value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category_option_value WHERE option_id = '" . (int)$option_id . "'");на
$value_query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category_option_value WHERE option_id = '" . (int)$option_id . "' ORDER BY `sort_order` ASC");
и приведите формирующийся массив
$value_data[] = array(
'value_id' => $option_value['value_id'],
'language' => $category_option_value_description_data
);
к виду
$value_data[] = array(
'value_id' => $option_value['value_id'],
'language' => $category_option_value_description_data,
'sort_order' => $option_value['sort_order']
);
шаг_#5:
замените файл шаблона admin/view/template/catalog/filter_form.tpl на прикрепленный в архиве
шаг_#6:
в файле catalog/model/catalog/filter.php замените метод
public function getOptionValues($option_id) {
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category_option_value cov LEFT JOIN " . DB_PREFIX . "category_option_value_description covd ON (cov.value_id = covd.value_id) WHERE cov.option_id = '" . (int)$option_id . "' AND covd.language_id = '" . (int)$this->config->get('config_language_id') . "'");
return $query->rows; }на
public function getOptionValues($option_id) {
//$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category_option_value cov LEFT JOIN " . DB_PREFIX . "category_option_value_description covd ON (cov.value_id = covd.value_id) WHERE cov.option_id = '" . (int)$option_id . "' AND covd.language_id = '" . (int)$this->config->get('config_language_id') . "'");
// [w]
$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category_option_value cov LEFT JOIN " . DB_PREFIX . "category_option_value_description covd ON (cov.value_id = covd.value_id) WHERE cov.option_id = '" . (int)$option_id . "' AND covd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY cov.`sort_order` ASC");
return $query->rows;
}
вот и всё :wink:
отдельное спасибо LifeZP за то, что все таки привлек мое внимание к данному вопросу :-)
filter_option_values_sort_order.zip