Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - 31rus

Страницы: [1] 2 3 4
1
Шаблоны XSLT / Re: Google map API при помощи transform
« : 21 Декабря 2016, 10:01:21 »
Вот только не понятно почему так происходит только в сафари и только через трансформацию((((
Да и еще один скрипт не работает в сафари(((

2
Шаблоны XSLT / Re: Google map API при помощи transform
« : 20 Декабря 2016, 13:37:37 »
В сафари выдает ошибку TypeError: null is not an object (evaluating 'f.style.height="100%"')
В хроме работает, это я 3 дня не в ту сторону копал получаеться)))

3
Шаблоны XSLT / Re: Google map API при помощи transform
« : 20 Декабря 2016, 13:14:58 »
С делал еще проще, вставил пример как есть
<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet   version="1.0"
                   xmlns="http://www.w3.org/1999/xhtml"
                   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                   xmlns:date="http://exslt.org/dates-and-times"
                   xmlns:udt="http://umi-cms.ru/2007/UData/templates"
                   xmlns:xlink="http://www.w3.org/TR/xlink"
                   exclude-result-prefixes="xsl date udt xlink">

    <xsl:output encoding="utf-8" method="html" indent="yes" />
    <xsl:template match="/">
        <xsl:text disable-output-escaping="yes">&lt;!DOCTYPE html&gt;
</xsl:text>
        <html>
            <head>
                <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>



            </head>
            <body>

                    <div id='map' style='height:444px;width:520px;'></div>
                <script>

                    var map;
                    function initMap() {
                    map = new google.maps.Map(document.getElementById('map'), {
                    center: {lat: -34.397, lng: 150.644},
                    zoom: 8
                    });
                    }

                </script>
                <script src='https://maps.googleapis.com/maps/api/js?v=3.exp&amp;key=AIzaSyDsCRTkkT4xZOD4sk8CkMdO9qxjqruP7y8&amp;callback=initMap'></script>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>
При вызове через трансформацию шаблона ошибки, если вставить код в HTML статический все работает((((

4
Шаблоны XSLT / Re: Google map API при помощи transform
« : 20 Декабря 2016, 12:46:33 »
Не имеет значения, ошибка возникает в обработке JS(
Сейчас взял пример Google, вылезает ошибка initMap is not a function

5
Шаблоны XSLT / Re: Google map API при помощи transform
« : 20 Декабря 2016, 12:38:15 »
Вы вставляете в IFRAME в виде http://site.ru/upage/7?transform=modules/content/map.xsl или только upage//7?transform=modules/content/map.xsl ? Если второй вариант - то это не сработает
В iframe но даже если я в браузере вызываю трансформацию шаблона, то тоже не отрабатывает(
http://nautilus-boat.com/upage//7?transform=modules/content/map.xsl

6
Шаблоны XSLT / Google map API при помощи transform
« : 20 Декабря 2016, 12:28:22 »
Нужна помощь, пытаюсь создать iframe окно.
Есть файл который вызывается upage//7?transform=modules/content/map.xsl

Содержимое файла следующее
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet SYSTEM "ulang://i18n/constants.dtd:file">
<xsl:stylesheet version="1.0"
                xmlns="http://www.w3.org/1999/xhtml"
                xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                xmlns:date="http://exslt.org/dates-and-times"
                xmlns:udt="http://umi-cms.ru/2007/UData/templates"
                xmlns:xlink="http://www.w3.org/TR/xlink"
                exclude-result-prefixes="xsl date udt xlink">

    <xsl:output method="html" encoding="utf-8"/>
    <xsl:template match="udata">
        <xsl:text disable-output-escaping="yes">&lt;!DOCTYPE html&gt;
</xsl:text>
        <html>
            <head>
                <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
                <script src='https://maps.googleapis.com/maps/api/js?v=3.exp&amp;callback=initialize&amp;key=AIzaSyDsCRTkkT4xZOD4sk8CkMdO9qxjqruP7y8'></script>
            </head>
            <body>
                <script src='/templates/boat/js/maps.js'></script>
                <div style='overflow:hidden;height:444px;width:520px;'>
                    <div id='gmap_canvas' style='height:444px;width:520px;'></div>
                </div>
            </body>
        </html>
    </xsl:template>

</xsl:stylesheet>

Код JS

function initialize(element_id, lat, lng)
{
    var zoom = 10;

    var mapLocation = new google.maps.LatLng(lat, lng);
    var mapOptions =
    {
        center: mapLocation,
        zoom: zoom
    };

    var map = new google.maps.Map(document.getElementById(element_id), mapOptions);
}
initialize('gmap_canvas', 52.56, 10.3);

Но в результате, на странице ничего не выводиться. Если просто вставить данный код в шаблон, то все отрабатывает.

7
Шаблоны XSLT / Re: Вызов result с конкретный ID
« : 12 Ноября 2016, 08:56:35 »
Вызовы и уточнения шаблонов я умею делать, вопрос как обработать уточняющий шаблон когда id страницы заранее не известен.

Еще раз попробую сформулировать задачу, есть лендинг страница.
Все блоки в ней представлены как страницы сайта с разными типами данных.
Сейчас приходиться получать все страницы первого уровня и на базе меню описывать логику обработки.

Например в секции Item в меню делаем разбор по типам данных
 <xsl:choose>
        <xsl:when test="$type_name = 'Промо видео'">
            <xsl:apply-templates
                    select="document(concat('udata://photoalbum/album/(', $upage/@id,')'))"
                    mode="bg-video"/>
        </xsl:when>
        <xsl:when test="$upage/basetype/@module = 'photoalbum'">
            <xsl:apply-templates
                    select="document(concat('udata://photoalbum/album/(', $upage/@id,')'))"
                    mode="content"/>
        </xsl:when>
        <xsl:when test="$type_name = 'Отзывы'">
            <xsl:apply-templates
                    select="document(concat('udata://news/lastlist/(', $upage/@id,')/notemplate/10/0'))/udata"
                    mode="testimonials"/>
        </xsl:when>
        <xsl:when test="$upage/basetype/@module = 'webforms'">
           
        </xsl:when>
        <xsl:when test="$type_name = 'Страница с описанием'">
            <xsl:call-template name="content-inner">
                <xsl:with-param name="upage" select="$upage"/>
            </xsl:call-template>
        </xsl:when>
        <xsl:otherwise>
            <xsl:call-template name="content">
                <xsl:with-param name="upage" select="$upage"/>
            </xsl:call-template>
        </xsl:otherwise>
    </xsl:choose>

Но такой вариант не удобен и лишает гибкости, поэтому если можно было бы, передать системе просто вызов result с указанием Id нужной страницы, а далее система сама решала бы, какой перед ней тип данных и вызывала бы уже стандартные шаблоны для него.

То тогда в layots\default.xsl мы бы просто написали  запись типа
<xsl:for-each select="document(concat('usel://menu/', 1))/udata/page">
<xsl:apply-templates select="result[page/@id= id текущей страницы]" />
</xsl:for-each>

8
Шаблоны XSLT / Вызов result с конкретный ID
« : 02 Ноября 2016, 06:38:35 »
Есть ли возможность вызвать шаблон <xsl:apply-templates select="result" /> для страницы с определенным ID

Мне часто требуется делать лендинги, сейчас я использую несколько вариантов выборок.
Меню, Usel и дальше choose и далее по типу данных или по его имени я вывожу страницы по нужным шаблонам.

Но меня не покидает идея, а реально ли на страницы layouts/default перебором получить все ID страниц и просто применить для каждой из них вывод result, что бы система сама дальше определяла какой передней тип данных и вызывала шаблоны в которых уже были бы уточнения.

Для Заголовков в Демодизи есть такой шаблон:
   <xsl:template match="result[@pageId]" mode="header">
      <h2 umi:element-id="{@pageId}" umi:field-name="h1" umi:empty="&empty-page-name;">
         <xsl:value-of select="@header" />
      </h2>
   </xsl:template>
Его назначение мне не совсем понятно, так как есть:
   <xsl:template match="result" mode="header">
      <h2 umi:element-id="{@pageId}" umi:field-name="h1" umi:empty="&empty-page-name;">
         <xsl:value-of select="@header" />
      </h2>
   </xsl:template>

9
это ошибка новой версии  2.12
Я тоже бьюсь с данной проблемой под Виндовс 10
На маке такой проблемы нет, так как пути аналогичны UNIX

10
А какой смысл делать выборку usel ради одной страницы?
Upage должен решить мою задачу, вопрос почему он не хочет отрабатывать корректно?

Используя Upage также происходит выборка и теоретически она будет работать в рамках текущей языковой версии т.е. не получить в EN страницу RU (не проверял, могу ошибаться).

Я предлагаю Usel т.е. вместо выборки которую реализует протокол Upage использовать Usel полностью полностью контролируемую выборку с возможностью оптимизировать запрос под задачу. Так же, в данном случае, это лучшая альтернатива реализации кастомнного метод в котором тоже придется решать через выборку,

А как мы через USEL это можем получит, ну найти потомков от текущей страницы, понятно.
Но поля мы не получим, нам все равно нужен будет Upage потом, для обработки результатов выдачи?
Или я что то не понимаю(

11
набросал кастом

public function getLanguageId($url, $lang_prefix)
                {
                              
                     $pattern = "/\/$lang_prefix/";
                      $lang_prefix_new = preg_replace($pattern,'' ,$url);
                   
                      $hierarchy = umiHierarchy::getInstance();
                      //Получим id страницы по ее url'у
                     $elementId = $hierarchy->getIdByPath($lang_prefix_new);
                     
                      return "$elementId";
                 }   

Но все равно возвращает id из текущей языковой версии(   

12
Шаблоны XSLT / Upload файла посетителем на XSLT
« : 19 Января 2016, 13:01:12 »
Как реализовать на XSLT подобное, интересует именно загрузка файла, секция [upload_file]
http://wiki.umisoft.ru/Закачка_файла_посетителем_на_странице_сайта
В админке создана страница с типом данных "Скачиваемый файл", требуется предоставить возможность посетителю сайта, на прямую со страницы сайта, дать возможность загружать файл.

13
Мне тоже интересно, для меня актуален

14
А какой смысл делать выборку usel ради одной страницы?
Upage должен решить мою задачу, вопрос почему он не хочет отрабатывать корректно?

Используя Upage также происходит выборка и теоретически она будет работать в рамках текущей языковой версии т.е. не получить в EN страницу RU (не проверял, могу ошибаться).

Я предлагаю Usel т.е. вместо выборки которую реализует протокол Upage использовать Usel полностью полностью контролируемую выборку с возможностью оптимизировать запрос под задачу. Так же, в данном случае, это лучшая альтернатива реализации кастомнного метод в котором тоже придется решать через выборку,

Спасибо за идею и не только за эту!
Ну я не специалист конечно, но мне кажется что, при варианте с Usel сначала происходите выборка страницы с учетом требований, а потом результат обрабатывается, вто время как при Upage сразу обрабатываем полученные результат, разве это не так?

На данном проекте это не критично, а вот с проектом тысяч на 10 страниц, может быть серьезным приростом в скорости.

15
ага, точно upage выводит из текущей языковой версии, даже и не знал об этом, тогда я бы написал кастомный метод, те же манипуляции с адресом, а потом по адресу получаешь id страницы с помощью метода getidbypath, ну а дальше можешь id через upage или сразу через extGroups

Цитировать
Решил получить ID страницы из основного языка <xsl:value-of select="document(concat('upage://(',substring-after(result/page/@link, result/@pre-lang),')'))/result/@pageId"/>
В выводе отсутсвует ID

upage не отдает result, там udata/page/@id

Сильно не меняет это решения проблемы, что за странность с upage(

Страницы: [1] 2 3 4