Как в xslt GET переменную получить?

#
Как в xslt GET переменную получить?
Выводится на сайте инфосистема, в структуре сайта для отображения списка один xsl шаблон, для отображения единицы другой.  Возникла такая задача, вывести элементы только за определенный период.

Знаю, как сделать это в PHP  через динамическую систему и все получается, но только для списка элементов. Но, как в таком случае выводить единицу инфосистемы?
Т.е. получить get-переменную и что бы она влияла на вывод, ибо пробую в адресной строке в урл добавлять нужные мне get переменные, в выводе xml ничего не меняется, а если напрямую через php, $_GET доступен. И как можно применять разные макеты для вывода списка элементов и для вывода единицы в случае использования динамической страницы?
#
Re: Как в xslt GET переменную получить?
catfelix150,
через ТДС и производите выборку нужных элементов
Про смену макета
HostDev.pw - модули для HostCMS, Telegram: @hostdev
#
Re: Как в xslt GET переменную получить?
catfelix150, у вас не правильный подход к задаче. Для вывода инфоэлементов за определенный период, задаваемый через get-параметры, передавать значения этих параметров в XML не нужно.
Нужно в получить их значения в ТДС и сделать фильтр в контроллере показа Informationsystem_Controller_Show, чтобы в XML уже заведомо попадали только нужные вам инфоэлементы.
Фильтрация на уровне XSLT - плохая идея и вы соберете на этом пути изрядное количество граблей.
Заказов не беру. Консультирую редко.
#
Re: Как в xslt GET переменную получить?
я так и сделал, но применять разные xsl-шаблоны для разных случаев не получилось.

<?php
$current_day=date('Y-m-d');
$period = 7;

function checkDateCustom($date){
if (date('Y-m-d', strtotime($date)) == $date) {
return true;
} else {
return false;
}
}


if(!empty($_GET['date'])){
if(checkDateCustom($_GET['date'])){
$sortDay = $_GET['date'];
$period = 0;
}
}
if(empty($sortDay)) $sortDay = $current_day;

if (Core::moduleIsActive('informationsystem'))
{
$Informationsystem_Controller_Show = new Informationsystem_Controller_Show(
Core_Entity::factory('Informationsystem', '24')
);

print_r($Informationsystem_Controller_Show->group);

$Informationsystem_Controller_Show
->informationsystemItems()
->queryBuilder()
         //->where('datetime', '=', '2013-12-30 17:29:40');
         ->having(Core_Querybuilder::expression("DATETIME
         BETWEEN  '".date('Y-m-d',strtotime($sortDay .' -'.$period.' day'))."'
         AND  '".date('Y-m-d',strtotime($sortDay))." 23:59:59'"), '=', 1);

         
$Informationsystem_Controller_Show
->xsl(
Core_Entity::factory('Xsl')->getByName('ВыводСпискаЭлементовРаздела')
)
->groupsMode('none')
->itemsForbiddenTags(array('text'))
->itemsProperties(TRUE)
->group(FALSE)
->limit(3);


$Informationsystem_Controller_Show->show();
}?>



Но пока что не получается зацепиться за какой-либо параметр, что текущая страница, это корневая для раздела
http://rospers.ru/politics
или же это конкретный элемент инфосистемы
http://rospers.ru/politics/the-officials-agreed-on-measures-on-strengthening-of-cross-border-internet-trade

на обоих страницах
print_r($Informationsystem_Controller_Show);
  выдает одинаковый массив, (ну почти, там даты отличаются.)

Соответственно я хотел определять, что это корневая или конкретная статья и менять макет и xsl-шаблон
Core_Page::instance()->template(
          Core_Entity::factory('Template', 23)
       );

$Informationsystem_Controller_Show
->xsl(
Core_Entity::factory('Xsl')->getByName('ВыводСпискаЭлементовРаздела')
)

etc. etc.


print_r($Informationsystem_Controller_Show->item)

вообще ничего не выводит.

print_r($Informationsystem_Controller_Show->group)

выводит 0 в обоих случаях.

#
Re: Как в xslt GET переменную получить?
Почти все получилось, но теперь не могу полученное значение текста завернуть в xml.
Т.е. получилось добраться до $Informationsystem_Controller_Show->item и определять, что текущая страница является корнем раздела, или же статьей. Но статья выводится без текста. Приходится делать подзапрос.


Вот этот код извлекает содержимое информационного элемента
if ($Informationsystem_Controller_Show->item){
  $oInformationsystem_Item = Core_Entity::factory(
    'Informationsystem_Item',
    $Informationsystem_Controller_Show->item
  );
  //print_r($Informationsystem_Controller_Show->item);
  //выводится ID информационного элемента: 362
}




Этот код добавляет в xml-вывод извлеченный текст.
$Informationsystem_Controller_Show->addEntity(
Core::factory('Core_Xml_Entity')->name('text')->value($oInformationsystem_Item->text)
);



Остается одна проблема, фрагмент запихивается в структуру
<informationsystem id="24">
      <text>blabla</text>



А мне нужно, что бы текст добавлялся немного глубже в структуру xml, где он изначально содержался, когда страница генерилась через типовую динамическую страницу:
<informationsystem id="24">
    <informationsystem_item id="362">
        <text>blabla</text>


Как можно в таком случае обратиться к ->addEntity( что бы как надо xml формировался?
Авторизация