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

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

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
У вас не работает строчка

<xsl:with-param name="element-id" select="page/@id" />, так как в ветке group нет значений page. Покажите полностью шаблон

Уточните пожалуйста какой теперь шаблон вам показать.

Тот, в котором вызываете <xsl:apply-templates select="что-то тут" mode="hotel-object-view" />

Определены ли переменные с именами pageId или page-id (как правило, определяются в файле common.xsl)?

Шаблон в папке /modules/catalog/object-view.xsl в полный рост такой:

<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 = 'catalog' and @method = 'object' and page/@type-id=143]">    
<xsl:apply-templates select="document(concat('udata://content/addRecentPage/', $document-page-id))/udata" />
<xsl:apply-templates select="document(concat('upage://', page/@id,'?show-empty'))/udata" mode="hotel-object-view" />
</xsl:template>

<xsl:template match="udata" mode="hotel-object-view">
 
                  <img class="element-decor-2a" src="{$template-recources}pictures/element-doubleline-1.png" width="180" height="5" />
                  <b><xsl:value-of select="document('upage://149.title')//value" /></b>
                  <img class="element-decor-2a" src="{$template-recources}pictures/element-doubleline-1.png" width="180" height="5" />              
                  <div class="element-decor-3"><img src="{$template-recources}pictures/element-decor-2.png" width="90" height="37" /></div>  
        
                  <div class="floatarea20"> </div>
              
<div class="hotel-card" itemscope="itemscope" itemtype="http://schema.org/Hotel">
        
                  <div class="card-block-1">
                    <div class="cell1">
                       <h1><xsl:value-of select=".//property[@name = 'h1']/value" /></h1>
                       <link itemprop="name" content="{page/name}" />
                       <p><xsl:value-of select=".//property[@name = 'address']/title" /> <xsl:text> </xsl:text> <xsl:value-of select=".//property[@name = 'address']/value" /></p>
                       <p class="metroname">
                         <xsl:value-of select=".//property[@name = 'nearest_metro_station']/title" />
                         <xsl:text> </xsl:text>
                         <xsl:apply-templates select=".//property[@name = 'nearest_metro_station']/value/item/@name" mode="div" />
                       </p>
                       <a class="iframe-location various fancybox.iframe" href="{.//property[@name = 'location']/value/page/@link}" title="{.//property[@name = 'location']/value/page/name}">
                         <xsl:value-of select=".//property[@name = 'location']/title" />
                       </a>                
                       <a class="conference-rooms" href="{.//property[@name = 'conference_rooms_in_hotel']/value/page/@link}" title="{.//property[@name = 'conference_rooms_in_hotel']/value/page/name}">
                         <xsl:value-of select=".//property[@name = 'conference_rooms_in_hotel']/title" />
                       </a>                                      
                       <a class="special-offers" href="{.//property[@name = 'price_special_offers']/value}" title="{.//property[@name = 'price_special_offers']/title}" target="_blank">
                         <xsl:value-of select=".//property[@name = 'price_special_offers']/title" />
                       </a>
                       <div class="button-bookig"><a href="#">Забронировать</a></div>
                    </div>
                    <div class="cell2">
                    <xsl:if test=".//property[@name = 'title-hotel-photo']/value">
                      <div class="title-photo">
                        <a class="fancybox-buttons" rel="media-gallery" href="{.//property[@name = 'title-hotel-photo']/value}" title="{.//property[@name='title']/value}">
                           <!-- <img src="{.//property[@name = 'title-hotel-photo']/value}" alt="{.//property[@name='h1']/value}" />-->
                           <xsl:call-template name="catalog-thumbnail">
     <xsl:with-param name="element-id" select="page/@id" />
     <xsl:with-param name="field-name">title-hotel-photo</xsl:with-param>
     <xsl:with-param name="width">460</xsl:with-param>
      </xsl:call-template>
                        </a>
                      </div>
                    </xsl:if>                    
                   </div>                  
                 </div>
                
                 <div class="carouseling">                    
                      <xsl:apply-templates select="document(concat('udata://photoalbum/album/', //property[@name = 'photoslist']/value/page/@id,'/void/1000'))/udata" mode="carousel-photos-hotel"/>
                 </div>  
                
                 <div class="hotel-descripion">
                      <h3><xsl:value-of select=".//property[@name = 'brief_description_hotel']/title" /></h3>              
                      <xsl:value-of select=".//property[@name = 'brief_description_hotel']/value" disable-output-escaping="yes" />
                 </div>
                
                 <div class="floatarea20"> </div>
                
                 <div class="hotel-restaurants">                
                    <xsl:apply-templates select=".//group[@name = 'hotel_restaurants' and not(property/value='')]" mode="hotel-restaurant" />
                 </div>
                
                 <div class="floatarea20"> </div>
                
                 <div class="conf-cap">                
                    <xsl:apply-templates select=".//group[@name = 'conferencing_capabilities' and not(property/value='')]" mode="hotel_conf_cap" />
                 </div>                
                
                 <div class="floatarea20"> </div>
                
                 <div class="services">                
                    <xsl:apply-templates select=".//group[@name = 'hotel_facilities' and not(property/value='')]" mode="hotel_services" />
                 </div>
                       <div class="floatarea40"> </div>
                
                       <img class="element-decor-3" src="{$template-recources}pictures/element-doubleline-2.png" />

</div>
</xsl:template>

 
    <xsl:template match="group" mode="hotel-restaurant">
         <h3><xsl:value-of select="concat(title, ':')" /></h3>
                <div class="cell1">                  
                    <a class="fancybox-buttons" rel="media-gallery" href="{.//property[@name = 'picture_situation']/value}" title="{.//property[@name = 'picture_situation']/title}">        
                        <xsl:call-template name="catalog-thumbnail">
           <xsl:with-param name="element-id" select="page/@id" />
           <xsl:with-param name="field-name">picture_situation</xsl:with-param>
           <xsl:with-param name="width">220</xsl:with-param>
           </xsl:call-template>                    
                     </a>
                </div>
         <xsl:apply-templates select="property" disable-output-escaping="yes" mode="hotel-restaurant" />
</xsl:template>
    <xsl:template match="property[@type='img_file']/value" mode="hotel-restaurant">
<div class="cell1"><xsl:value-of select="." disable-output-escaping="yes" /></div>  
</xsl:template>
<xsl:template match="property" mode="hotel-restaurant">                                  
          <div class="cell2"><xsl:value-of select="value" disable-output-escaping="yes" /> </div>
</xsl:template>
    

    <xsl:template match="group" mode="hotel_conf_cap">
         <h3><xsl:value-of select="concat(title, ':')" /></h3>
                <div class="cell1">
                    <a class="fancybox-buttons" rel="media-gallery" href="{.//property[@name = 'photo_conference_hall']/value}" title="{.//property[@name='photo_conference_hall']/title}">
                        <xsl:call-template name="catalog-thumbnail">
           <xsl:with-param name="element-id" select="page/@id" />
           <xsl:with-param name="field-name">photo_conference_hall</xsl:with-param>
           <xsl:with-param name="width">220</xsl:with-param>
           </xsl:call-template>
                     </a>
                </div>
         <xsl:apply-templates select="property" disable-output-escaping="yes" mode="hotel_conf_cap" />
</xsl:template>
    <xsl:template match="property[@type='img_file']/value" mode="hotel_conf_cap">
<div class="cell1"><xsl:value-of select="." disable-output-escaping="yes" /></div>  
</xsl:template>
<xsl:template match="property" mode="hotel_conf_cap">                                  
          <div class="cell2"><xsl:value-of select="value" disable-output-escaping="yes" /> </div>
</xsl:template>
</xsl:stylesheet>


*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
Внести следующие изменения:

<xsl:apply-templates select=".//group[@name = 'hotel_restaurants' and not(property/value='')]" mode="hotel-restaurant">
<xsl:with-param name="pageId" select="page/@id" />
</xsl:apply-templates>

и

<xsl:template match="group" mode="hotel-restaurant">
<xsl:param name="pageId" />
         <h3><xsl:value-of select="concat(title, ':')" /></h3>
                <div class="cell1">                 
                    <a class="fancybox-buttons" rel="media-gallery" href="{.//property[@name = 'picture_situation']/value}" title="{.//property[@name = 'picture_situation']/title}">         
                        <xsl:call-template name="catalog-thumbnail">
            <xsl:with-param name="element-id" select="$pageId" />
            <xsl:with-param name="field-name">picture_situation</xsl:with-param>
            <xsl:with-param name="width">220</xsl:with-param>
            </xsl:call-template>                     
                     </a>
                </div>
         <xsl:apply-templates select="property" disable-output-escaping="yes" mode="hotel-restaurant" />
</xsl:template>
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Внести следующие изменения:............

Большое, вам e.ioffe, Спасибо !
С подгрузкой превьшки теперь проблемы нет!

Однако осталась одна деталь: ссылка на саму картинку по прежнему выводиться рядом с превьюшкой в чистом виде:
/images/hotels_spb/5_star_hotels/astoria_kandinsky_bar.jpg

не могу понять как заблокировать в шаблоне её "голый" вывод....


*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Я имею ввиду вот эту часть шаблона, где select="value" выводится всё, включая ссылку на превьюшку в чистом виде:
	<xsl:template match="property" mode="hotel-restaurant">                                  
          <div class="cell2"><xsl:value-of select="value" disable-output-escaping="yes" /></div>
</xsl:template>
На странице сайта это выглядит так (во вложении скриншот)
Вот ни как не могу понять как её убрать ?
« Последнее редактирование: 07 Сентября 2013, 22:16:49 от Axiomateria »

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
Добавьте строчку <xsl:template match="property[@type='img_file']" mode="hotel-restaurant" />.

Хотя такой подход говорит о неправильной организации кода и неверном разбиении верстки на блоки.
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Добавьте строчку <xsl:template match="property[@type='img_file']" mode="hotel-restaurant" />.

Хотя такой подход говорит о неправильной организации кода и неверном разбиении верстки на блоки.
Спасибо, e.ioffe!
Всё теперь как надо.
Однако я просто использовал "заготовки" шаблонов из набора demodizzy и если есть более оптимальный вариант организации шаблонизатора для данного случая, то может быть вы поделитесь примером?

*

john

  • ***
  • 207
  • +6/-0
    • Просмотр профиля
<xsl:call-template name="makeThumbnailSqueeze">
<xsl:with-param name="element_id" select="@id" />
<xsl:with-param name="field_name" select="'photo'" />
<xsl:with-param name="width">114</xsl:with-param>
<xsl:with-param name="height">120</xsl:with-param>
<xsl:with-param name="alt" select="$photo_name" />
<xsl:with-param name="no-empty-image" select="0" />
</xsl:call-template>
Почему если задать конкретную ширину и высоту картинки в album.xsl
Размеры выводимых картинок будут не точные?

*

john

  • ***
  • 207
  • +6/-0
    • Просмотр профиля
Накапал этот файл thumbnails.xsl
Пробовал править  в нём. Убирал авто, ставил  свои значения.
<xsl:template name="makeThumbnailSqueeze">
<xsl:param name="alt" />
<xsl:param name="class" />
<xsl:param name="element_id" />
<xsl:param name="object_id" />
<xsl:param name="field_name" />
<xsl:param name="width" select="'auto'" />
<xsl:param name="height" select="'auto'" />
<xsl:param name="empty-image">&empty-photo;</xsl:param>
<xsl:param name="no-empty-image" select="1" />
<xsl:variable name="path">
<xsl:if test="$element_id">
<xsl:value-of select="document(concat('upage://',$element_id))//property[@name = $field_name]/value/@path" />
</xsl:if>
<xsl:if test="$object_id">
<xsl:value-of select="document(concat('uobject://',$object_id,'.',$field_name))/udata/property/value/@path" />
</xsl:if>
</xsl:variable>
<xsl:variable name="thumbnail" select="document(concat('udata://custom/makeThumbnailSqueeze/(',$path,')/',$width,'/',$height,'/void/0/7/'))/udata"/>
<xsl:choose>
<xsl:when test="not($thumbnail/src) and ($no-empty-image = 1) and ($isAdmin = 0)" />
<xsl:when test="not($thumbnail/src) and ($no-empty-image = 1) and ($isAdmin = 1)">
<span class="hidden">
<xsl:apply-templates select="$thumbnail" >
<xsl:with-param name="alt" select="$alt" />
<xsl:with-param name="class" select="$class" />
<xsl:with-param name="element_id" select="$element_id" />
<xsl:with-param name="object_id" select="$object_id" />
<xsl:with-param name="field_name" select="$field_name" />
<xsl:with-param name="empty_width" select="$width" />
<xsl:with-param name="empty_height" select="$height" />
<xsl:with-param name="empty-image" select="$empty-image" />
</xsl:apply-templates>
</span>
</xsl:when>
<xsl:when test="($no-empty-image = 0) and ($isAdmin = 1)">
<xsl:apply-templates select="$thumbnail" >
<xsl:with-param name="alt" select="$alt" />
<xsl:with-param name="class" select="$class" />
<xsl:with-param name="element_id" select="$element_id" />
<xsl:with-param name="object_id" select="$object_id" />
<xsl:with-param name="field_name" select="$field_name" />
<xsl:with-param name="empty_width" select="$width" />
<xsl:with-param name="empty_height" select="$height" />
<xsl:with-param name="empty-image" select="$empty-image" />
</xsl:apply-templates>
</xsl:when>
<xsl:otherwise>
<xsl:apply-templates select="$thumbnail" >
<xsl:with-param name="alt" select="$alt" />
<xsl:with-param name="class" select="$class" />
<xsl:with-param name="element_id" select="$element_id" />
<xsl:with-param name="object_id" select="$object_id" />
<xsl:with-param name="field_name" select="$field_name" />
<xsl:with-param name="empty_width" select="$width" />
<xsl:with-param name="empty_height" select="$height" />
<xsl:with-param name="empty-image" select="$empty-image" />
</xsl:apply-templates>
</xsl:otherwise>
</xsl:choose>
</xsl:template>

<xsl:template match="udata[@module = 'system' or @module = 'custom'][@method = 'makeThumbnail' or @method = 'makeThumbnailFull' or @method = 'makeThumbnailSqueeze']">
<xsl:param name="alt" select="''" />
<xsl:param name="class" />
<xsl:param name="element_id" />
<xsl:param name="object_id" />
<xsl:param name="field_name" />
<xsl:param name="empty_width" select="'auto'" />
<xsl:param name="empty_height" select="'auto'" />
<xsl:param name="empty-image">&empty-photo;</xsl:param>
<img>
<xsl:attribute name="alt"><xsl:value-of select="$alt" disable-output-escaping="yes"/></xsl:attribute>
<xsl:attribute name="title"><xsl:value-of select="$alt" disable-output-escaping="yes"/></xsl:attribute>
<xsl:if test="$isAdmin = 1">
<xsl:attribute name="style">
<xsl:if test="$empty_width != 'auto'">
<xsl:text>max-width:</xsl:text><xsl:value-of select="$empty_width"/><xsl:text>px;</xsl:text>
</xsl:if>
<xsl:if test="$empty_height != 'auto'">
<xsl:text>max-height:</xsl:text><xsl:value-of select="$empty_height"/><xsl:text>px;</xsl:text>
</xsl:if>
</xsl:attribute>
</xsl:if>
<xsl:if test="$class">
<xsl:attribute name="class"><xsl:value-of select="$class"/></xsl:attribute>
</xsl:if>
<xsl:if test="$field_name">
<xsl:if test="$element_id"><xsl:attribute name="umi:element-id"><xsl:value-of select="$element_id" /></xsl:attribute></xsl:if>
<xsl:if test="$object_id"><xsl:attribute name="umi:object-id"><xsl:value-of select="$object_id" /></xsl:attribute></xsl:if>
<xsl:attribute name="umi:field-name"><xsl:value-of select="$field_name" /></xsl:attribute>
<xsl:attribute name="umi:field-type"><xsl:text>img_file</xsl:text></xsl:attribute>
</xsl:if>
<xsl:attribute name="src">
<xsl:choose>
<xsl:when test="src"><xsl:value-of select="src" /></xsl:when>
<xsl:otherwise>
<xsl:value-of select="document(concat('udata://custom/makeThumbnailSqueeze/(.',$empty-image,')/',$empty_width,'/',$empty_height,'/void/0/7/'))/udata/src" />
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:attribute name="umi:empty"><xsl:value-of select="$empty-image" /></xsl:attribute>
</img>
</xsl:template>

<xsl:template match="udata[(@module = 'system' or @module = 'custom') and (@method = 'makeThumbnail' or @method = 'makeThumbnailFull' or @method = 'makeThumbnailSqueeze')]/width">
<xsl:attribute name="width"><xsl:value-of select="." /></xsl:attribute>
</xsl:template>

<xsl:template match="udata[(@module = 'system' or @module = 'custom') and (@method = 'makeThumbnail' or @method = 'makeThumbnailFull' or @method = 'makeThumbnailSqueeze')]/height">
<xsl:attribute name="height"><xsl:value-of select="." /></xsl:attribute>
</xsl:template>
Все равно не могу задать значения картинки.

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Накапал этот файл thumbnails.xsl
Пробовал править  в нём. Убирал авто, ставил  свои значения.

Все равно не могу задать значения картинки.

что у вас в макросе udata://custom/makeThumbnailSqueeze мы можем только гадать. Возможно, там и кроется решение вашего вопроса.