Понял, почему не работало. Там была ошибка, в строке:
if($category_id = (int)$this->getProperty('category_id')){
значение category_id всегда приводилось к числу, поэтому массив из категорий не получался.
if($category_id = (int)$this->getProperty('category_id')){