Добрый день.
Ну чтож, тут есть сразу не сколько решений. Давайте Рассмотрим всё по порядку:
Вариант 1
Нами к smarty(шаблонозатор системы) написан плагин, который позволяет вызывать статический метод у любого класса системы прямо в шаблоне, главное чтобы это был метод public static
Т.е. допустим у Вас имеется свой собственный класс по пути \Custom\Model\CustomApi и метод loadInfo. Чтобы его вызвать нужно воспользоваться следующей конструкцией:
В шаблоне
{* $list - список Ваших объектов *}
{$list}
{* Вызов метода loadInfo в \Custom\Model\CustomApi *}
{static_call var=new_list callback=['\Custom\Model\CustomApi','loadInfo'] params=[$list]}
Таким образом мы сделаем аналог вызова функции вот так:
$new_list = \Custom\Model\CustomApi::loadInfo($list);
Т.е. в шаблоне все данные, которые будут возвращены в шаблон, возвратятся в $new_list
В Вашем классе надо будет сделать так
/**
*
* @param array $list - массив входящих объектов
*/
public static function loadInfo($list){
//Пройдёмся в цикле по списку
foreach ($list as $k=>$item){
//Получим объект товара сделав запрос к таблице товаров через \RS\ORM\Request
$product = \RS\ORM\Request::make()
->from(new \Catalog\Model\Orm\Product()) //Укажем что запрос будет в таблицу товаров
->where(array(
'id' => $item['product_id']
))
->object(); //Получим объект \Catalog\Model\Orm\Product
//Ну или вот так ещё короче $product= new \Catalog\Model\Orm\Product($item['product_id']);
$list['product_title'] = $product['title']; //Создаём новый ключ массива, куда и запишем значение названия товара
//Или можно записать весь объект
$list['product'] = $product;
return $list;
}
}
Получить ссылку на товар можно тогда так:
{$new_list.0.product->getUrl()}
{*
Аналог
$new_list[0]['product']->getUrl();
*}
Подробнее метод static_call описани в документации
Вариант 2
Если используете блок контроллер или front контроллер, то можно прямо в контроллере подгрузить эти сведения о товаре. Например через join.
Рассмотрим на примере:
Допустим Вы запросом получаете сведения из одной таблицы, и вам нужно прикрепить данные из другой таблицы.
//Получим список комплектаций с подгруженным полем из товара
$list = \RS\Orm\Request::make()
->select('O.*, P.title as product_title') //Выбрать только все поля таблицы комплектаций и одно поле товара
->from(new \Catalog\Model\Orm\Offer(),'O') //Запрос к такблице комплектаций с алиасом O
->join(new \Catalog\Model\Orm\Product(),'O.product_id=P.id','P') //Join к таблице товаров с алиасом P
->where("O.product_id>0") // WHERE O.product_id>0
->objects();