Все теже доп картинки

#
Re: Все теже доп картинки
Большое спасибо!
Всё заработало...
#
Re: Все теже доп картинки
Добрый день!
Ранее на сайте была сделана фотогалерея по дополнительному свойству типа файл.
Я расширил функционал – сделал две фотогалереи с различным оформлением, т.е. картинки загружаю либо в первую, либо во вторую фотогалерею в зависимости от необходимости того или иного оформления.
Но сейчас встала задача – обеспечить возможность одновременно иметь на странице и ту и другую фотогалерею, при чём с разными фото. Например:
1.   photo-1.jpg, photo-2.jpg, photo-3.jpg (это в первой фотогалереи)
2.   photo-4.jpg, photo-5.jpg, photo-6.jpg (и во второй фотогалереи)
Сейчас так не получается…

Сейчас в дополнительных свойствах элементов информационной системы прописаны соответственно XML-теги: foto и foto-img-block.
А в XSL-шаблоне соответствующие блоки:
<!-- Вывод изображения ГАЛЕРЕЯ 1 с условием - если есть -->
<xsl:choose>
<xsl:when test="count(property_value[tag_name = 'foto']) != 0">
<div class="row">
<xsl:apply-templates select="property_value[file_small/node()]" mode="foto" />
</div>
</xsl:when>
<xsl:otherwise></xsl:otherwise>
</xsl:choose>

<!-- Вывод изображения ГАЛЕРЕЯ 2 с условием - если есть -->
<xsl:choose>
<xsl:when test="count(property_value[tag_name = 'foto-img-block']) != 0">
<div class="gallery-img-block">
<xsl:apply-templates select="property_value[file_small/node()]" mode="foto-img-block" />
</div>
</xsl:when>
<xsl:otherwise></xsl:otherwise>
</xsl:choose>

и
<!-- Вывод изображения ГАЛЕРЕЯ 1 из дополнительных свойств -->
<xsl:template match="property_value" mode="foto">
<xsl:variable name="property_id" select="property_id" />
<xsl:variable name="property" select="/informationsystem/informationsystem_item_properties//property[@id=$property_id]" />
<xsl:if test="value/node() and value != '' or file/node() and file != ''">
<figure class="col-6 col-sm-4 col-lg-3 col-xl-2">
<a rel="tag" href="{../dir}{file}">
<img class="img-thumbnail" src="{../dir}{file_small}" alt="{file_description}" /></a>
<figcaption><xsl:value-of select="file_small_description" /></figcaption></figure>
</xsl:if>
</xsl:template>

<!-- Вывод изображения ГАЛЕРЕЯ 2 из дополнительных свойств -->
<xsl:template match="property_value" mode="foto-img-block">
<xsl:variable name="property_id" select="property_id" />
<xsl:variable name="property" select="/informationsystem/informationsystem_item_properties//property[@id=$property_id]" />
<xsl:if test="value/node() and value != '' or file/node() and file != ''">
<figure>
<a rel="tag" href="{../dir}{file}">
<img src="{../dir}{file_small}" alt="{file_description}" /></a>
<figcaption><xsl:value-of select="file_small_description" /></figcaption></figure>
</xsl:if>
</xsl:template>


Может кто сталкивался? Что в коде необходимо модифицировать?
#
Re: Все теже доп картинки
Dmitry K., добрый

на вид, вроде корректно всё
HostDev.pw - модули для HostCMS, Telegram: @hostdev
#
Re: Все теже доп картинки
Нет, в том то всё и дело, что не корректно!
Если делать как в описанном примере
Галерея 1: photo-1.jpg, photo-2.jpg, photo-3.jpg
Галерея 2: photo-4.jpg, photo-5.jpg, photo-6.jpg
то получается вот такое:


То есть все 6 фото в Галереи 1 и следом все 6 фото в Галереи 2.
#
Re: Все теже доп картинки
Dmitry K.,
Может по проще попробовать так?
<!-- Вывод изображения ГАЛЕРЕЯ 1 с условием - если есть -->
        <xsl:if test="count(property_value[tag_name = 'foto'][file !=''])">
            <div class="row">
                <xsl:for-each select="property_value[tag_name='foto'][file !='']">
                    <figure class="col-6 col-sm-4 col-lg-3 col-xl-2">
                        <a rel="tag" href="{../dir}{file}">
                            <img class="img-thumbnail" src="{../dir}{file_small}" alt="{file_description}" />
                        </a>
                        <figcaption>
                            <xsl:value-of select="file_small_description" />
                        </figcaption>
                    </figure>
                </xsl:for-each>
            </div>
        </xsl:if>
        
        <!-- Вывод изображения ГАЛЕРЕЯ 2 с условием - если есть -->
        <xsl:if test="count(property_value[tag_name = 'foto-img-block'][file !=''])">
            <div class="gallery-img-block">
                <xsl:for-each select="property_value[tag_name='foto-img-block'][file !='']">
                    <figure>
                        <a rel="tag" href="{../dir}{file}">
                            <img src="{../dir}{file_small}" alt="{file_description}" />
                        </a>
                        <figcaption>
                            <xsl:value-of select="file_small_description" />
                        </figcaption>
                    </figure>
                </xsl:for-each>
            </div>
        </xsl:if>
E-mail: info@syrbek.ru / телега: @syrbek /skype: activexm / syrbek.ru / Поддержка сайтов / г. Москва [HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, Git, SVN, Redmine]
#
Re: Все теже доп картинки
Seri,
большое спасибо! Всё отлично получилось!
#
Re: Все теже доп картинки
А может кто подскажет? Просто давно не пользовался... Забыл...
Вот в такой конструкции:
<div class="row no-gutters p-1">
<xsl:for-each select="property_value[tag_name='foto-timber'][file !='']">
<div class="col-6 col-md">
<a rel="tag" href="{../dir}{file}">
<img class="img-fluid" src="{../dir}{file_small}" alt="{file_description}" />
</a>
</div>

</xsl:for-each>
</div>

нужно чтобы выделенное жирным текстом выводилось по 5 в строке.
... там что-то типа такого Цитата:
..._item[position() &lt; 6]">
должно быть.
#
Re: Все теже доп картинки
Написал вот так:
<xsl:for-each select="property_value[tag_name='foto-timber'][file !='']">
<xsl:if test="position() &lt; 6">
<div class="col-6 col-md">
<a rel="tag" href="{../dir}{file}">
<img class="img-fluid" src="{../dir}{file_small}" alt="{file_description}" />
</a>
</div>
</xsl:if>
</xsl:for-each>

Но у меня выводится всего 5 элементов, а мне нужно чтобы по 5 в каждой строке.
#
Re: Все теже доп картинки
В итоге сделал так:
<!-- Вывод верхнего колонтитула таблицы с фото древесины из дополнительных свойств -->
<div class="border rounded clear-both">
<xsl:value-of select="property_value[tag_name='heading-timber']/value" disable-output-escaping="yes" />
<!-- Вывод изображения ДРЕВЕСИНЫ из дополнительных свойств с условием - если есть -->
<xsl:if test="count(property_value[tag_name='foto-timber'][file !=''])">
<div class="row no-gutters p-1">
<xsl:for-each select="property_value[tag_name='foto-timber'][file !='']">
<div class="col-6 col-md">
<a rel="tag" href="{../dir}{file}">
<img class="img-fluid" src="{../dir}{file_small}" alt="{file_description}" />
</a>
</div>
<xsl:if test="position() mod 5 = 0 and position() != last()">
<xsl:text disable-output-escaping="yes">
&lt;/div&gt;
&lt;div class="row no-gutters p-1"&gt;
</xsl:text>
</xsl:if>
</xsl:for-each>
</div>
</xsl:if>
</div>

...и всё получилось как надо!
Авторизация