Добавление поле сортировки shop script lego edition

29.12.2012 22:06:15
В данной CMS есть стандартные варианты сортировки товаров в категории, но клиент захотел отдельное поле ordering, что бы порядок можно было задавать вручную.

Добавление поля в БД.

Подключаемся к базе данных (например, через phpMyAdmin).
Находим таблицу SS_products и добавить поле ordering

Добавляем поле в панели администрирования
Открываем файл /core/admin_tmpl/ catalog_products_edit.tpl.html
Перед

1
2
3
<tr class="odd">
<td colspan="4" class="left"><b>META</b></td>
</tr>

Добавляем

1
2
3
4
5
6
<tr>
<td class="left">Порядок(Ordering):</td>
<td class="left"><input type="text" name="ordering" value="{$product_edit[22]}" style="width: 145px" /></td>
<td></td>
<td></td>
</tr>

Передаем значения поля в шаблон панели администрирования и добавляем функционал для сохранения поля.

Открываем файл /includes/admin/sub/catalog_products_edit.php
В районе 466 строчки есть запрос вида:

$q = db_query("SELECT categoryID, name, description, customers_rating, … FROM ".PRODUCTS_TABLE." 

Добавляем наше поле

$q = db_query("SELECT categoryID, name, description, customers_rating, … , ordering FROM ".PRODUCTS_TABLE." 

В районе 50 строки есть код вида:

1
2
$updateproduct['categoryID']=(int)$_POST["categoryID"];
$updateproduct['name']=($_POST["name"]);

Нужно к нему добавить строку

1
$updateproduct['ordering']=$_POST["ordering"]; 

В районе 214 ищем

1
2
$addproduct['categoryID']=(int)$_POST["categoryID"];
$addproduct['name']=($_POST["name"]);

Добавляем строку

1
$addproduct['ordering']=$_POST["ordering"];

Добавляем новое поле в выпадающий список сортировок.

Файл /includes/category.php
Строка 31 объявляется массив:

$sort_options['sort_values'] = Array( 

Первой строчкой добавляем

$row[7]."&amp;sort=ordering&amp;order=ASC", 

Где sort=ordering – наше поле

Ниже, в районе 40 строки есть еще массив:

$sort_options['sort_names'] = Array(ADMIN_SORT_BY_NAME_ASC, …

Добавляем в него "По умолчанию"

$sort_options['sort_names'] = Array('По умолчанию', ADMIN_SORT_BY_NAME_ASC, … 

Делаем нашу сортировку валидной для CMS

Файл /index.php
В районе 246 строки ищем код:

1
2
3
4
5
6
7
8
9
switch ($_GET["sort"])
{
case "name": $_SESSION["sort"] = "name"; break;
case "Price": $_SESSION["sort"] = "Price"; break;
case "in_stock": $_SESSION["sort"] = "in_stock"; break;
case "product_code": $_SESSION["sort"] = "product_code"; break;
case "customers_rating": $_SESSION["sort"] = "customers_rating"; break;
default: $_SESSION["sort"] = CONF_SORT_PRODUCT; break;
}

И меняем его на

1
2
3
4
5
6
7
8
9
10
11
switch ($_GET["sort"])
{
default:
case "ordering": $_SESSION["sort"] = "ordering"; break;
case "name": $_SESSION["sort"] = "name"; break;
case "Price": $_SESSION["sort"] = "Price"; break;
case "in_stock": $_SESSION["sort"] = "in_stock"; break;
case "product_code": $_SESSION["sort"] = "product_code"; break;
case "customers_rating": $_SESSION["sort"] = "customers_rating"; break;
// default: $_SESSION["sort"] = CONF_SORT_PRODUCT; break;
} 

В районе 270 строки меняем

if (!isset($_SESSION["sort"])) $_SESSION["sort"] = CONF_SORT_PRODUCT;

на

if (!isset($_SESSION["sort"])) $_SESSION["sort"] = "ordering"; //CONF_SORT_PRODUCT; 


Категории: shop script lego edition
Яндекс.Метрика