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

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

*

disallow

  • *
  • 9
  • +0/-0
    • Просмотр профиля
Всем Доброго дня.
После прохождения Базового курса обучения работе с XSLT шаблонами решил попробовать их прикрутить. Столкнулся с проблемой:
Добавляю в систему 2 баннера.
Хочу вывести их в браузер один за другим в одно и тоже место. Пишу такой шаблон:
<div>
<xsl:apply-templates select="document('udata://banners/fastInsert/(main_banner)')/udata" mode='main_banner'/>
</div>

<xsl:template match="banner[@type='image']" mode="main_banner">
  <xsl:variable name="banner-url" select="document(concat('/banners/go_to/', ../@id, '/'))" />
    <a href="{$banner-url}" title="{./alt}">
    <xsl:if test="./@target">
      <xsl:attribute name="target">
        <xsl:value-of select="./@target" />
      </xsl:attribute>
    </xsl:if>
    <img src="{./source}" alt="{./alt}" width="{./@width}" height="{./@height}" />
    </a>
</xsl:template>

Выводится то один, то другой. А как можно вывести оба?
Заранее спасибо.

*

admin

  • *****
  • 2416
  • +171/-1
    • Просмотр профиля
Re:Вывод нескольких баннеров в одно место
« Ответ #1 : 27 Сентября 2011, 01:01:55 »
ты прописал вывод баннеров для баннерного места main_banner, видимо оба банера ты назначил выводить на место main_banner,
если хочешь 2 баннера создай два баннерных места пропиши их в админке и баннерам назначь разные места для вывода (в админке)

как-то так у тебя получеться 2 банерных места main_banner1 и main_banner2, прописывай их в админке и вперед)
<div>
<xsl:apply-templates select="document('udata://banners/fastInsert/(main_banner1)')/udata" mode='main_banner'/>
</div>
<div>
<xsl:apply-templates select="document('udata://banners/fastInsert/(main_banner2)')/udata" mode='main_banner'/>
</div>

<xsl:template match="banner[@type='image']" mode="main_banner">
  <xsl:variable name="banner-url" select="document(concat('/banners/go_to/', ../@id, '/'))" />
    <a href="{$banner-url}" title="{./alt}">
    <xsl:if test="./@target">
      <xsl:attribute name="target">
        <xsl:value-of select="./@target" />
      </xsl:attribute>
    </xsl:if>
    <img src="{./source}" alt="{./alt}" width="{./@width}" height="{./@height}" />
    </a>
</xsl:template>

*

disallow

  • *
  • 9
  • +0/-0
    • Просмотр профиля
Re:Вывод нескольких баннеров в одно место
« Ответ #2 : 27 Сентября 2011, 14:25:51 »
Спасибо за ответ. Просто дело в том, что баннеры я вставляю в одно и тоже место с целью их использования в плагине jquery (карусель). Как быть в этом случае? Их вообще в одно место вывести нельзя?

*

admin

  • *****
  • 2416
  • +171/-1
    • Просмотр профиля
Re:Вывод нескольких баннеров в одно место
« Ответ #3 : 27 Сентября 2011, 15:33:01 »
баннер выводиться на какое-то место если ты указываешь несколько баннеров на одно место система воспринимает это как блок ко сменяющимися баннерами, а что за jQuery использование?

*

disallow

  • *
  • 9
  • +0/-0
    • Просмотр профиля
Re:Вывод нескольких баннеров в одно место
« Ответ #4 : 27 Сентября 2011, 16:31:29 »
Я имею в виду, что у меня есть один div. Я в него помещаю 2 баннера из UMI. А затем используя вот этот плагин - http://cssglobe.com/lab/easyslider1.7/01.html вывожу эти баннеры что бы они прокручивались.

*

admin

  • *****
  • 2416
  • +171/-1
    • Просмотр профиля
Re:Вывод нескольких баннеров в одно место
« Ответ #5 : 27 Сентября 2011, 20:13:55 »
ну так никаких проблем. Вам для работы слайдера надо получить вот такой код
<div id="slider">
<ul>
<li><a href="http://templatica.com/preview/30"><img src="images/01.jpg" alt="Css Template Preview" /></a></li>
<li><a href="http://templatica.com/preview/7"><img src="images/02.jpg" alt="Css Template Preview" /></a></li>
<li><a href="http://templatica.com/preview/25"><img src="images/03.jpg" alt="Css Template Preview" /></a></li>
<li><a href="http://templatica.com/preview/26"><img src="images/04.jpg" alt="Css Template Preview" /></a></li>
<li><a href="http://templatica.com/preview/27"><img src="images/05.jpg" alt="Css Template Preview" /></a></li>
</ul>
</div>

делаете так

<div id="slider">
<ul>
                  <xsl:apply-templates select="document('udata://banners/fastInsert/(main_banner1)')/udata" mode='main_banner'/>
                  <xsl:apply-templates select="document('udata://banners/fastInsert/(main_banner2)')/udata" mode='main_banner'/>
         </ul>
</div>

<xsl:template match="banner[@type='image']" mode="main_banner" />
<xsl:template match="banner[@type='image' and source]" mode="main_banner">
  <xsl:variable name="banner-url" select="document(concat('/banners/go_to/', ../@id, '/'))" />
    <li><a href="{$banner-url}" title="{./alt}">
    <xsl:if test="./@target">
      <xsl:attribute name="target">
        <xsl:value-of select="./@target" />
      </xsl:attribute>
    </xsl:if>
    <img src="{./source}" alt="{./alt}" width="{./@width}" height="{./@height}" />
    </a></li>
</xsl:template>

и подключаете вашу карусель, баннеры вертятся

*

disallow

  • *
  • 9
  • +0/-0
    • Просмотр профиля
Re:Вывод нескольких баннеров в одно место
« Ответ #6 : 28 Сентября 2011, 10:24:15 »
Спасибо большое за помощь все получилось.

*

shoto

  • ***
  • 233
  • +4/-0
    • Просмотр профиля
Re:Вывод нескольких баннеров в одно место
« Ответ #7 : 23 Июля 2014, 13:06:40 »
Вопрос про размещение 3-х банyеров одновременно.
В админке создано 3 расположения в шаблоне "center_block_l", "center_block_с", "center_block_r"

В шаблоне в нужных местах вызываются соответственно:
<xsl:apply-templates select="document('udata://banners/fastInsert/center_block_l/')/udata" mode="center"/>
<xsl:apply-templates select="document('udata://banners/fastInsert/center_block_c/')/udata" mode="center"/>
<xsl:apply-templates select="document('udata://banners/fastInsert/center_block_r/')/udata" mode="center"/>
Созданным баннерам присвоено место демонстрации.
Но почему порой один и тот же баннер отображается и в месте "center_block_с" и на месте "center_block_r"?

*

admin

  • *****
  • 2416
  • +171/-1
    • Просмотр профиля
Re:Вывод нескольких баннеров в одно место
« Ответ #8 : 23 Июля 2014, 13:30:33 »
возможно у вас для данного места, назначено несколько баннеров, плюс стоит галочка "выводить рандомно", в итоге при генерации баннера для конкретного баннероного места, система может вывести одинаковые баннеры.

*

shoto

  • ***
  • 233
  • +4/-0
    • Просмотр профиля
Re:Вывод нескольких баннеров в одно место
« Ответ #9 : 23 Июля 2014, 15:46:58 »
возможно у вас для данного места, назначено несколько баннеров, плюс стоит галочка "выводить рандомно", в итоге при генерации баннера для конкретного баннероного места, система может вывести одинаковые баннеры.
Всего 3 баннера. и всем трем проверено, присвоено свое место.
А где базируется галочка "Выводить рандомно"? а то что то найти не могу.

*

admin

  • *****
  • 2416
  • +171/-1
    • Просмотр профиля
Re:Вывод нескольких баннеров в одно место
« Ответ #10 : 23 Июля 2014, 16:01:05 »
там, где баннерные места задаются

*

shoto

  • ***
  • 233
  • +4/-0
    • Просмотр профиля
Re:Вывод нескольких баннеров в одно место
« Ответ #11 : 23 Июля 2014, 16:05:43 »
там, где баннерные места задаются
"Случайный баннер" это называется в админке, и там все галочки сняты. Но тем не менее...

*

admin

  • *****
  • 2416
  • +171/-1
    • Просмотр профиля
Re:Вывод нескольких баннеров в одно место
« Ответ #12 : 24 Июля 2014, 09:44:03 »
итак проверим еще раз изначальные установки:

- у нас 3 баннерных места, которые выводятся на сайте 3 вызовами
- у нас есть 3 баннера, которые назначены строго на одно баннерное место (то есть в поле place у них разные, не повторяющиеся значений)
- при выводе на сайте, один и тот же баннер выводится в разных "баннерных местах"

я правильно описал ситуацию?

*

shoto

  • ***
  • 233
  • +4/-0
    • Просмотр профиля
Re:Вывод нескольких баннеров в одно место
« Ответ #13 : 24 Июля 2014, 10:24:17 »
итак проверим еще раз изначальные установки:

- у нас 3 баннерных места, которые выводятся на сайте 3 вызовами
- у нас есть 3 баннера, которые назначены строго на одно баннерное место (то есть в поле place у них разные, не повторяющиеся значений)
- при выводе на сайте, один и тот же баннер выводится в разных "баннерных местах"

я правильно описал ситуацию?
Все верно.
При чем строгой логики что бы выводился только какой нибуд один из 3-х  - нет. Как минимум уже два повторялись.

*

31rus

  • *
  • 46
  • +2/-0
    • Просмотр профиля
Re: Вывод нескольких баннеров в одно место
« Ответ #14 : 16 Января 2016, 09:51:33 »
Проще воспользоваться макросом banners insert() с bList = true (http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/bannery/banners_insert/#content), Этот параметр позволяет вывести все баннеры, назначенные на указанное баннерное место. Только для XSLT-шаблонизатора.

document('udata://banners/insert/(место вывода банера)/0/true')/udata


Наверное не актуально уже, но другим пригодиться. Я сам не сразу обратил на него внимание, писал кастовым, переписывал вывод шаблонов, но потом наткнулся и понял что так проще. самое интересное что в demodizzy на xslt такая функция отсутствует, хотя в php umi выводит слайдер из одного места.

И как следствие все смотрят на макрос fastinsert а у него опция bList отсутствует.
« Последнее редактирование: 16 Января 2016, 09:54:30 от 31rus »