Фильтрация товаров ссылкой в JoomShopping - улучшение для Joomla! CMS

Многие пользователи JoomShopping в Joomla хотели бы иметь возможность передавать или публиковать ссылки, которые открывали бы список товаров, отфильтрованный по определенным характеристикам. Допустим, можно было бы создать ссылку, при переходе по которой открывался бы не просто список всех имеющихся в наличии марок шоколада (категория), а только марки тёмного шоколада и именно с орехами или что-то другое с такими же точными параметрами фильтрации товаров. На самом деле существует несложное решение для этой тривиальной задачи.

 

Для начала нужно найти файл "category.php" в папке "\components\com_jshopping\controllers\".

В этом файле после кода "$category->getDescription();" (без кавычек) нужно вставить следующий код:

If ($_GET['extra_fields']){
$EFGet = JRequest::getString('extra_fields');
$ExtraFieldsGet = Explode(",", $EFGet);
If (Count($ExtraFieldsGet)){
$_ExtraFields = &JTable::getInstance('productfieldvalue', 'jshop');
$AllExtraFields = $_ExtraFields->getAllList();
$ListExtraField = Array();
ForEach($AllExtraFields As $ExtraField){
$ListExtraField[$ExtraField->id] = $ExtraField->field_id;
}
$FilterExtraFields = Array();
ForEach($ExtraFieldsGet As $ExtraFieldGet){
$FilterExtraFields[$ListExtraField[$ExtraFieldGet]][] = $ExtraFieldGet;
}
JRequest::setVar('extra_fields', $FilterExtraFields, 'POST');
} }

Не забудьте сохранить изменения.

После этих манипуляций можно относительно легко, хотя и вручную, создавать ссылки на отфильтрованные списки товаров.

Для создания ссылки нужно определить значение "id" у категории, из которой требуется отфильтровать товары. Допустим, это "01" (без кавычек).

Затем нужно определить значения "id" у характеристик, по которым требуется отфильтровать список товаров. Допустим, это 12 и 13.

Когда нужные значения для фильтра определены, их можно вставлять в следующий шаблон ссылки:

index.php?option=com_jshopping&controller=category&task=view&category_id=01&extra_fields=12,13&Itemid=xxx


где вместо "xxx" должен быть указан ваш "Itemid".

Дополнительные приёмы фильтрации товаров ссылкой

Если требуется отфильтровать товары по определенному значению определенной характеристики без связи с определенной категорией, тогда нужно немного пошаманить над файлом "products.php", который находится в папке "\components\com_jshopping\controllers\".

В этом файле после кода "$filters = getBuildFilterListProduct($contextfilter, array());" (без кавычек) нужно вставить следующий код:

If ($_GET['extra_fields']){
$ExtraFieldsGet = Explode(",", $_GET['extra_fields']);
If (Count($ExtraFieldsGet)){
$_ExtraFields = &JTable::getInstance('productfieldvalue', 'jshop');
$AllExtraFields = $_ExtraFields->getAllList();
$ListExtraField = Array();
ForEach($AllExtraFields As $ExtraField){
$ListExtraField[$ExtraField->id] = $ExtraField->field_id;
}
$FilterExtraFields = Array();
ForEach($ExtraFieldsGet As $ExtraFieldGet){
$FilterExtraFields[$ListExtraField[$ExtraFieldGet]][] = $ExtraFieldGet;
}
$filters['extra_fields'] = $FilterExtraFields;
}
}

Затем определяем значения "id" характеристик, по которой требуется отфильтровать список. Допустим, это 12 и 13.

Шаблон ссылки в этом случае будет следующим:

index.php?option=com_jshopping&controller=products&task=view&extra_fields=12,13&Itemid=xxx

где вместо "xxx" должен быть указан ваш "Itemid".

.Еще сайты сделаные нами: