UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: Axiomateria от 01 Декабря 2013, 02:01:31

Название: Название страницы с файлом
Отправлено: Axiomateria от 01 Декабря 2013, 02:01:31
Здравствуйте!

На странице объекта каталога  выводиться файл для скачивания:
<xsl:apply-templates select=".//property[@name='price_special_offers']" mode="se-link-file" />

и на данный момент получается вывести этим шаблоном название поля из типа данных "Объект каталога", то есть
<xsl:value-of select="title"/> называется "Скачать прайс-лист".:

<xsl:template match="property[@name='price_special_offers']" mode="se-link-file">
        <a href="{value}" title="{title}" target="_blank">
          <xsl:value-of select="title"/>
        </a>        
 </xsl:template>
<xsl:template match="property[@name='price_special_offers' and value = '']" mode="se-link-file"></xsl:template>

Но в конечном итоге надо вывести название страницы из поля "h1", в которую сам файл загружен, то есть из страницы типа данных "Скачиваемый файл", так что бы  на странице было название "Прайс-лист 2014".

Мутно объяснил, но если что готов на все уточнения ответить :)
Название: Re:Название страницы с файлом
Отправлено: e.ioffe от 01 Декабря 2013, 09:35:29
Здравствуйте!

На странице объекта каталога  выводиться файл для скачивания:
<xsl:apply-templates select=".//property[@name='price_special_offers']" mode="se-link-file" />

и на данный момент получается вывести этим шаблоном название поля из типа данных "Объект каталога", то есть
<xsl:value-of select="title"/> называется "Скачать прайс-лист".:

<xsl:template match="property[@name='price_special_offers']" mode="se-link-file">
        <a href="{value}" title="{title}" target="_blank">
          <xsl:value-of select="title"/>
        </a>        
 </xsl:template>
<xsl:template match="property[@name='price_special_offers' and value = '']" mode="se-link-file"></xsl:template>

Но в конечном итоге надо вывести название страницы из поля "h1", в которую сам файл загружен, то есть из страницы типа данных "Скачиваемый файл", так что бы  на странице было название "Прайс-лист 2014".

Мутно объяснил, но если что готов на все уточнения ответить :)

Попробуйте так:

<xsl:apply-templates select=".//property[@name='price_special_offers']" mode="se-link-file">
<xsl:with-param name="title" select=".//property[@name = 'h1']/value" />
</xsl:apply-templates>

<xsl:template match="property[@name='price_special_offers']" mode="se-link-file">
<xsl:param name="title" />
        <a href="{value}" title="{$title}" target="_blank">
          <xsl:value-of select="$title"/>
        </a>       
 </xsl:template>
Название: Re:Название страницы с файлом
Отправлено: Axiomateria от 01 Декабря 2013, 11:30:15
Попробуйте так:
<xsl:apply-templates select=".//property[@name='price_special_offers']" mode="se-link-file">
<xsl:with-param name="title" select=".//property[@name = 'h1']/value" />
</xsl:apply-templates>

<xsl:template match="property[@name='price_special_offers']" mode="se-link-file">
<xsl:param name="title" />
        <a href="{value}" title="{$title}" target="_blank">
          <xsl:value-of select="$title"/>
        </a>        
 </xsl:template>

Спасибо, но с переменной я так уже пробовал и в результате получается вывести
<xsl:value-of select="$title"/> только заголовок страницы самого объекта "h1", а хочется получить заголовок той страницы, которая относиться к загруженному файлу, то есть на месте вызова  <xsl:value-of select="$title"/> пытаюсь получить заголовок страницы от сюда, где искомая информация   в  
<title>Поле H1</title>
    <value>Прайс-лист PROGRESS</value>

<result module="filemanager" method="shared_file" domain="u8048437.isp.regruhosting.ru" system-build="22151" lang="ru" header="Прайс-лист PROGRESS" title="Прайс-лист PROGRESS" site-name="umicms.demo site" request-uri="/main/catalog1/stabilizatory_progress/stabilizatory_progress_seriya_t/prajslist_progress.xml" pageId="143">
  <page id="143" parentId="142" link="/main/catalog1/stabilizatory_progress/stabilizatory_progress_seriya_t/prajslist_progress.html" is-active="1" object-id="736" type-id="114" type-guid="filemanager-sharedfile" update-time="1385882480" alt-name="prajslist_progress">
    <basetype id="62" module="filemanager" method="shared_file">Скачиваемый файл</basetype>
    <name>Прайс-лист PROGRESS</name>
    <properties><group id="274" name="common">
    <title>Общее</title>
    <property id="124" name="title" type="string">
    <title>Поле TITLE</title>
    <value>Прайс-лист PROGRESS</value>
    </property><property id="125" name="h1" type="string">
    <title>Поле H1</title>
    <value>Прайс-лист PROGRESS</value>
    </property></group><group id="277" name="fs_file_props">
    <title>Свойства файла</title>
    <property id="381" name="fs_file" type="file">
    <title>Скачиваемый файл</title>
    <value path="./files/price-progress.xls" folder="/files" name="price-progress" ext="xls">/files/price-progress.xls</value>
    </property><property id="382" name="downloads_counter" type="int">
    <title>Количество загрузок</title>
    <value>4</value>
    </property></group><group id="276" name="more_params">
    <title>Дополнительные параметры</title>
    <property id="133" name="robots_deny" type="boolean">
    <title>Запретить индексацию поисковиками</title>
    <value>1</value>
    </property><property id="136" name="is_unindexed" type="boolean">
    <title>Исключить из поиска</title>
    <value>1</value>
    </property></group></properties></page>
</result>
Название: Re:Название страницы с файлом
Отправлено: e.ioffe от 02 Декабря 2013, 01:08:34
Дайте ссылку на страницу, где это нужно вывести.
Название: Re:Название страницы с файлом
Отправлено: admin от 03 Декабря 2013, 10:29:30
у вас в шаблоне данных "Стабилизатор, трансформатор (СЭ)" создано поле "Скачать прайс-лист"(price_special_offers) типа "Файл" в которое можно загрузить файл вашего прайс листа. Помимо этого у вас в системе создана страница "Прайс-лист PROGRESS" типа "скачиваемый файл" с таким же файлом. И вы сейчас пытаетесь при выводе поля с файлом из объекта каталога ("Стабилизатор, трансформатор (СЭ)") получить название страницы типа "скачиваемый файл", которые с точки зрения системы никак не связаны (и то что в обоих страницах присутствует одинаковый файл ничего не значит)

Вам надо было в типе данных "Стабилизатор, трансформатор (СЭ)" создать поле типа "Ссылка на дерево", в котором менеджер бы выбирал страницу "Прайс-лист PROGRESS" типа "скачиваемый файл". Тогда, при выводе объекта каталога вы могли бы получить доступ к странице "Прайс-лист PROGRESS" (то есть и к файлу и к названию данной страницы)
Название: Re:Название страницы с файлом
Отправлено: Axiomateria от 03 Декабря 2013, 15:22:00
Вам надо было в типе данных "Стабилизатор, трансформатор (СЭ)" создать поле типа "Ссылка на дерево", в котором менеджер бы выбирал страницу "Прайс-лист PROGRESS" типа "скачиваемый файл". Тогда, при выводе объекта каталога вы могли бы получить доступ к странице "Прайс-лист PROGRESS" (то есть и к файлу и к названию данной страницы)

Я так уже делал и получалось вызвать
<xsl:apply-templates select=".//property[@name='price_special_offers']/value" />
через шаблон
    <xsl:template match="property[@name='price_special_offers']/value">      
          <p align="center"><a href="{page/@link}" title="{page/name}" target="_blank"><xsl:value-of select="page/name"/></a></p>            
    </xsl:template>
    <xsl:template match="property[@name='price_special_offers' and value = '']"/vslue></xsl:template>

А надо что бы сразу эта ссылка загружала файл для скачивания, вот как это сделать?

Название: Re:Название страницы с файлом
Отправлено: admin от 03 Декабря 2013, 17:04:41
вытащить ссылку на файл из страницы которая указана в поле "ссылка на дерево, то есть ваш шаблон переделать таким образом

<xsl:template match="property[@name='price_special_offers']/value">      
    <xsl:variable name="file_link" select="document(concat('upage://',page/@id,'.fs_file'))//value"/>
<p align="center"><a href="{$file_link}" title="{page/name}" target="_blank"><xsl:value-of select="page/name"/></a></p>           
</xsl:template>
<xsl:template match="property[@name='price_special_offers' and value = '']"/value></xsl:template>
Название: Re:Название страницы с файлом
Отправлено: Axiomateria от 03 Декабря 2013, 18:50:15
<xsl:template match="property[@name='price_special_offers']/value">      
    <xsl:variable name="file_link" select="document(concat('upage://',page/@id,'.fs_file'))//value"/>
<p align="center"><a href="{$file_link}" title="{page/name}" target="_blank"><xsl:value-of select="page/name"/></a></p>           
</xsl:template>
<xsl:template match="property[@name='price_special_offers' and value = '']"/value></xsl:template>

Хитро однако, но сработало, спасибо!
Название: Re:Название страницы с файлом
Отправлено: Axiomateria от 11 Февраля 2014, 13:27:51
вытащить ссылку на файл из страницы которая указана в поле "ссылка на дерево, то есть ваш шаблон переделать таким образом

<xsl:template match="property[@name='price_special_offers']/value">      
    <xsl:variable name="file_link" select="document(concat('upage://',page/@id,'.fs_file'))//value"/>
<p align="center"><a href="{$file_link}" title="{page/name}" target="_blank"><xsl:value-of select="page/name"/></a></p>           
</xsl:template>
<xsl:template match="property[@name='price_special_offers' and value = '']"/value></xsl:template>

Однако по ходу дела отображается только один файл, когда как через ссылку на дерево подгружено четыре файла.
То есть выводить только верхний файл из списка.
Пробовал так:
    <xsl:template match="property" mode="docs-links">
        <xsl:apply-templates select="value" mode="docs-links" />   
    </xsl:template>
    <xsl:template match="value" mode="docs-links">       
        <xsl:variable name="file_link" select="document(concat('upage://',page/@id,'.fs_file'))//value"/>
        <p>
            <a href="{$file_link}" title="{page/name}" target="_blank">
                <xsl:value-of select="page/name"/>
            </a>     
        </p>       
        <xsl:apply-templates select="property/value" mode="docs-links" />   
    </xsl:template>
- пытался рекурсию вызвать, но видно, что этот фокус только для меню с вложениями работает...

Как же несколько файлов вытащить на странице сайта?
Название: Re:Название страницы с файлом
Отправлено: Axiomateria от 12 Февраля 2014, 14:20:59
На данный момент получается так:
    <xsl:template match="property[@name='files_pdf']" mode="more_objects">   
        <div>
            <xsl:apply-templates select="value/page"  mode="docs_link_pdf" />
        </div>
    </xsl:template>    
    <xsl:template match="page" mode="docs_link_pdf">    
                <p>
                    <a href="{@link}" title="Скачать документ {name}" target="_blank">
                        <xsl:value-of select="name" />
                    </a>
                       <xsl:apply-templates select="document(concat('upage://', @id, '.price'))//value" />
                </p>
    </xsl:template>
- то есть выводятся ссылки списком на страницы с файлами.

Но пока не могу понять две вещи:
1. как сделать так что бы выводилась цена "1 000 руб" ?
- пока получается только вывести через вызов <xsl:apply-templates select="document(concat('upage://', @id, '.price'))//value" /> "1 000" без "руб".
2. Выводимые ссылки на страницы для скачивания не ведут на сами файлы для скачивания, а фокус с переменной
  <xsl:variable name="file_link" select="document(concat('upage://',page/@id,'.fs_file'))//value"/>
   <a href="{$file_link}" title="{page/name}" target="_blank"><xsl:value-of select="page/name"/></a>
конечно здесь уже не прокатывает...