Здравствуйте!
На странице объекта каталога выводиться файл для скачивания:
<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>
Попробуйте так:
<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>
вытащить ссылку на файл из страницы которая указана в поле "ссылка на дерево, то есть ваш шаблон переделать таким образом
<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[@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>
конечно здесь уже не прокатывает...