Генерация своего xsl

#
Генерация своего xsl
Время пол 6 утра, сильно не кидайте камнями. Есть мои данные(array)  каким контроллером их передать в xsl? Что бы в XSL пришли только они и ничего лишнего. API метод есть? Сейчас через $Structure_Controller_Show, но там и меню ещё выборка идёт, да и иерархией <site> как убрать это из xsl при генерации?
#
Re: Генерация своего xsl
Меню из Structure_Controller_Show не убрать, так как в этом и состоит основная функция этого контроллера. Добавлять свои данные в xml вы можете через addEntity  https://www.hostcms.ru/documentation/modules/core/controllers/
«Не выходи из комнаты, не совершай ошибку…»
#
Re: Генерация своего xsl
llirik писал(а):
API метод есть?

Есть
llirik писал(а):
Сейчас через $Structure_Controller_Show, но там и меню ещё выборка идёт, да и иерархией <site> как убрать это из xsl при генерации?

$oXmlTag = Core::factory('Core_Xml_Entity')->name('my_xml');
$directors = array( "Alfred Hitchcock", "Stanley Kubrick", "Martin Scorsese", "Fritz Lang" );

foreach ( $directors as $director ) {
    $oXmlTag
        ->addEntity(Core::factory('Core_Xml_Entity')
            ->name('director')
            ->addEntity(Core::factory('Core_Xml_Entity')->name('name')->value($director))
        );
}

$return = Xsl_Processor::instance()
    ->xml($oXmlTag->getXml())
    ->xsl(Core_Entity::factory('Xsl')->getByName('MyXSL'))
    ->process();
echo $return;
E-mail: info@syrbek.ru / телега: @syrbek /skype: activexm / syrbek.ru / Поддержка сайтов / г. Москва [HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, Git, SVN, Redmine]
#
Re: Генерация своего xsl
Seri писал(а):
Ох! Прям то что мне не хватало!  Спасибо вам
#
Re: Генерация своего xsl
Возможна ли так же использовать 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;

}

Все работает. Может есть более правильный подход или выбор?
E-mail: info@syrbek.ru / телега: @syrbek /skype: activexm / syrbek.ru / Поддержка сайтов / г. Москва [HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, Git, SVN, Redmine]
Модератор
#
Re: Генерация своего xsl
Advertisement_Group_Controller_Show умеет работать с TPL, массив выбранных баннеров будет в aAdvertisements.
Авторизация