Нюансы интернет магазина современный (xslt) — различия между версиями
| SerjK (обсуждение | вклад)  (Новая страница: «'''Задача:''' Отсортировать товары в каталоге по алфавиту, чтобы сортировка была не только в …») | SerjK (обсуждение | вклад)  | ||
| Строка 1: | Строка 1: | ||
| − | '''Задача:''' Отсортировать товары в каталоге по алфавиту, чтобы сортировка была не только в панели администрирования, но и на сайте. | + | '''Задача 1:''' Отсортировать товары в каталоге по алфавиту, чтобы сортировка была не только в панели администрирования, но и на сайте. | 
| '''Решение:'''Если необходимо отсортировать объекты каталога на сайте, то необходимо отредактировать xsl-шаблон, в котором происходит вызов catalog getObjectsList,  на сайте "Интернет-магазин современный" это файл: | '''Решение:'''Если необходимо отсортировать объекты каталога на сайте, то необходимо отредактировать xsl-шаблон, в котором происходит вызов catalog getObjectsList,  на сайте "Интернет-магазин современный" это файл: | ||
| Строка 13: | Строка 13: | ||
| [http://help-dev.umi-cms.ru/catalog.getObjectsList.html]. | [http://help-dev.umi-cms.ru/catalog.getObjectsList.html]. | ||
| − | '''Задача:'''Как сделать активной ссылку (напр. на производителя) в характеристиках товара? | + | '''Задача 2:'''Как сделать активной ссылку (напр. на производителя) в характеристиках товара? | 
| '''Решение:'''Чтобы ссылка стала активной, необходимо в шаблоне вывода предусмотреть для соответствующего поля  конструкцию вида: <a href="{поле_с_сылкой}"><xsl:value-of select="поле_с_ссылкой" /></a>. Тогда ссылка будет активной. | '''Решение:'''Чтобы ссылка стала активной, необходимо в шаблоне вывода предусмотреть для соответствующего поля  конструкцию вида: <a href="{поле_с_сылкой}"><xsl:value-of select="поле_с_ссылкой" /></a>. Тогда ссылка будет активной. | ||
| Строка 39: | Строка 39: | ||
| </xsl:template></source> | </xsl:template></source> | ||
| − | '''Задача:'''Как изменить ширину всего шаблона и где меняются размеры (напр. меню каталога слева)? | + | '''Задача 3:'''Как изменить ширину всего шаблона и где меняются размеры (напр. меню каталога слева)? | 
| '''Решение:''' Ширина элементов шаблона страниц не изменяется с помощью средств системы. То есть, это вопрос не работы системы, а является вопросом верстки. | '''Решение:''' Ширина элементов шаблона страниц не изменяется с помощью средств системы. То есть, это вопрос не работы системы, а является вопросом верстки. | ||
| Строка 46: | Строка 46: | ||
| [http://htmlbook.ru/css/width] | [http://htmlbook.ru/css/width] | ||
| − | '''Задача:'''Где задаются размеры  раздела "Описание" для товаров. | + | '''Задача 4:'''Где задаются размеры  раздела "Описание" для товаров. | 
| '''Решение:''' Как и в предыдущем решении нужно менять css-стили. Но здесь мы рассмотрим это подробнее. | '''Решение:''' Как и в предыдущем решении нужно менять css-стили. Но здесь мы рассмотрим это подробнее. | ||
Версия 06:26, 29 декабря 2011
Задача 1: Отсортировать товары в каталоге по алфавиту, чтобы сортировка была не только в панели администрирования, но и на сайте.
Решение:Если необходимо отсортировать объекты каталога на сайте, то необходимо отредактировать xsl-шаблон, в котором происходит вызов catalog getObjectsList, на сайте "Интернет-магазин современный" это файл: \xsltTpls\modules\catalog\category-view.xsl
в нем необходимо строку:
       <xsl:apply-templates select="document(concat('udata://catalog/getObjectsList/', page/@id, '////2/'))/udata" />
изменить на:
       <xsl:apply-templates select="document(concat('udata://catalog/getObjectsList/', page/@id, '////2/h1/1'))/udata" />
т.е. "h1/1" - это поле по которому будет сортировка и порядок сортировки: [1].
Задача 2:Как сделать активной ссылку (напр. на производителя) в характеристиках товара?
Решение:Чтобы ссылка стала активной, необходимо в шаблоне вывода предусмотреть для соответствующего поля конструкцию вида: <a href="{поле_с_сылкой}"><xsl:value-of select="поле_с_ссылкой" /></a>. Тогда ссылка будет активной. Более подробно, напримемер, товар в интернет-магазине сортируется по производителям, их несколько,необходимо сделать ссылку на сайт производителя прямо из характеристик товара: если поле Бренд это выпадающий список, то обработка поля происходит в файле:
xsltTpls/modules/data/properties.xsl в блок:
   <xsl:template match="value/item[position() = last()]">
        <xsl:value-of select="@name" />
    </xsl:template><source lang="java">
средствами xslt можно вставить проверку, если @name = ' MULTIPOWER' то вывести <a href="http://MULTIPOWER.ru">MULTIPOWER</a>,
можно использовать подобную конструкцию:
<source lang="java"><xsl:template match="value/item[position() = last()]">
    <xsl:choose>
            <xsl:when test="@name = 'Proizvoditel'">
                  <a href="http://Proizvoditel.ru">Производитель1</a>
            </xsl:when>
             <xsl:when test="@name = 'MULTIPOWER2'">
                  <a href="http://Proizvoditel.ru">Производитель2</a>
            </xsl:when>
            <xsl:otherwise>
            <xsl:value-of select="@name" />
        </xsl:otherwise>
</xsl:choose>
</xsl:template>
Задача 3:Как изменить ширину всего шаблона и где меняются размеры (напр. меню каталога слева)?
Решение: Ширина элементов шаблона страниц не изменяется с помощью средств системы. То есть, это вопрос не работы системы, а является вопросом верстки.
Как правило ширина блоков задается в CSS-файлах. В системе они находятся в папке /css/. Для анализа CSS-стилей на сайте удобно использовать приложение [2] в браузере FireFox. Например, можно увидеть, что ширина левого меню на вашем сайте задается классом "left". Таким образом, для изменения его ширины необходимо найти файл, в котором задается описание этого класса и отредактировать значение ширины: [3]
Задача 4:Где задаются размеры раздела "Описание" для товаров.
Решение: Как и в предыдущем решении нужно менять css-стили. Но здесь мы рассмотрим это подробнее. Для вывода описания, по умолчанию используется вызов: <xsl:apply-templates select=".//property[@name = '&property-description;']" />
в файле \xsltTpls\modules\catalog\object-view.xsl
в этом же файле находится шаблон обработчик:
 <xsl:template match="property[@name = '&property-description;']">
        <div class="descr">
            <h4>
                <xsl:text>&item-description;:</xsl:text>
            </h4>
            <div umi:element-id="{../../../@id}" umi:field-name="{@name}" umi:empty="&item-description;">
                <xsl:value-of select="value" disable-output-escaping="yes" />
            </div>
        </div>
    </xsl:template>
Скорее всего, необходимо будет редактировать стили в файле modules.css, для:
div.image { float: left; width: 280px;}
и:
div.descr {margin-left: 285px;}
Ширина изображения задается в этом блоке:
   <xsl:call-template name="catalog-thumbnail">
                        <xsl:with-param name="element-id" select="page/@id" />
                        <xsl:with-param name="field-name">photo</xsl:with-param>
                        <xsl:with-param name="width">281</xsl:with-param>
                    </xsl:call-template>
