то есть вы написали свой кастом? или вы все же пользуетесь usel протоколом?
как вы вызываете эти данные (и какой технологией в шаблоне или через js или еще как) какие данные к вам приходят и что вы хотите получить в итоге?
У меня написан скрипт, который обращается к результату который выдаёт usel протокол, просто сторонний файл с file_get_contents()
Приходят ко мне данные такие:
<?xml version="1.0" encoding="utf-8"?>
<udata xmlns:xlink="http://www.w3.org/TR/xlink" module="usel" method="get-page" generation-time="0.027290">
<page id="78" parentId="75" link="/menu/salad/russkij_raznosol/" is-active="1" object-id="389" type-id="111" update-time="1346213250" alt-name="russkij_raznosol" xlink:href="upage://78">
<basetype id="24" module="news" method="item">Новости</basetype>
<name>Русский разносол</name>
</page>
<total>1</total>
</udata>
<!-- This page generated in 0.150447 secs -->
Но в этих данных нет значений полей, или картинки.
Я тут ещё нашёл фреймворк uf.php, насколько я понял, я могу в соседней директории создать приложение, обращаться к фреймворку, брать данные из БД даже без протокола usel, и получать все данные, а потом в шаблоне подключить этот скрипт?! Как подключаются сторонние скрипты, с помощью какой команды xslt?
Оу-оу-оу какой-то очень обходной путь вами выбран.
Подытожим, вам надо своим макросом сделать выборку и как-то обработать результаты выборки. Я правильно вас понял?
Если да, то пишите макрос например в файле /classes/modules/custom.php (данный макрос не будет требовать разрешений на свое выполнение) и там уже работаем с выборкой средствами API
Вам нужен selector или umiSelection (в чем разница я описывал в одной из статей на сайте umihelp.ru (http://umihelp.ru)). Документацию по selector ищите на wiki.umisoft.ru , а документацию по umiSelection (http://umiSelection) ищите на api.umi-cms.ru (http://api.umi-cms.ru)
после того как разберетесь как делать запрос и получить массив данных, вам надо перебрать этот массив и получив id страницы (если вы работали через umiselection, так как selector сразу возвращает страницу) получить по ней саму страницу(пусть страница будет в итоге храниться в переменной $page)
Из страницы вы можете вытянуть значение любого поля, допустим у вас есть поле Фотография (fotografia), тогда чтобы получить значение данного поля пишем следующее:
$page->fotografia; или $page->getValue('fotografia');
подробнее смотрите тут
Написал я кастомный метод, всё работает, выборку пока не делал:
<?php
class custom extends def_module {
public function cms_callMethod($method_name, $args) {
return call_user_func_array(Array($this, $method_name), $args);
}
public function __call($method, $args) {
throw new publicException("Method " . get_class($this) . "::" . $method . " doesn't exists");
}
//TODO: Write your own macroses here
public function cassa()
{
//Устанавливаем время.
date_default_timezone_set("Etc/GMT-11");
$date = date('Hi');
$dir = dirname(dirname(dirname(__FILE__))).'/files/pay/';
//Получаем список всех файлов.
$files = scandir($dir);unset($files[0]);unset($files[1]);
$data = array();
//Фильтруем.
foreach($files as $f)
{
if(substr($f,0,4)<=$date)
{
$data[] = $f;
}
}
//Выбираем последний из массива.
$last = (count($data)-1);
//Проверка на количество подходящих файлов
if(count($data)==0)
{
$file = "index.html";
}
else
{
$file = $data[$last];
}
//Проверяем существование файла и парсим.
if(file_exists($dir.$file))
{
//Подключаем парсер.
include_once('simple_html_dom.php');
//Открываем файл и ищем данные.
$html = file_get_html($dir.$file);
$id = $html->find("span.STL8");
$name = $html->find("span.STL9");
$num = $html->find("span.STL10");
$price = $html->find("span.STL12");
//Отчищаем данные от html
for($i=0;count($id)>$i;$i++)
{
$id[$i] = strip_tags($id[$i]);
$name[$i] = strip_tags($name[$i]);
$num[$i] = strip_tags($num[$i]);
$price[$i] = strip_tags($price[$i]);
}
$order = substr_replace(strip_tags($html->find("span.STL0",0)),"Заказ",0,3);
$time = substr(strip_tags($html->find("span.STL1",0)),11,16);
$list.= "<ul>\n";
for($i=0;count($id)>$i;$i++)
{
$list.= "
<li>
<img src='/image/".$id[$i].".jpg' width='150' alt='".$name[$i]."' /><br/>
<p>Количество: ".number_format($num[$i])." шт.</p>
<p>".$name[$i]."</p>
<p>Сумма: ".$price[$i]." руб.</p>
</li>
";
}
$list.= "</ul>";
return $list;
}
else
{
echo('Ничего не заказывали');
}
}
};
?>
Но вот при вызове в шаблоне:
<xsl:value-of select="document('udata://custom/cassa/')/udata" />
Ничего не происходит! Что делать?)
$result = '<udata mode=\"cache\"><![CDATA['.$list.']]></udata>';
return $result;
Не проканало. Выдаёт ту же ошибку, только внутренностей udata нет.
<?xml version="1.0" encoding="utf-8"?>
<udata xmlns:xlink="http://www.w3.org/TR/xlink" module="custom" method="cassa" generation-time="0.004889">
$result = '<![CDATA['.$list.']]>';
return $result;
Попробовал так, на выходе всё равно получаю:
<?xml version="1.0" encoding="utf-8"?>
<udata xmlns:xlink="http://www.w3.org/TR/xlink" module="custom" method="cassa" generation-time="0.019859"><![CDATA['.<ul>
<li>
<img src='/image/164.jpg' width='150' alt='