UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: Sumrakrnd от 19 Февраля 2016, 14:16:23

Название: Вызов xsl файла как шаблона?
Отправлено: Sumrakrnd от 19 Февраля 2016, 14:16:23
Нашла интересный пример среди сайтов.

В Umi создана страница с типом данных Страница контента, в ней есть страница Сотрудники, у которой свой созданный тип данных с названием Сотрудники с назначением типа Страница контента. И есть тип данных Сотрудник с тем же назначением, соответственно с этим типом данных созданы страницы с сотрудниками, которые вложены в Сотрудники, т.е. выглядит вот:
-Компания
--Сотрудники
---Сотрудник 1
---Сотрудник 2
---Сотрудник 3

А на сайте это такой список фотографий сотрудников с кратким описанием у каждого после какого-то количества контента.


В папке mudules есть создана папка page, в которой есть страница company.xsl, где вызывается получается запрос.

Пожалуйста, объясните, как работает этот вызов страницы (назовем это так), а 98 - это id Компании. 223 - Сотрудники. 151 - это тип данных Сотрудники, а 150 - Сотрудник.

Я вроде все заполнила по этому примеру(соответственно задала свои id), но запроса не произошла(

	<xsl:template match="result/page[@id = '98']" mode="page">

        <div class="container-fluid" style="background: white;">
            <div class="container">
                <div class="block-company">
                    <div class="company-left">
                    <div id="myCarousel" class="carousel slide slider">
                        <!-- Carousel items -->
                        <div class="carousel-inner">
                            <xsl:apply-templates select="document('usel://main/253/147')/udata" mode="slider-comp"/>
                        </div>
                    </div>
                    <xsl:value-of select="//property[@name = 'content']/value" disable-output-escaping="yes"/>
                    </div>
                    <div class="company-right">
                        <div class="company-right-wrap">
                            <xsl:apply-templates select="document(concat('udata://content/menu/notemplate/0/',@id))/udata" mode="company_menu_inner"/>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <div class="container-fluid">
            <div class="container">
                <div class="block-company">
                    <div class="company-people">
                        <h4>История компании в лицах</h4>
                        <xsl:apply-templates select="document('usel://main/223/150')/udata" mode="human"/>
                    </div>
                </div>
            </div>
        </div>
</xsl:template>

    <xsl:template match="udata[@method = 'menu']" mode="company_menu_inner">

                    <xsl:apply-templates select="items/item" mode="company_menu_inner" />

    </xsl:template>

    <xsl:template match="item" mode="company_menu_inner">

            <a href="{@link}">
                <xsl:variable name="img" select="document(concat('upage://',@id))//property[@name = 'header_pic']/value"/>
                <div class="company-menu-inner" style="background: url({$img}) no-repeat; background-position: center left;"></div>
                <p><xsl:value-of select="." /></p>
            </a>
    </xsl:template>





    <xsl:template match="udata" mode="human">
        <xsl:apply-templates select="page" mode="human"/>
    </xsl:template>
    <xsl:template match="page" mode="human">
        <div class="human">
            <div class="human-wrap"></div>
            <div class="human--img">
                <xsl:variable name="img" select="extended/properties/property[@name = 'header_pic']/value"/>
                <img src="{document(concat('udata://system/makeThumbnailFull/(.',$img,')/221/260/notemplate/0/1/5/0/100'))/udata/src}"/>
            </div>
            <div class="human--descr">
                <h1><xsl:value-of select="name"/></h1>
                <p><xsl:value-of select="extended/properties/property[@name = 'h1']/value"/></p>
            </div>
        </div>
    </xsl:template>

    <xsl:template match="udata" mode="slider-comp">
        <xsl:apply-templates select="page" mode="slider-comp"/>
    </xsl:template>

    <xsl:template match="page[position() = 1]" mode="slider-comp">
        <xsl:variable name="img" select="extended/properties/property[@name = 'header_pic']/value"/>
        <div class="item active"><img src="{document(concat('udata://system/makeThumbnailFull/(.',$img,')/950/310/notemplate/0/1/5/0/100'))/udata/src}"/></div>
    </xsl:template>

    <xsl:template match="page" mode="slider-comp">
        <xsl:variable name="img" select="extended/properties/property[@name = 'header_pic']/value"/>
        <div class="item"><img src="{document(concat('udata://system/makeThumbnailFull/(.',$img,')/950/310/notemplate/0/1/5/0/100'))/udata/src}"/></div>
    </xsl:template>
Название: Re: Вызов xsl файла как шаблона?
Отправлено: Sumrakrnd от 23 Февраля 2016, 20:13:46
Вот что у меня в итоге вышло, немного не могу понять, как теперь лучше оформить по отделениям, например одно из отделений Администрация (сейчас просто html вставлен)
	<xsl:template match="result[page/@id = '272']">
<div class="specialize">
<h3>Администрация</h3>
</div>
<div class="specialists">
<ul>
<xsl:apply-templates select="document('usel://main/272/148')/udata" mode="human"/>
</ul>
</div>
</xsl:template>
<xsl:template match="udata" mode="human">
<xsl:apply-templates select="page" mode="human"/>
    </xsl:template>

<xsl:template match="page" mode="human">
<li class="specialists_item">           
        <a href="{@link}">
  <span class="text">
<xsl:value-of select=".//property[@name = 'header_pic']/value" disable-output-escaping="yes" />
<!--<xsl:variable name="img" select="extended/properties/property[@name = 'header_pic']/value"/>-->
<small><xsl:value-of select="name"/></small>
                <p><xsl:value-of select="extended/properties/property[@name = 'h1']/value"/></p>
            </span>
</a>
</li>
</xsl:template>

Основная дилемма в фото сотрудника
<xsl:value-of select=".//property[@name = 'header_pic']/value" disable-output-escaping="yes" /> - этот запрос выводит путь картинки в img показывая, что картинка есть

<xsl:variable name="img" select=".//property[@name = 'header_pic']/value"/> - но вроде пишу обращение ,а он выдает пустоту (
Название: Re: Вызов xsl файла как шаблона?
Отправлено: Sumrakrnd от 25 Февраля 2016, 18:17:58
С Картинкой разобралась ^^
<img src="{.//property[@name='header_pic']/value}" alt="" />