Я нашёл в файле photo.xsl (../xslt/modules/photoalbum/) такой вот вызов:
<xsl:apply-templates select="document(concat('udata://photoalbum/album/',page/@parentId,'//1000'))/udata/items/item[@id = $document-page-id]" mode="slider" />
обрабатываемый так:
<xsl:template match="item" mode="slider">
<xsl:apply-templates select="preceding-sibling::item[1]" mode="slider_back" />
<xsl:apply-templates select="following-sibling::item[1]" mode="slider_next" />
</xsl:template>
<xsl:template match="item" mode="slider_back">
<a href="{@link}" title="&previous-page;" class="back" />
</xsl:template>
<xsl:template match="item" mode="slider_next">
<a href="{@link}" title="&next-page;" class="next" />
</xsl:template>
А если как-то переделать вызов с <xsl:apply-templates select="document(concat('udata://photoalbum/album/',page/@parentId,'//1000'))/udata/items/item[@id = $document-page-id]" mode="slider" />
на, допустим, такой:
<xsl:apply-templates select="document(concat('udata://catalog/getObjectsList/',page/@parentId,'//1000'))/udata/items/item[@id = $document-page-id]" mode="slider" />,
то обработку вызова тоже как-то надо переделывать ?
тот пример, который вы привели, работае по принципу,
1. вызвать макрос который вернет список всех объектов (в вашем примере выводится фотографии фотоальбома с парамтером per_page = 1000)
2. в получившемся xml документе найти id текущей страницы
3. взять предыдущий и последующий элемент и вывести на них ссылку
Безусловно этот способ может иметь право на существование, но далеко не во всех ситуациях (вернее редко когда) оправданно его использование.
Хотя бы на основании того, что делая вызов getObjectsList вам надо будет получить весь список товаров, а это нагрузка на запросы и формирование ответа.
В противовес этому, есть 2 макроса ( %system getPrevious()% и %system getNext()%), которые делают все тоже самое, но экономичней к ресурсам системы. И возвращают однозначный простой xml, который остается только вывести.
P.S. Если по каким-то причинам в вашей ситуации все же удобнее использовать вариант приведенный вами выше, то для вызова макроса getObjectsList не забудьте про параметр per_page, он должен наверняка покрывать все товары в разделе. Например так
<xsl:apply-templates select="document(concat('udata://catalog/getObjectsList//',page/@parentId,'/1000'))/udata/lines/item[@id = $document-page-id]" mode="slider" />
Остальные шаблоны можно оставить такими же.