Правильно ли я понимаю что для того что бы использовать сортировку в 2-х направлениях, я использую представленный кастом, и делаю вызов вида:
<xsl:apply-templates select="document('udata://custom/order_by_new/artikul/72')" mode="art_sort"/>
проверяю, получаю:
<udata xmlns:xlink="http://www.w3.org/TR/xlink" module="custom" method="order_by_new" generation-time="0.008648">
<link>?&scheme=udata&order_filter[artikul]=1</link>
<title>Артикул</title>
</udata>
и как мне выводить вторую ссылку для сортировки в обратную сторону?
точнее, этот кастом вообще можно ли использовать для xslt? а то там упоминания о tpl-шаблонах идет: "tpls/numpages/{$template}.tpl"
Да, правильно.
Код в custom.php добавил, далее в файл /xsltTpls/modules/catalog/category-view.xsl добавил код
<xsl:template match="/result[@method = 'category']">
<xsl:apply-templates select="document(concat('usel://special-category-offers/', $document-page-id, '?limit=&specials-limit;'))" mode="special-offers" />
</xsl:template>
<xsl:template match="/result[@method = 'category'][count(/result/parents/page) = 1]">
<xsl:apply-templates select="document('udata://custom/order_by/price')" />
<xsl:apply-templates select="document(concat('udata://catalog/getObjectsList/', page/@id, '////2/'))/udata" />
</xsl:template>
<xsl:template match="udata[@module='custom' and @method = 'order_by']">
<a href="{link}" class="direction{@direction}">↓↑<xsl:value-of select="title" /></a>
</xsl:template>
Стрелочки появились на странице, при нажатие ничего не происходит.
Вывел Method custom::order_by doesn't exists
не работает.
А кто-нибудь такой код применял и как? http://wiki.umisoft.ru/%D0%A1%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D1%8D%D0%BB%D0%B5%D0%BC%D0%B5%D0%BD%D1%82%D0%BE%D0%B2_%D1%81%D0%BF%D1%80%D0%B0%D0%B2%D0%BE%D1%87%D0%BD%D0%B8%D0%BA%D0%B0_%D1%81%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B2%D0%B0%D0%BC%D0%B8_XSLT
для того чтобы вывести ссылку на соритровку элементов каталога используется макрос %system order_by()% (http://help-dev.umi-cms.ru/system.order_by.html), если вам необходимо сортировка в обоих направлениях (А-Я,Я-А) то смотрите статью на wiki.umisoft Обновленный макрос system order by (двойная сортировка по одной ссылке) (http://wiki.umisoft.ru/%D0%9E%D0%B1%D0%BD%D0%BE%D0%B2%D0%BB%D0%B5%D0%BD%D0%BD%D1%8B%D0%B9_%D0%BC%D0%B0%D0%BA%D1%80%D0%BE%D1%81_system_order_by_%28%D0%B4%D0%B2%D0%BE%D0%B9%D0%BD%D0%B0%D1%8F_%D1%81%D0%BE%D1%80%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0_%D0%BF%D0%BE_%D0%BE%D0%B4%D0%BD%D0%BE%D0%B9_%D1%81%D1%81%D1%8B%D0%BB%D0%BA%D0%B5%29)
К сожалению эта ссылка на wiki.umisoft на данный момент битая...
Однако полезная статья имеется в наличии по ссылке от admin : http://umihelp.ru/articles/custom_order_by-for_xslt/
в которой описывается варианты сортировки по полую цена (price)
<xsl:apply-templates select="document('udata://custom/order_by/price//11')" />
Вопрос: а как же всё-так по полю Название (namе) сортировать объекты каталога ?
попробуйте решение от admin ( Создание двухсторонней сортировки order_by для xslt шаблонов (http://umihelp.ru/articles/daniil_sirotkin/custom_order_by-for_xslt/)) вызвать так <xsl:apply-templates select="document('udata://custom/order_by/name//11')" />
если у вас параметры в адресной строке простого вида, типа price_order = 1
1. нужно как-то подхватит параметр из адресной строки
2. в usel файле создать заготовку для таких параметров, например для сортировке по цене посредством инструкции в usel файле
<sort order="{2}">{1}</sort>
3. При вызове usel передать эти параметры например так
usel://sales/price/asc
Остается вопрос как подхватить параметры. Можно передавать в адресную строку параметры другого вида и тогда все просто. Если в адресной строке параметры вида ?field_name=price&order=asc
, то создав глобальные параметры с соответвующими названиями
<xsl:param name="field_name" select="''"/>
<xsl:param name="order" select="''"/>
можно передавать их в usel
concat('usel://sales/',$field_name,'/',$order)
При этом варианте надо только переделать ссылки для сортировки.
Либо можно подхватывать параметры кастомным макросом, а результаты этого макроса подставлять к usel вызову
А можно отказаться от usel и сделать вывод товаров "распрадажа" силами getcategorylist...
попробуйте решение от admin ( Создание двухсторонней сортировки order_by для xslt шаблонов (http://umihelp.ru/articles/daniil_sirotkin/custom_order_by-for_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" />
Но это не срабатывает...
Где ошибка ?