Что касается блок контроллера, то можно просто его отклонировать в свой модуль и потом подключить, просто указав свой блок контроллер, его кстати можно отнаследовать от стандартного блок контроллера, чтобы просто добавить потом одно поле.
С остальными моментами сложнее, т.к. нужно, в контроллере списка товаров listproducts.inc.php обрабатывать приём параметра фильтра из запроса подготовленного блок контроллером.
Но здесь можно воспользоваться хуком controller.beforeexec.catalog-front-product (controller.beforeexec.КОРОТКОЕ_ИМЯ_КОНТРОЛЛЕРА).
О хукам можно почитать здесь:
http://readyscript.ru/dev-manual/dev_ho … hooks_list
В результате чего у нас должна появится публичная статическая функция
public static function [b]controllerBeforeExecCatalogFrontProduct($data)[/b]
{
$controller = $data['controller'];//Объект фронт контроллера listproducts
$action = $data['action'];//Метод класса который отрабатывает страницу. Надо проверить на index
//Приём параметра из запроса
$param = \RS\Http\Request::commonInstance()->request('Наш параметр из $_REQUEST который нужно принять', TYPE_STRING);
//Получаем объект запроса из апи товаров, т.к. в контроллере listproduct параметр $api публичный
$q = $controller->api->queryObj();
//Дальше запрос который Вам нужне и нужные действия
}
Т.к. у нас есть публичная переменная класса $api и первым всегда отрабатывает функция init в контроллере listproducts, то в $this->api будет объект АПИ для запросов, мы его из вне дополним.
Видео по запросам, можно посмотреть у нас в разделе видеоуроки