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

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

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


Темы - 31rus

Страницы: [1]
1
Шаблоны 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);

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

2
Шаблоны 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>

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

4
Есть несколько языковых версий, в каждой одинаковая структура с идентичными url страницами

Для облегчения управлением сайтом, требуется получать поля из основной языковой версии.

Протокол Upage позволяет получить по id и пути, но посколько url идентичны, то выводится данные из текущего языка.
Как без кастом макросов решить данную проблему?

Например
http://wbhcambodia.com/ru/our-rooms/
Имеется Grop[@name='slider'], что бы не вставлять в другие языки заново фото, вывести данную группу из основного языка

5
Возник вопрос вставки формы обратной связи, в TPL это решалось вставкой нужном месте макроса webforms add()
В XSLT не проходит такой вариант, точнее TPL макрос отрабатывает, но не хочется использовать его. Вставка udata://webforms/add/ не даст результата, так же как и <![CDATA[<xsl:apply-templates select="document('udata://webforms/add/')/udata"/>]]>

Как решается данная проблема?
Я могу написать условие проверки страницы по адресу, типу и прочее. могу конечно добавить в админку поле и по нему провести проверку, но это не даст гибкости когда форма должна быть выведена в середине контента страницы(

6
Была тема уже на основе модальных окон, но без ajax, продолжу тему.
Я сейчас пытаюсь сделать это через ajax запрос.
На главной странице вывожу блок отвечающий за вызов предпросмотра
<a  id="{@id}"
            class="quick-view"
            href="#">
            <span>Предпросмотр</span>
         </a>
Добавил в файл _common.js
jQuery('li a.quick-view').click(function() {
      var id = $(this).attr("href");
      jQuery.ajax({
         url: "/upage//" + id + "/?transform=modules/catalog/quick-view.xsl",
         dataType: 'html',
         success: function (data) {
            site.message({
               id: 'quick_view_' + id,
               header: 'Быстрый просмотр',
               width: 400,
               content: data,
               async: false
            });

         }
      });

      return false;
   });
Вываливается ошибка
------------------
Notice: Undefined offset: 0 in /home/a0018423/domains/a0018423.xsph.ru/public_html/classes/system/subsystems/cmsController/cmsController.php on line 2
Страницы контента Лучшие предложения Лучшие предложения <p>Наверху расположены поля для редактирования метаинформации. Описание этих свойств можно почитать в разделе "Редактирование страниц".</p>
 <p>Если страница отмечена как Активная, то она будет выведена на сайте. Если эта отметка снята, то страница не будет показана посетителям.</p>
 <p>Далее расположены области для визуального редактирования текста страницы. Возможности редактирования описаны в руководстве.</p> 26 26
--------------------
Тут он содержимое главной страниц, хорошо пробую указать сразу id товара
url: "/upage//2394/?transform=modules/catalog/quick-view.xsl",

содержимое файла quick-view.xsl
<?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:apply-templates select="udata" mode="object-views" />
   </xsl:template>
   <xsl:template match="udata" mode="object-views">
   ыапывапывапыва
<xsl:value-of select="page/@id"/>
<xsl:value-of select="//property[@name='photo']/value"/>
   </xsl:template>
</xsl:stylesheet>

так вот текст выводиться, а все остальное нет.
Ваши мысли по данному поводу?

7
Шаблоны XSLT / Форма авторизации в корзине
« : 27 Августа 2015, 22:45:29 »
Пытаюсь решить проблему, требуется вывести форму авторизации для гостя или контактной информации в корзине товаров.
Вывод <xsl:apply-templates select="/result/user" /> не дает ничего.
<xsl:apply-templates select="document('udata://users/auth/')/udata" /> выводит только для зарегистрированых посетителей, если гость то выводит ( /emarket/cart/)
Что не так с моей логикой?

8
Требуется вывести с разным оформлением предпоследнюю и последнюю категорию каталога на основе demodizzy.
Возможно это реализовать только средствами XSLT?

Смысл, если это не предпоследняя или последняя, то только названия, а если предпоследняя то вывести по 5 товаров из всех вложенных в нее последних категорий, а если последняя то просто все товары. Сломал голову уже всю, считаю по родителям (<xsl:template match="/result[@method = 'category'][count(/result/parents/page) &gt; 1]">), но не везде одинаковое количество уровней вложенности(

Первая
 Вторая
  Предпоследняя
   Последняя категория
     |
    ├─ товар
    └─ товар
   Последняя категория
     |
    ├─ товар
    └─ товар
Первая
  Предпоследняя
   Последняя категория
    |
   ├─ товар
   └─ товар

Заранее спасибо всем!

9
Добрый день, всем.
Туплю несколько дней над проблемой.
Нужно вывести на главной странице сайта только новости с определенным сюжетом.
На ум приходит использование news related_links() но изначально мы знаем только сюжет но не id новости от которой можем оттолкнуться.

Вкратце смысл задачи, есть сайт с доменами 3 уровня, на каждом из них есть акции которые могут повторятся на разных доменах, что бы не создавать в каждом домене отдельную новость, создаем на главном домене 1 новость и полем множественный выпадающий список выбираем привязку (так же/или как и сюжеты новости).

накидал макрос, но он не работает:(

public function subject ($subject) {
  $pages = new selector('objects');
           $pages->types('object-type')->id(116); // справочник
  $i = 0;
  foreach($pages as $page){
      $subject = $page->getValue('subject');
      if (!empty($subject)) {

  foreach ($subject as $element) {
      $name = umiObjectsCollection::getInstance()->getObject($element)->getName();
      if ($name == $subject) {
  $require_id[$i] = $page->id;
  $require_name[$i] = $page->name;
                  $i++;
      }  
          }
      }
  }
  for ($a = 0; $a < $i; $a++) {
      $item_arr['attribute:id']=$require_id[$a];
      $item_arr['node:value']=$require_name[$a];
      $items[] = $item_arr;
  }
  $block_arr['items']['nodes:item'] = $items;
  return $block_arr;
}
Может я уже смотрю на проблему однобоко и есть более простое решение?

10
Имеем такую структуру:
Раздел 1
   Раздел 1.1
      Объект 1 Дополнительное поле в шаблонах данных выпадающий список=1
      Объект 2 Дополнительное поле в шаблонах данных выпадающий список=3
      Объект 3 Дополнительное поле в шаблонах данных выпадающий список=1
   Раздел 1.2
      Объект 1 Дополнительное поле в шаблонах данных выпадающий список=1
      Объект 2 Дополнительное поле в шаблонах данных выпадающий список=2
      Объект 3 Дополнительное поле в шаблонах данных выпадающий список=3
   Раздел 1.3
      Объект 1 Дополнительное поле в шаблонах данных выпадающий список=1
      Объект 2 Дополнительное поле в шаблонах данных выпадающий список=1


Так как же вывести что бы было так:
Раздел 1
   Раздел 1.1
      Объект 1 Дополнительное поле в шаблонах данных выпадающий список=1
      Объект 3 Дополнительное поле в шаблонах данных выпадающий список=1
   Раздел 1.2
      Объект 1 Дополнительное поле в шаблонах данных выпадающий список=1
   Раздел 1.3
      Объект 1 Дополнительное поле в шаблонах данных выпадающий список=1
      Объект 2 Дополнительное поле в шаблонах данных выпадающий список=1

Делаю на TPL шаблонах.
Написал кастомный макрос который вставляю в
$FORMS['objects_block_line'] = <<<END
%custom myselect()%
END;

$pages = new selector('pages');
      $pages->types('hierarchy-type')->name('catalog', 'object');
      $pages->where('hierarchy')->page($id)->childs(1); //передаю сюда category_id
      $pages->where('sp')->equals('vip'); //условие по которому отбираю
      foreach($pages as $page) {
      echo $page->link;
      }
Так выводит все отобранные объекты.

Тут первая засада, echo нас не устраивает, так как требуется return, но он выводит только 1 объект.

Попробовал так же USEL но результаты схожие примерно.

Во всех вариантах как правило происходит следующее, или выводится во всех подразделах одини и теже варианты, равные количеству найденных объектов, или выводит все в первом разделе.

Где я косячу? Уже неделю сижу с этим вопросом:(

11
На сайте http://wiki.umisoft.ru/Мультиязычность_-_перевод_выпадающих_списков есть статья о выводе выпадающих списков для разных языковых версий, кто нибудь может на пальцах объяснить как это?
Перед его использованием необходимо открыть на редактирование справочник, в который необходимо добавить переводы полей (модуль "Шаблоны данных" - "Справочники"). В справочник необходимо добавить группу полей, а также поля с идентификатором = префиксу языковой версии сайта, допустим: en, fr, de, сам тип поля выбираем "Строковый". Далее необходимо открыть содержимое справочника и для каждого элемента прописать переводы, в только что созданных полях.
я не в силах понять что писали разработчики. Какие поля и куда писать?

12
Здравствуйте. Прошу помоши у всех кто может дать дельный совет. Требуется создать портал типа желтых страниц, множество объектов каталогах разделенных по районам и городам. На этапе проектирования структуры столкнулся с проблемой. Суть следующая:
На базе каталога в umi будут заносится карточки предприятий. В области 4 районых центра в каждом N количество городов. В каталоге 5 корневых разделов в каждом из которых по N количеству подразделов с несколькими уровнями вложенности. 2 домена или языковых версий.
Все бы ничего если бы одно предприятие могло быть только в одном городе или районе, но может быть и такое что филиалы могут находится в разных местах (городах, районах), а также предприятия без адреса или чей адрес не важен, например радиостанция, она должна всегда показываться вне зависимости от какой район или город.
На ум приходит несколько решений:
1. В качестве корневых разделов использовать районы, а дальше фильтровать по полю город. Те объекты которые имеются в смежных районах, делать виртуальную копию.
2 Создавать разделы и объекты каталога как есть, создавать поля регионов и городов  в необходимом количестве, пользователю все вываливать одним списком в конкретном разделе а фильтрацию возложить на jquery тем самым снизить нагрузку на сервер.
3 Создать аналог второго, но все отбирать через selector, беря за основу сортировки выбранный регион и город пользователем или выводить все если ничего не выбрано.

И в довесок как лучше на ваш взгляд организовать информацию на разных языках?

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