Спасибо, я обратил внимание, действительно, в Импере вообще нет настройки (флажка) по выводу в категорию только ее личных товаров. Пока настройка не появилась в движке, придется вручную исправить в файле http://сайт/objects/Selector.php следующие строки (серым цветом показаны комментируемые строки, синим - добавляемые). Исправления начинаются в строке 1032 этого файла.
...
...
// если выбранная категория/бренд не является информативной страницей,
// готовимся читать список товаров в ней
if ((empty($category) || ($category->informative != 1))
&& (empty($brand) || ($brand->informative != 1))) {
$params = new stdClass;
$params->sort = $this->sort_products_mode;
$params->sort_direction = $this->sort_products_direction;
$params->sort_laconical = $this->sort_products_laconical;
$params->type = TYPE_PRODUCTS_ANY;
$params->discount = isset($this->user->discount) ? $this->user->discount : 0;
$params->price_id = isset($this->user->price_id) ? $this->user->price_id : 0;
$params->section = $this->now_in_section;
if (($USD_cost_from != 0)) $params->search_cost_from = $USD_cost_from;
if ($USD_cost_to != 0) $params->search_cost_to = $USD_cost_to;
// $params->category = &$category; <-- это строка 1032
// отбираем только личные товары текущей категории
if (isset($category->category_id)) $params->category_id = $category->category_id;
$params->brand = &$brand;
$params->properties = &$filter;
$params->enabled = 1;
if (!isset($this->user->user_id)) $params->hidden = 0;
...
...
Так как данные изменения вносятся в метод fetch_products класса, ответственного за селекцию товаров для клиентской стороны, то изменения не затрагивают админпанель, и в ней список товаров отображается по-прежнему. В следующих версиях движка изменения делать не придется, они будут организованы через флажок в настройках страницы категорий в админпанели.
Если же магазин по аналогии с категориями использует вложенные суббренды (некоторые головные компании имеют подразделения или торговые марки), скажем:
-
Matsushita Electric Industrial
- National
- National Panasonic
- Panasonic
- Technics
- Quasar
то задача вывода исключительно личных товаров как в категориях, так и на страницах брендов в том числе, сводилась бы еще ко второй правке на строке, которая до первой правки имела номер
1033:
// $params->brand = &$brand; <-- это бывшая строка 1033
// отбираем только личные товары текущего бренда
if (isset($brand->brand_id)) $params->brand_id = $brand->brand_id;
$params->properties = &$filter;
$params->enabled = 1;
if (!isset($this->user->user_id)) $params->hidden = 0;
...
...
Впрочем, ювелирно точная правка такой функции требует внести аналогичные правки в строки 957 и 958 того же файла, чтобы фильтр не наполнялся названиями вариантов товаров из вложенных категорий / брендов, что существенно лишь для магазинов, какие пользуются секцией фильтра "Варианты".