Сушите весла… Сами вряд ли сделаете. Надо добавлят

Сушите весла… Сами вряд ли сделаете. Надо добавлять в селект запрос вида if(find_in_set('{$value}', column) 1, 0) as exists и order by exists DESC, но просто так не сделать этого (скажем так, это небольшая недоработка getdata-процессора). Хотя попробуйте так:

  1. В prepareQueryBeforeCount() добавляете left join своей ТВшки, в которой содержатся эти значения.
  2. В initialize() добавляете
$this->setDefaultProperties(array(
    "sort"     => "if(find_in_set('{$value}', column) 1, 0)",
    "dir"      => "DESC",
));

Если надо не порядок отсортировать, а именно получить только те товары, которые есть в указанной категории, то тут проще: пишем в prepareQueryBeforeCount() так:

$c->innerJoin('modTemplateVarResource', "tv_categories", "tv_categories.contentid = {$this->classKey}.id AND tv_categories.tmplvarid = {$tv_id} AND find_in_set('{$value}', tv_categories.value)");