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

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

*

Axiomateria

  • ****
  • 319
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Здравствуйте!
Из  списка товаров раздела каталога по ссылке на превью вывожу сплывающее окно с подробным описанием объекта, то есть что бы пользователь экономил время на подробный просмотр товара без перехода на его страницу, оставаясь в разделе каталога.
(я подгружаю в сплывающее окно подробное описание объекта object-view-modal.xsl).
Всё получается, кроме одной детали - как вставить ссылку на страницу этого объекта в сплывающем окне ?
« Последнее редактирование: 10 Октября 2014, 11:04:23 от Axiomateria »

*

idu.kuru

  • *
  • 16
  • +1/-0
    • Просмотр профиля
а каким образом подгружаете всплывающее окно?
просто скоро самому понадобится реализовывать это же

*

Axiomateria

  • ****
  • 319
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
а каким образом подгружаете всплывающее окно?
Использую скрипты и вёрстку для всплывающего (модального) окна из фреймворка bootstrap, в которое  вставляю вызов шаблона <xsl:call-template name="object_view_modal" />  копии файла object-view.xsl (demodizzy) примерно так:
 
                    <span class="object-view-modal" data-toggle="modal" data-target="#{@id}">           
                        <xsl:call-template name="catalog-thumbnail">
                            <xsl:with-param name="element-id" select="@id" />
                            <xsl:with-param name="field-name">photo</xsl:with-param>
                            <xsl:with-param name="empty">&empty-photo;</xsl:with-param>
                            <xsl:with-param name="width">360</xsl:with-param>
                            <xsl:with-param name="height">360</xsl:with-param>
                        </xsl:call-template>     
                        <img src="{$templates}images/icons/lupa.png" class="decor-lupa" />   
                    </span>
                    <div class="modal fade" id="{@id}" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
                        <div class="modal-dialog">
                            <div class="modal-content">
                                <div class="modal-header">
                                    <button type="button" class="close" data-dismiss="modal" />
                                </div>
                                <div class="modal-body">
                                    <xsl:call-template name="object_view_modal" />
                                </div>
                            </div>
                        </div>
                    </div>

*

admin

  • *****
  • 2421
  • +172/-1
    • Просмотр профиля
Использую скрипты и вёрстку для всплывающего (модального) окна из фреймворка bootstrap, в которое  вставляю вызов шаблона <xsl:call-template name="object_view_modal" />  копии файла object-view.xsl (demodizzy)

я правильно понимаю, что на момент генерации html страницы со списком товаров, всплывающие окна с подробным описанием для каждого товара уже сформированы в этом html?


*

Axiomateria

  • ****
  • 319
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Использую скрипты и вёрстку для всплывающего (модального) окна из фреймворка bootstrap, в которое  вставляю вызов шаблона <xsl:call-template name="object_view_modal" />  копии файла object-view.xsl (demodizzy)
я правильно понимаю, что на момент генерации html страницы со списком товаров, всплывающие окна с подробным описанием для каждого товара уже сформированы в этом html?
по идее да, но я теперь уже не уверен  :) 
хотя ведь выгружается же в это самое всплывающее окно заполненные поля со страницы объекта каталога как заголовок "h1" , описание "content" картинка "img" и т.д.

*

admin

  • *****
  • 2421
  • +172/-1
    • Просмотр профиля
главный вопрос, подгружается ли расширенная информация о товаре в момент загрузки страницы со списком товаров или по запросу через ajax, например.

*

Axiomateria

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

по запросу через ajax, точнее через JQuery загружается.

*

admin

  • *****
  • 2421
  • +172/-1
    • Просмотр профиля
приведите пример jquery вызова, который отображает форму

*

Axiomateria

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

чуть ранее здесь я привёл пример выгружаемого шаблона в сплывающее окно через вёрстку и скрипты фрейморка bootsrap такую:
http://umihelp.ru/forum/index.php/topic,1913.msg8409.html#msg8409
если мы об одном и том же...
« Последнее редактирование: 07 Октября 2014, 23:45:30 от Axiomateria »

*

admin

  • *****
  • 2421
  • +172/-1
    • Просмотр профиля
эта да, но мне интересно было взглянуть на запрос который получает инфу со старницы и применяет данный шаблон.

P.S. кстати это не относиться к вашему вопросу, если я его правильно понимаю, то вам надо добавить ссылку на саму страницу. Ссылка вам доступка через <a href={@link}>название товар</a> или нет? или ссылка есть но выплывающее окно открывает содержимое в iframe и у вас вопрос как из фрейма перегрузить родительскую страницу?

*

Axiomateria

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

вы, скорее всего, спрашиваете про вызов этого шаблона <xsl:call-template name="object_view_modal" /> , который из шаблона превью объекта каталога в файле common.xsl (demodizzy/../modules/catalog/) открывает всплывающее окно ?

Тогда вот в он полный рост:
 <xsl:template match="/result[@module = 'catalog' and @method = 'object']" name="object_view_modal">                                    
        <xsl:apply-templates select="document(concat('upage://', @id,'?show-empty'))/udata" mode="modal-object-view" />
    </xsl:template>
    
    <xsl:template match="udata" mode="modal-object-view">
        <xsl:variable name="cart_items" select="document('udata://emarket/cart/')/udata/items" />
        <xsl:variable name="is_options">
            <xsl:apply-templates select="document(concat('upage://', @id))/udata/page/properties" mode="is_options" />
        </xsl:variable>
        <div class="catalog">
            <div class="object-card row">
                <xsl:choose>
                    <xsl:when test=".//property[@name = 'photo']/value != ''">
                        <div class="image modal-view col-md-6 col-sm-5 col-xs-12">  
                            <xsl:for-each select="./page/properties/group[@name = 'description_object']/property[@name = 'photo']">
                                <xsl:if test="string(.//value) != ''">
                                    <xsl:apply-templates select="document(concat('udata://system/makeThumbnail/(.', ./value, ')/400/auto'))" mode="slider_photos_object_modal" />  
                                </xsl:if>
                            </xsl:for-each>  
                        </div>
                        <div class="object-infoblock modal-view col-md-6 col-sm-7 col-xs-12">
                            <xsl:apply-templates select=".//property[@name = 'h1']/value" mode="object_header" />
                            <xsl:apply-templates select=".//property[@name = 'brief_description']/value" mode="object_preview_techproperties" />
                        </div>
                    </xsl:when>        
                    <xsl:otherwise>
                        <div class="object-infoblock modal-view col-md-12 col-sm-12 col-xs-12">
                            <xsl:apply-templates select=".//property[@name = 'h1']/value" mode="object_header" />
                            <xsl:apply-templates select=".//property[@name = 'brief_description']/value" mode="object_preview_techproperties" />
                        </div>
                        <div class="float10"/>
                    </xsl:otherwise>
                </xsl:choose>
                <div class="object-infoblock object-price col-md-4 col-sm-6 col-xs-12" umi:element-id="{page/@id}" umi:field-name="price" itemprop="offers" itemscope="itemscope" itemtype="http://schema.org/Offer">
                    <xsl:apply-templates select=".//property[@name = 'common_quantity']" mode="object_properties_modal" />
                    <xsl:apply-templates select="document(concat('udata://emarket/price/', page/@id))" />
                    <div class="basket-object col-md-12 col-sm-12 col-xs-12">
                        <div class="basket-add col-md-12 col-sm-5 col-xs-5">
                            <form id="add_basket_{page/@id}" class="options" action="{$lang-prefix}/emarket/basket/put/element/{page/@id}/">
                                <xsl:variable name="element_id" select="@id" />
                                <input type="submit" class="btn btn-basket-object" id="add_basket_{$document-page-id}">
                                    <xsl:attribute name="value">
                                        <xsl:text>&basket-add;</xsl:text>
                                        <xsl:choose>
                                            <xsl:when test="$cart_items/item[page/@id = $document-page-id]">
                                                <xsl:text> (</xsl:text>
                                                <xsl:value-of select="sum($cart_items/item[page/@id = $document-page-id]/amount)" />
                                                <xsl:text>)</xsl:text>
                                            </xsl:when>
                                            <xsl:otherwise>
                                                <xsl:text>  </xsl:text>
                                                <xsl:text> (0)</xsl:text>
                                            </xsl:otherwise>
                                        </xsl:choose>
                                    </xsl:attribute>
                                </input>
                            </form>
                        </div>
                    </div>
                </div>
                <div class="float10" />
            </div>
        </div>
    </xsl:template>
    
    <xsl:template match="udata[@module = 'system' and @method = 'makeThumbnail']" mode="slider_photos_object_modal">
        <img src="{src}" alt="{$document-title}" class="img-responsive"/>
    </xsl:template>

- вот он и "всплывает" у меня в окне. Сам же файл object-view-modal.xsl находится в той же папке, что и оригинал object-view.xsl demodizzy/../modules/catalog/

*

admin

  • *****
  • 2421
  • +172/-1
    • Просмотр профиля
нет,я про то что всплывающее окно открывается посредсвом jquery, следственно должен быть элемент на который нажимают (скорее всего ссылка) и либо происходит ajax запрос к системе которая возвращает подробную инфомрацию о товаре, либо эта подробная информация уже есть в html страницы со списком товаров и она просто отображается в сплывающем окне.

Для того чтобы в этом разобраться, я хотел взглянуть на тот управляющий элемент (скорее всего ссылку) при взаимодействии с которым (скорее всего щелчок мыши) открывает всплывающее окно с подробной информацией о товаре.

Возможно, я его проглядел где-то в вышеприведенных кусках кода.

*

Axiomateria

  • ****
  • 319
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
нет,я про то что всплывающее окно открывается посредсвом jquery, следственно должен быть элемент на который нажимают (скорее всего ссылка) и либо происходит ajax запрос к системе которая возвращает подробную инфомрацию о товаре

да я об этом я вкратце выше описывал в сообщении http://umihelp.ru/forum/index.php/topic,1913.msg8413.html#msg8413
Но теперь об этом подробно с полным кодом файла common.xsl, в котором содержится шаблон, выводящий превью в разделах каталога.
Происходит это так: в разделе каталога, где выводятся превью объектов каталога при наведении на фотографию одно из превью и последующее нажатие на его изображение открывается всплывающее окно с подробным описанием товара - обращаю внимание, что
именно вот эта часть ниже приведённого полного кода шаблона отвечает как ссылка на загрузку всплывающего окна:
                    <span class="object-view-modal" data-toggle="modal" data-target="#{@id}">          
                        <xsl:call-template name="catalog-thumbnail">
                            <xsl:with-param name="element-id" select="@id" />
                            <xsl:with-param name="field-name">photo</xsl:with-param>
                            <xsl:with-param name="empty">&empty-photo;</xsl:with-param>
                            <xsl:with-param name="width">360</xsl:with-param>
                            <xsl:with-param name="height">360</xsl:with-param>
                        </xsl:call-template>      
                   </span>
<xsl:template match="page|item" mode="short-view">
        <xsl:param name="cart_items" select="false()" />
        <xsl:variable name="h1name" select="document(concat('upage://', @id, '.h1'))//value" />
        <xsl:variable name="object" select="document(concat('upage://', @id))/udata" />
        <xsl:variable name="is_options">
            <xsl:apply-templates select="$object/page/properties" mode="is_options" />
        </xsl:variable>
        <div class="col-md-3 col-sm-6 col-xs-12">
            <div class="object" umi:region="row" umi:element-id="{@id}">
                <div class="image-item">
                    <a href="{@link}" class="title" umi:element-id="{@id}" umi:field-name="name" umi:delete="delete" title="{$h1name}">  
                        <span>
                            <xsl:value-of select="$h1name" />    
                        </span>  
                    </a>
                    <span class="object-view-modal" data-toggle="modal" data-target="#{@id}">          
                        <xsl:call-template name="catalog-thumbnail">
                            <xsl:with-param name="element-id" select="@id" />
                            <xsl:with-param name="field-name">photo</xsl:with-param>
                            <xsl:with-param name="empty">&empty-photo;</xsl:with-param>
                            <xsl:with-param name="width">360</xsl:with-param>
                            <xsl:with-param name="height">360</xsl:with-param>
                        </xsl:call-template>      
                        <img src="{$templates}images/icons/lupa.png" class="decor-lupa" />  
                    </span>
                    <div class="modal fade" id="{@id}" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
                        <div class="modal-dialog">
                            <div class="modal-content">
                                <div class="modal-header">
                                    <button type="button" class="close" data-dismiss="modal" />
                                </div>
                                <div class="modal-body">
                                    <xsl:call-template name="object_view_modal" />
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
                <div class="object-nuances">  
  
                <xsl:apply-templates select="$object//group[@name = 'dimensions']" mode="object_preview_techproperties" />
                <xsl:apply-templates select="$object//group[@name = 'catalog_option_props']/property" mode="object_preview_techproperties" />

                    <xsl:apply-templates select="$object//property[@name = 'brief_description']/value" mode="object_preview_techproperties" />
                </div>
                <div class="buttons">
                    <div class="add_from_list">
                        <span class="price-block col-md-4 col-sm-4 col-xs-6" umi:element-id="{@id}" umi:field-name="price">
                            <xsl:apply-templates select="document(concat('udata://emarket/price/', @id))" mode="object_preview" />
                        </span>
                        <form id="add_basket_{@id}" class="options" action="{$lang-prefix}/emarket/basket/put/element/{page/@id}/">
                            <xsl:variable name="element_id" select="@id" />
                            <span class="basket-in">  
                                <input class="btn btn-basket-object" id="add_basket_{@id}" type="submit" value="&basket-add;" onclick="javascript: window.location = '{@link}';" />
                                <img src="{$templates}images/icons/basket-icon-preview.png" />
                            </span>
                            <xsl:choose>
                                <xsl:when test="$cart_items and $cart_items/item[page/@id = $element_id]">
                                    <span class="score">    
                                        <xsl:value-of select="sum($cart_items/item[page/@id = $element_id]/amount)" />
                                    </span>
                                    <span class="format">шт</span>
                                </xsl:when>
                                <xsl:otherwise>
                                    <span class="score">
                                        <xsl:text>0</xsl:text>
                                    </span>
                                    <span class="format">шт</span>
                                </xsl:otherwise>
                            </xsl:choose>
                        </form>
                    </div>
                </div>
            </div>    
        </div>
        <xsl:if test="position() mod 4 = 0 and position() != last()">
            <div class="float40" />
        </xsl:if>
    </xsl:template>
    
    <xsl:template match="property[@type='wysiwyg' and value = '']" mode="object_preview_techproperties">
        <span umi:field-name="{../@name}" umi:empty="&item-description;" itemprop="description" class="object-content">
            <p>&process-updating;</p>
            <xsl:value-of select="." disable-output-escaping="yes" />      
        </span>
    </xsl:template>
    <xsl:template match="property[@type='wysiwyg']/value" mode="object_preview_techproperties">
        <span umi:field-name="{../@name}" umi:empty="&item-description;" itemprop="description">
            <xsl:value-of select="." disable-output-escaping="yes" />              
        </span>
    </xsl:template>
     <xsl:template match="group[@type='relation']" mode="object_preview_techproperties">
         <xsl:apply-templates select="title" mode="object_preview_techproperties"/>
         <xsl:apply-templates select="value" mode="object_preview_techproperties"/>
     </xsl:template>
     <xsl:template match="group/title" mode="object_preview_techproperties">
         <strong>  
             <xsl:value-of select="concat(., ':')" />
         </strong>
     </xsl:template>
     <xsl:template match="property" mode="object_preview_techproperties">
         <span class="preview-techproperty">
             <xsl:value-of select="(.)" />
             <span class="object-techproperty" umi:element-id="{@id}" umi:field-name="{@name}">
                 <xsl:value-of select="value/item/@name"/>
                 <xsl:if test="not(position()=last())">, </xsl:if>
                 <xsl:if test="(position()=last())">.</xsl:if>
             </span>
         </span>
     </xsl:template>
     <xsl:template match="property[@name = 'material']" mode="object_preview_techproperties">
         <span class="preview-techproperty2">
             <strong>  
                 <xsl:value-of select="concat(., ':')" />
             </strong>
             <span class="object-techproperty" umi:element-id="{../../../@id}" umi:field-name="{@name}">
                 <xsl:value-of select="value/item/@name"/>
                 <xsl:if test="not(position()=last())">, </xsl:if>
                 <xsl:if test="(position()=last())">.</xsl:if>
             </span>
         </span>
     </xsl:template>

    <xsl:template match="properties" mode="is_options">
        <xsl:value-of select="false()" />
    </xsl:template>

    <xsl:template match="properties[group[@name = 'catalog_option_props']/property]" mode="is_options">
        <xsl:value-of select="true()" />
    </xsl:template>
« Последнее редактирование: 10 Октября 2014, 11:07:14 от Axiomateria »

*

Axiomateria

  • ****
  • 319
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
И вот мой мой вопрос, с которого всё и началось:
как вставить ссылку на страницу этого объекта в сплывающем окне, если оно содержит в себе вызов <xsl:call-template name="object_view_modal" />  этого шаблона:
http://umihelp.ru/forum/index.php/topic,1913.msg8422.html#msg8422
?

Должно получится, по идее, что как бы ссылка на объект ведёт  сама на себя...


 

*

admin

  • *****
  • 2421
  • +172/-1
    • Просмотр профиля
я так понимаю проблема в том что {@link} доступна вам в момент вызова call-template, но не доступна внутри него?

Если да, то просто передайте его через параметр как передаются параметры lzk вызова  <xsl:call-template name="catalog-thumbnail">