Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Модуль Меню - заголовки для блоков меню их поля "Название"

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 8
Просмотров: 7288
Последний ответ 06 Июня 2014, 12:06:35
от admin
Требуется по "клику" на элемент увеличить значение поля и показать значение

Автор tkalyuginaРаздел JS и AJAX

Ответов: 0
Просмотров: 1614
Последний ответ 02 Сентября 2016, 12:03:55
от tkalyugina
Тип поля "Состаное"

Автор SumrakrndРаздел Настройка системы и модулей

Ответов: 4
Просмотров: 2187
Последний ответ 28 Декабря 2016, 17:14:17
от Sumrakrnd
Задать значени поля тип "Составное"?

Автор muldyРаздел Custom макросы

Ответов: 5
Просмотров: 5267
Последний ответ 14 Апреля 2014, 21:20:45
от ilyar
Мультизагрузка файлов в поля "набор изображения"

Автор atachРаздел Настройка системы и модулей

Ответов: 0
Просмотров: 1313
Последний ответ 26 Апреля 2017, 19:26:48
от atach

0 Пользователей и 1 Гость просматривают эту тему.

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
скрипт в смысле js или php или еще какой? и что вы понимаете под сторонним скриптом? набор библиотек которые добаdляют какой-то функционал и которые надо подключить к системе?, доп функционал который разрабатывается средствами самой системы (API)? или сторонний сервис который возвращает какой-то ответ на какой-то запрос (типа EMS)?

*

chuikoff

  • *
  • 22
  • +0/-0
    • Просмотр профиля
    • Разработка сайтов
Re:Получение данных страницы по значению до&#
« Ответ #16 : 04 Сентября 2012, 06:43:18 »
php скрипт, который был написан отдельно, и который нужно вставить в сайт на umi, но при этом получить данные из БД и использовать их в этом скрипте.

А потом подключить этот скрипт в шаблоне, по типу include_once()
Я

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
тогда в самом скрипте делаете standalone вызов подключая тем самым ядро umi . Делаете там выборку, с которой проделываете все необходимые манипуляции силами данного скрипта, а затем вызываете данный скрипт из шаблона через uhttp протокол.
Uthhp - это тоже самое что и udata, только для работы с удаленными ресурсами. Хотя, опять же, если вам надо обезопасить результаты работы данного скрита, создаете макрос (в том же /classes/modules/custom.php), который обращается к добавленному вами скрипту, а сам скрипт закрываете от прямого обращения изменив ему chmod. А в шаблоне вызываете уже макрос из файла /classes/modules/custom.php..

Как-то так...

*

chuikoff

  • *
  • 22
  • +0/-0
    • Просмотр профиля
    • Разработка сайтов
Да, такой путь меня устраивает.

Доступ к скрипту через URL (если в корне разместить) закрыт .htaccess
В макрос его как подключить? include_once() ?

А как в шаблонизаторе xslt вызвать этот метод?
Я

*

chuikoff

  • *
  • 22
  • +0/-0
    • Просмотр профиля
    • Разработка сайтов
Написал я кастомный метод, всё работает, выборку пока не делал:

<?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" />

Ничего не происходит! Что делать?)
Я

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
проверь через адресную строку site_name.ru/udata/custom/cassa скрипт вообще возвращает хоть что-нибудь?

*

chuikoff

  • *
  • 22
  • +0/-0
    • Просмотр профиля
    • Разработка сайтов
This page contains the following errors:

error on line 2 at column 54: Encoding error
Below is a rendering of the page up to the first error.
Я

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
посмотри результат как html исходник, у тебя результат возвращается явно не в xml формате , а особенно строчка "echo('Ничего не заказывали');" , замени echo на return.

*

chuikoff

  • *
  • 22
  • +0/-0
    • Просмотр профиля
    • Разработка сайтов
<?xml version="1.0" encoding="utf-8"?>
<udata xmlns:xlink="http://www.w3.org/TR/xlink" module="custom" method="cassa" generation-time="0.027382">&lt;ul&gt;

               &lt;li&gt;
               &lt;img src='/image/164.jpg' width='150' alt='
Я

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
вот в принципе и причина.... ты пытаешься вернуть в xml кусок текста с тегами, либо экранируй их (почитай про CDATA), либо возвращай результат массивом, а не тегами, а потом его уже обрабатывай xsl шаблоном.

Думаю, для тебя проще и быстрее будет обвернуть конечную переменную $list в CDATA

*

chuikoff

  • *
  • 22
  • +0/-0
    • Просмотр профиля
    • Разработка сайтов
$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">
Я

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
$result = '<udata mode=\"cache\"><![CDATA['.$list.']]></udata>';
return $result;

это не совсем то что вам надо, скорее вот так подойдет

$result = '<![CDATA['.$list.']]>';
return $result;

или вот так return array('node:text'=>'<![CDATA['.$list.']]>');

но это еще проверят надо

*

chuikoff

  • *
  • 22
  • +0/-0
    • Просмотр профиля
    • Разработка сайтов
$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">&lt;![CDATA['.&lt;ul&gt;

&lt;li&gt;
&lt;img src='/image/164.jpg' width='150' alt='
Я

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
так
return array('node:text'=>'<![CDATA['.$list.']]>');

тоже пробовал?

*

chuikoff

  • *
  • 22
  • +0/-0
    • Просмотр профиля
    • Разработка сайтов
Да, тоже самое.
Я