UMIhelp

Разработка сайта на UMI.CMS => Настройка системы и модулей => Тема начата: aizul от 09 Декабря 2011, 20:55:55

Название: Решенео: Не отображается галерея. подскажите нубу.
Отправлено: aizul от 09 Декабря 2011, 20:55:55
В этой кмске пока не особо разбираюсь. В общем в админке добавил галерею, в tpl шаблоне она отображается, а в xslt нет.
В главном шаблоне галерею подключил:
Цитировать
<xsl:include href="modules/photoalbum.xsl" />

Вот файл photoalbum.xsl:
Цитировать
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet   version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:umi="http://www.umi-cms.ru/TR/umi">


   <xsl:template match="result[@module = 'photoalbum' and @method = 'album']">
      <xsl:apply-templates select="document('udata://photoalbum/album')/udata" />
   </xsl:template>
   
   
   <xsl:template match="udata[@module = 'photoalbum' and @method = 'album']">
      <ul class="photos" umi:module="photoalbum" umi:method="album" umi:element-id="{id}" umi:button-position="bottom left" umi:region="list" umi:sortable="sortable">
         <xsl:apply-templates select="items/item" />
      </ul>
   </xsl:template>
   
   <xsl:template match="udata[@module = 'photoalbum' and @method = 'album']/items/item">
      <xsl:variable name="item" select="document(concat('upage://', @id))/udata" />
      <xsl:variable name="photo" select="$item//property[@name = 'photo']/value" />
   
      <li umi:region="row" umi:element-id="{@id}">
         <img src="{$photo}" width="150" umi:field-name="photo" umi:delete="delete" />
      
         <a href="{@link}" umi:element-id="{@id}" umi:field-name="name" umi:empty="Enter photo name" umi:delete="delete">
            <xsl:value-of select="." />
         </a>
      </li>
   </xsl:template>
   
   
   <xsl:template match="result[@module = 'photoalbum' and @method = 'photo']">
      <xsl:variable name="photo" select="page//property[@name = 'photo']/value" />
      <img src="{$photo}" width="150" umi:field-name="photo" umi:element-id="{page/@id}" />
   </xsl:template>

</xsl:stylesheet>

Вот хтмл код того места, где должна выводиться фотка:
Цитировать
<img src="" width="150" umi:field-name="photo" umi:element-id="13">
Сильно только не пинайте  :)
Название: Re:Не отображается галерея. подскажите нубу.
Отправлено: admin от 10 Декабря 2011, 16:31:06
попробуй пониже
<xsl:variable name="photo" select="$item//property[@name = 'photo']/value" />

вывести такой код
<textarea col="10" row="20" >
<xsl:copy-of select="$item//property[@name = 'photo']" />
</textarea>

и ты увидишь, что то, что ты получаешь запросом $item//property[@name = 'photo']/value не существует, value вложен глубже (и кстати проверь что в value действительно содержится картинка).

Так что, чтобы вывести value делай так
<xsl:variable name="photo" select="$item//property[@name = 'photo']//value" />
Название: Re:Не отображается галерея. подскажите нубу.
Отправлено: aizul от 11 Декабря 2011, 11:44:52
Сейчас файл photoalbum.xsl такой:
Цитировать
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet   version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:umi="http://www.umi-cms.ru/TR/umi">


   <xsl:template match="result[@module = 'photoalbum' and @method = 'album']">
      <xsl:apply-templates select="document('udata://photoalbum/album')/udata" />
   </xsl:template>
   
   
   <xsl:template match="udata[@module = 'photoalbum' and @method = 'album']">
      <ul class="photos" umi:module="photoalbum" umi:method="album" umi:element-id="{id}" umi:button-position="bottom left" umi:region="list" umi:sortable="sortable">
         <xsl:apply-templates select="items/item" />
      </ul>
   </xsl:template>
   
   <xsl:template match="udata[@module = 'photoalbum' and @method = 'album']/items/item">
      <xsl:variable name="item" select="document(concat('upage://', @id))/udata" />
      <xsl:variable name="photo" select="$item//property[@name = 'photo']//value" />
   
      <li umi:region="row" umi:element-id="{@id}">
         <img src="{$photo}" width="150" umi:field-name="photo" umi:delete="delete" />
      
         <a href="{@link}" umi:element-id="{@id}" umi:field-name="name" umi:empty="Enter photo name" umi:delete="delete">
            <xsl:value-of select="." />
         </a>
      </li>
   </xsl:template>
   
   
   <xsl:template match="result[@module = 'photoalbum' and @method = 'photo']">
      <xsl:variable name="photo" select="page//property[@name = 'photo']/value" />
      <img src="{$photo}" width="150" umi:field-name="photo" umi:element-id="{page/@id}" />
   </xsl:template>

</xsl:stylesheet>

Фото все равно не отображается.

Цитировать
проверь что в value действительно содержится картинка
А как это сделать, фото в админке в гелерею добавлял.
Название: Re:Не отображается галерея. подскажите нубу.
Отправлено: admin от 11 Декабря 2011, 19:06:37
ты пробовал вставить
<textarea col="10" row="20" >
<xsl:copy-of select="$item//property[@name = 'photo']" />
</textarea>

что он тебе вывел?
Название: Re:Не отображается галерея. подскажите нубу.
Отправлено: aizul от 11 Декабря 2011, 19:44:31
Да пробовал, вывел поле ввода.
Название: Re:Не отображается галерея. подскажите нубу.
Отправлено: aizul от 14 Декабря 2011, 12:29:06
Файл photoalbum.xsl я до этого не трогал, наверно это не из-за этого файла.
Название: Решено:Не отображается галерея. подскажите нубу.
Отправлено: admin от 14 Декабря 2011, 22:58:01
вопрос в том что в поле с фотографией у тебя ничего не было, фото было в поле контент, а в шаблоне фото пытаеться загрузиться из поля photo ? его кстати неплохо было бы проверять на наличие значения, что-то в таком духе.

Этот код подгружает значение из поля 'photo' , если значения нет берется картинка заглушка (она вставляется через языковую сущность &empty-photo;).
потом из картинки делается превью размера 286 на 286 и выводиться ссылка на оригинальную картинку и уменьшенную картинку внутри ссылки.

этот кусок я обычно использую для lightbox эффектов, как раз для них в ссылке есть атрибут rel="prettyPhoto[mixed]"

<xsl:variable name="src">
<xsl:choose>
<xsl:when test="//property[@name = 'photo']/value">
<xsl:value-of select="//property[@name = 'photo']/value" />
</xsl:when>
<xsl:otherwise>&empty-photo;</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="thumbsrc" select="document(concat('udata://system/makeThumbnailFull/(.',$src,')/286/286'))/udata/src" />
<a  rel="prettyPhoto[mixed]" href="{$src}" umi:element-id="{@id}" umi:field-name="{@name}">
<img src="{$thumbsrc1}" />
</a>