Возможна ли так же использовать TPL как с XSL примером выше?
Было необходимость вывести группу баннеров собственной сортировкой. Написал такой виджет:
if (Core::moduleIsActive('advertisement'))
{
$xsl = Core_Array::get(Core_Page::instance()->widgetParams, 'xsl');
$advertisement_group_id = Core_Array::get(Core_Page::instance()->widgetParams, 'advertisementGroupId');
$Advertisement_Group_Controller_Show = new Advertisement_Group_Controller_Show(
Core_Entity::factory('Advertisement_Group', $advertisement_group_id)
);
$oAdvertisement = $Advertisement_Group_Controller_Show->advertisements();
// Обычный показ N баннеров
$oAdvertisement
->queryBuilder()
->where('type','=', 0)
->clearOrderBy()
->orderBy('start_datetime', 'ASC')
->limit(3);
$aAdvertisements = $oAdvertisement->findAll(FALSE);
$oXmlStructureTag = Core::factory('Core_Xml_Entity')->name('advertisement_group');
foreach ($aAdvertisements as $oAdvertisement)
{
$oAdvertisement->incAdvertisementStatistic();
// Идентификатор показа
$oAdvertisement_Show = $oAdvertisement->addAdvertisementShow();
$oXmlStructureTag->addEntity($oAdvertisement->clearEntities());
$oAdvertisement->addEntity(
$oAdvertisement_Show->clearEntities()
);
}
$return = Xsl_Processor::instance()
->xml($oXmlStructureTag->getXml())
->xsl(Core_Entity::factory('Xsl')->getByName($xsl))
->process();
echo $return;
}
Все работает. Может есть более правильный подход или выбор?