Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - Axiomateria

Страницы: [1] 2 3 ... 22
1
И/или второй вариант для использования, если надо
Цитировать
Предпочтительно в поле "Дополнительные фотографии товара"(photos).

    <xsl:template match="Товар/Картинка">
        <xsl:if test="string-length(.)">
            <xsl:choose>
                <xsl:when test="position() &gt; 1">
                    <xsl:if test="position() = 1">
                        <property name="photo" title="Картинка" type="img_file" visible="visible" allow-runtime-add="1">
                            <type data-type="img_file"/>
                            <title>Картинка</title>
                            <value>./images/cms/data/<xsl:value-of select="."/></value>
                        </property>
                    </xsl:if>
                    <xsl:if test="position() != 1">
                        <property name="photos" title="Дополнительные фотографии товара" type="multiple_image" visible="visible" allow-runtime-add="1">
                            <type data-type="multiple_image"/>
                            <title>Дополнительные фотографии товара</title>
                            <xsl:apply-templates select="value" mode="more_photos"/>
                        </property>
                    </xsl:if>
                </xsl:when>
                <xsl:otherwise>
                    <property name="photo" type="img_file">
                        <title>Картинка</title>
                        <value>./images/cms/data/<xsl:value-of select="."/></value>
                    </property>
                </xsl:otherwise>
            </xsl:choose>
        </xsl:if>     
    </xsl:template>
   
    <xsl:template match="value"  mode="more_photos">
        <value>./images/cms/data/<xsl:value-of select="."/></value>
    </xsl:template>

2
Столкнулся с тем, что при интеграции с 1С(CommerceML) в товар загружается только одно изображение, в поле "Картинка"(photo). Можно ли загрузить все изображения в товар?
Добрый день.
Попробуйте вставить такой вариант кода в кастомный файл:
    <xsl:template match="Товар/Картинка">
        <xsl:if test="string-length(.)">
            <xsl:choose>
                <xsl:when test="position() &gt; 1">
                    <property name="photo{position()}" title="Картинка{position()}" type="img_file" visible="visible" allow-runtime-add="1">
                        <type data-type="img_file"/>
                        <title>Картинка</title>
                        <value>./images/cms/data/<xsl:value-of select="."/></value>
                    </property>
                </xsl:when>
                <xsl:otherwise>
                    <property name="photo" type="img_file">
                        <title>Картинка</title>
                        <value>./images/cms/data/<xsl:value-of select="."/></value>
                    </property>
                </xsl:otherwise>
            </xsl:choose>
        </xsl:if>     
    </xsl:template>

3
Здравствуйте!

Актуален вопрос, по которому уже касались в теме http://umihelp.ru/forum/index.php/topic,1365.msg5172.html#msg5172
про вывод контактной информации в соответствии выбранного региона или города.
У меня вопрос про выбор города и вывода данных в виде номеров телефонов и офиса адресов - как сделать так что бы обойтись без задействования языковой версии ?
Пользователь выбрал из списка (данные списка в справочнике "Города") , например город "Санкт-Петербург" и ему в шапке и футере  показываются телефоны питерские, а если он выбрал Москву, то соответственно номера московские.
Вроде просто, если задействовать языковую версию типа "СПб", но тогда в URL любой страницы сайта будет лишний /spb/ www.имясайта/spb/...   - вот этого бы конечно хотелось бы и избежать...

Как быть ?

4
попробуйте решение от admin ( Создание двухсторонней сортировки order_by для xslt шаблонов) вызвать так
<xsl:apply-templates select="document('udata://custom/order_by/name//11')" />
С сортировкой по имени понятно.

Вопрос следующий: а как сортировать объекты каталога по их дате добавления?
Пользуясь тем же методом, что и сортировка по цене я пытаюсь отсортировать в этом случае так :
<xsl:apply-templates select="document('udata://custom/order_by/date_create_object//86')"  mode="order_by_data" />
Но это не срабатывает...
Где ошибка ?

5
Подобная задача в лоб не решается.
Нашёл всё-таки эту тему, которая на половину решает мой вопрос:
http://umihelp.ru/forum/index.php/topic,1923.0.html
и в дополнение
http://wiki.umisoft.ru/%D0%92%D1%8B%D0%B2%D0%BE%D0%B4%D0%B8%D0%BC_%D0%BA%D0%BE%D0%BB%D0%B8%D1%87%D0%B5%D1%81%D1%82%D0%B2%D0%BE_%D1%82%D0%BE%D0%B2%D0%B0%D1%80%D0%BE%D0%B2_%D0%B2_%D0%BA%D0%B0%D1%82%D0%B5%D0%B3%D0%BE%D1%80%D0%B8%D0%B8_xslt

однако остаётся придумать манёвр, который будет закрывать от показа пункты меню, в разделов которых нет дочерних подразделов и/или объектов.

6
Здравствуйте!
Я пытался на форуме найти не новую, но нужную мне тему, в которой описывается похожая задача, с той только разницей, что вывод нужен не общего количества объектов всего каталога, а с вывод количества объектов в каждом разделе каталога.
Проще говоря надо что бы в меню с разделами каталога в каждом его пункте присутствовала цифра с количеством объектов для каждого раздела и сюда же надо не выводить пустые разделы в меню, в которых пока нет дочерних подразделов и/или объектов.
Подскажите, как найти эту тему или посоветуйте здесь, пожалуйста что требуется сделать для решения такой задачки.

7
Здравствуйте!
Может быть я ошибка с веткой форума, но мне кажется, что в первую очередь этот вопрос про поля формы шаблона на XSLT.
Пытаюсь сделать красивую форму для обратной связи, где стандартные кнопки броузера "Выберете файл" хочу заменить на что-то более оригинальное и удобоваримое на вид и с коррекцией её через CSS.
На примере сайта Юмисофт в поле для подгрузки файлов (см. скриншот - на примере поля "Аватарка" http://joxi.ru/l2ZVDRZfKbV32J ) при нажатии на кнопку "Обзор..." в его поле подставляется имя файла, который выбран пользователем с компьютера.
Кнопку вроде получилось сделать по аналогии с формой на сайте Юмисофт   (см. скриншот - кнопка ""Обзор" http://joxi.ru/5mdWZYyIjKzor1 ) но название файла не подгружается после его выбора в поле...
Поля, которые участвуют в заполнении поля
<input type="text" name="data[new][prikrepite_fajl_s_logotipom]" value="" class="input">
<input type="button" class="btn-load" value="Обзор...">
<input type="file" name="data[new][prikrepite_fajl_s_logotipom]">

Это вопрос вёрстки CSS-стилей или JS-скриптов или ещё какое-то поле в шаблоне формы надо указать ?
Заранее спасибо

8
Решение удалось применить такое:
JS такой:
$(document).ready(function () {
    var $menu = $("#menu");
    $(window).scroll(function () {
        if ($(this).scrollTop() > 70 && $menu.hasClass("default")) {
            $menu.fadeOut('fast', function () {
                $(this).removeClass("default")
                        .addClass("fixed")
                        .fadeIn('fast');
            });
        } else if ($(this).scrollTop() <= 70 && $menu.hasClass("fixed")) {
            $menu.fadeOut('fast', function () {
                $(this).removeClass("fixed")
                        .addClass("default");
            });
        }
    });
});
CSS такой:
#menu.default {
    display: none;
}
#menu.fixed {
    position: fixed;
    top: 0;
    left: 0;
    z-index: 100;
}
XSLT той части меню, которая преобразовывается после прокрутки страницы после 70px вниз такой:
                
                <div id="menu" class="default header-yarus wrap">
                    <xsl:apply-templates select="document('udata://menu/draw/navisectorscroll')" mode="central_menu"/>
                    <form action="/search/search_do/" method="get" role="form">
                        <input type="text" placeholder="Ваш запрос" value="&search-default-text;" name="search_string" onblur="javascript: if(this.value == '') this.value = '&search-default-text;';" onfocus="javascript: if(this.value == '&search-default-text;') this.value = '';"  x-webkit-speech="" speech="" class="scrolling" />
                        <button class="btn btn-primary btn-scroll" title="Найти" type="submit">
                            <xsl:text>&search;</xsl:text>
                        </button>
                    </form>
                    <xsl:apply-templates select="document('udata://emarket/cart')" mode="basket_scroll" />
                </div>

примечание: у меня кроме меню ещё краткая информация о содержимом корзины и поисковая строка выводится.

9
Разбейте свой запрос на части и проверте что там выводится, а что нет.
На первый взгляд у вас ошибка в строчке
concat('upage://', page/@id))
Когда вы работает в шаблонах для вывода краткой карточки товара, её id содержится не в page/@id , а  в @id
Если Вы об этом
<xsl:variable name="type_info_cart" select="document(concat('utype://',page/@type-id))/udata"/>
то я уже пробовал и так безрезультатно пока:
<xsl:variable name="type_info_cart" select="document(concat('utype://',@id/@type-id))/udata"/>

10
Шаблоны XSLT / Re: Вывод цены (price)
« : 23 Июня 2015, 21:31:10 »
А если цена товара 100 000 рублей ?
Я попробовал поискать в интернете по запросу decimal-separator из переменной     
<xsl:decimal-format name="price" decimal-separator="," grouping-separator=" "/>  
но мне всё про Delphi только попадаются страницы....
попробуйте
<xsl:value-of select="format-number(actual, '# ### ###,##','price')" />
Попробовал и так тоже, но увы, в корзине товаров, где это в общем-то только и нужно ни чего не произошло, то есть по прежнему слитно сумма в 100000 рублей получается.
Вот этот самый шаблон в полный рост:
    <xsl:template match="price[not(original) or original = '' or actual != '0']">
        <xsl:value-of select="concat(@prefix, ' ')" />
        <xsl:value-of select="format-number(actual, '#&#160;###&#160;###,##','price')" />
        <span class="suffix">
            <xsl:value-of select="concat(' ', @suffix)" />
        </span>
    </xsl:template>
</xsl:stylesheet>

11
Шаблоны XSLT / Re: Вывод цены (price)
« : 23 Июня 2015, 20:17:58 »
<xsl:value-of select="format-number(actual, '#&#160;###,##','price')" />
В данном примере работает разделение десятков тысяч, то есть выход 10 _пробел_ 000 руб или 10 000 р.

А если цена товара 100 000 рублей ?
Я попробовал поискать в интернете по запросу decimal-separator из переменной     
<xsl:decimal-format name="price" decimal-separator="," grouping-separator="&#160;"/>  
но мне всё про Delphi только попадаются страницы....

12
У вас немного дургое xml дерево узлов, вам надо вместо /result/page/@type-id использовать вызов page/@type-id
В итоге получиться:
<xsl:variable name="type_info" select="document(concat('utype://',page/@type-id))/udata"/>
<xsl:apply-templates select=".//group[@name='special']/property[@name = $type_info//field[@filterable='filterable']/@name]" mode="info" />
Спасибо, Admin, сработала конструкция!

P.S. судя по всему, шаблон в котором вы работаете сделан на основе demodizzy, там есть несколько неэффективных мест, например вывод страницы с подробным описанием товара

в тему замечание и у меня вопрос сюда же к разработчикам UMI.CMS имеется на тему оптимизации универсального шаблона demodizzy.

У меня ещё одно уточнение: как в превью товаров (которые выводятся в разделе каталога) вывести только фильтрованные технические характеристики ?
В корзине товаров у меня получилось вывести таким вызовом:
                <xsl:apply-templates select="document(concat('upage://', page/@id))/udata/page//group[@name='special']/property[@name = $type_info_cart//field[@filterable='filterable']/@name]" mode="filtered_special_cart" />
в котором переменная $type_info_cart задаётся так:
<xsl:variable name="type_info_cart" select="document(concat('utype://',page/@type-id))/udata"/>

но в превью не получается.
Подскажите что сделать с переменной надо, что бы в превью тоже вывести только фильтрованные характеристики объекта каталога ?

13
Здравствуйте!
Подскажите пожалуйста, вдруг, кто знает, где можно скачать набор скриптов для такого фиксированного меню, как на сайте http://www.avtoall.ru
?
Интересует именно такой вариант как видно на примере сайта avtoall.ru где в прокручиваемой странице с некоторого момента происходит изменение в верхней планке меню, то есть, на пример, вместо ссылок меню появляется строка поиска.
 

14
Здравствуйте!
У нас в интернет-магазине есть справочник "Производитель", где список всех наименований брендов производителей.
Данный список выводится в фильтре по каталогу полностью по всех категориях на ряду с полями "Цена от и до".
Конечно в разных разделах разные товары, например в разделе "Аккумуляторы"  не нужны бренды в фильтре поиска из раздела "Масла" и других тоже -
вот и вопрос: возможно ли как-то в форме (см. ниже) установить правило, которое отсекало бы из справочника "Производитель" не нужные для этого раздела список брендов не производящих масла ?
То есть надо что бы в открытом разделе каталога были в фильтре поиска только актуальные наименования брендов.

    <xsl:template match="udata[@method = 'search'][group]" mode="search">      
                <form class="catalog_filter" role="form">
                    <input type="hidden" id="catalog_layout" name="catalog_layout" value="{$catalog_layout}" />
                    <input type="hidden" id="count" name="count" value="{$count}" /> 
                    <xsl:apply-templates select=".//field[not(@data-type = 'boolean')]" mode="search" />
                    <xsl:apply-templates select=".//field[@data-type = 'boolean']" mode="search" />
                    <div class="buttons">
                        <input class="btn btn-primary" type="submit" value="&apply;" />
                        <input class="btn btn-primary" type="button" value="&reset;" onclick="javascript: window.location = 'http://{$domain}/market/';" />
                    </div>
                </form>
    </xsl:template>

15
Шаблоны XSLT / Re: Parents name
« : 22 Апреля 2015, 14:16:25 »
теперь для получения type-id используйте такой запрос:
<xsl:variable name="own-filter" select="document(concat('udata://custom/getDepthDominantTypeId/',$document-page-id))/udata" />
P.S. данную переменную стоит вызывать в самом шаблоне для раздела каталога, чтобы она лишний раз не формировалась

и последнее уточнение: я, если конечно правильно понял, переменную
<xsl:variable name="own-filter" select="document(concat('udata://custom/getDepthDominantTypeId/',$document-page-id))/udata" />

вставил в шаблон:
    <xsl:template match="udata[@method = 'getObjectsList'][total]" mode="layout_2">
        <xsl:variable name="own-filter" select="document(concat('udata://custom/getDepthDominantTypeId/',$document-page-id))/udata" />
        <xsl:choose>
            <xsl:when test="$catalog-main">   
                <xsl:apply-templates select="document(concat('udata://catalog/search////', 144))" mode="search_filter"/>
            </xsl:when>
            <xsl:otherwise>
                <xsl:apply-templates select="document(concat('udata://catalog/search////', $own-filter))" mode="search_filter"/>
            </xsl:otherwise>
        </xsl:choose>
        <xsl:call-template name="sorting"/>
        <div umi:element-id="{category_id}" umi:module="catalog" umi:method="getObjectsList" umi:sortable="sortable">
            <xsl:apply-templates select="lines/item" mode="short_view_list">
                <xsl:with-param name="cart_items" select="document('udata://emarket/cart/')/udata/items" />
            </xsl:apply-templates>
        </div>
        <xsl:apply-templates select="total" />
    </xsl:template>

В общем всё заработало!
Спасибо, Admin! Вот в который раз уже только на Вас и была надежда  :)

Страницы: [1] 2 3 ... 22