Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”
Добавление страницы в "Избранное"

Автор diii3Раздел Шаблоны XSLT

Ответов: 4
Просмотров: 3274
Последний ответ 13 Февраля 2013, 06:18:50
от admin
Требуется выбрать только те страницы, у которых значение поля равно заданному

Автор tkalyuginaРаздел Шаблоны XSLT

Ответов: 1
Просмотров: 3775
Последний ответ 26 Сентября 2019, 13:01:06
от pandus
Модуль Меню - заголовки для блоков меню их поля "Название"

Автор AxiomateriaРаздел Шаблоны XSLT

Ответов: 8
Просмотров: 7267
Последний ответ 06 Июня 2014, 12:06:35
от admin
Вывод страницы в меню с отключением вывода в карте сайта

Автор alpotemkinРаздел Макросы UMI.CMS

Ответов: 6
Просмотров: 5626
Последний ответ 03 Ноября 2011, 15:07:29
от alpotemkin
не могу добавить виртуальные копии и ссылки на похожие страницы

Автор voldРаздел Наполнение сайтов

Ответов: 6
Просмотров: 56371
Последний ответ 20 Октября 2013, 16:21:58
от vold

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

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Название страницы с файлом
« : 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".

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

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
Re:Название страницы с файлом
« Ответ #1 : 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>
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:Название страницы с файлом
« Ответ #2 : 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>
« Последнее редактирование: 01 Декабря 2013, 11:32:25 от Axiomateria »

*

e.ioffe

  • ****
  • 369
  • +81/-2
  • Профессиональная разработка на UMI.CMS.
    • Просмотр профиля
    • Fullspace - Лучший хостинг для UMI.CMS
Re:Название страницы с файлом
« Ответ #3 : 02 Декабря 2013, 01:08:34 »
Дайте ссылку на страницу, где это нужно вывести.
Ускорение сайта на UMI.CMS - http://speed.umispec.ru/

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Название страницы с файлом
« Ответ #4 : 03 Декабря 2013, 10:29:30 »
у вас в шаблоне данных "Стабилизатор, трансформатор (СЭ)" создано поле "Скачать прайс-лист"(price_special_offers) типа "Файл" в которое можно загрузить файл вашего прайс листа. Помимо этого у вас в системе создана страница "Прайс-лист PROGRESS" типа "скачиваемый файл" с таким же файлом. И вы сейчас пытаетесь при выводе поля с файлом из объекта каталога ("Стабилизатор, трансформатор (СЭ)") получить название страницы типа "скачиваемый файл", которые с точки зрения системы никак не связаны (и то что в обоих страницах присутствует одинаковый файл ничего не значит)

Вам надо было в типе данных "Стабилизатор, трансформатор (СЭ)" создать поле типа "Ссылка на дерево", в котором менеджер бы выбирал страницу "Прайс-лист PROGRESS" типа "скачиваемый файл". Тогда, при выводе объекта каталога вы могли бы получить доступ к странице "Прайс-лист PROGRESS" (то есть и к файлу и к названию данной страницы)
« Последнее редактирование: 04 Декабря 2013, 14:51:03 от admin »

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:Название страницы с файлом
« Ответ #5 : 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>

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

« Последнее редактирование: 04 Декабря 2013, 12:08:01 от Axiomateria »

*

admin

  • *****
  • 2444
  • +172/-1
    • Просмотр профиля
Re:Название страницы с файлом
« Ответ #6 : 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>

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:Название страницы с файлом
« Ответ #7 : 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>

Хитро однако, но сработало, спасибо!

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:Название страницы с файлом
« Ответ #8 : 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>
- пытался рекурсию вызвать, но видно, что этот фокус только для меню с вложениями работает...

Как же несколько файлов вытащить на странице сайта?

*

Axiomateria

  • ****
  • 322
  • +5/-0
    • Просмотр профиля
    • Разработка продающих сайтов под ключ по честным ценам
Re:Название страницы с файлом
« Ответ #9 : 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>
конечно здесь уже не прокатывает...