Страница сбоя функции ADNStoreFront Multistore AddtoCartForm

Я пытаюсь изменить существующий XML-пакет Aspdotnetstorefront Multistore. Это внутренний XML-пакет для отображения вариантов определенного продукта. Для начала я скопировал и вставил весь код как есть и поместил его в новый пользовательский XML-пакет. Проблема в том, что он отлично работает в оригинальном пакете, но не в скопированном. Когда я пытаюсь запустить его, функция AddtoCartForm приводит к сбою страницы и показывает следующую ошибку, в то время как красным цветом отображается строка, содержащая вызов функции:

Для этого метода требуется HtmlHelper. Обязательно укажите его при вызове метода RunXmlPackage

Формат функции:

<xsl:value-of select="aspdnsf:AddtoCartForm(ProductID, VariantID, 1, 1, $SelectedSize, $SelectedColor)" disable-output-escaping="yes"/>

Я удалил строку с функцией, чтобы быть уверенным, и тогда все остальное работает нормально. Я понятия не имею, что здесь не так. Все идентично, если только не структура URL-адреса, который вызывает пакет:

Для внутреннего пакета это: \product\123456

Для пользовательского пакета это: \topic\packagename?ProductID=123456

Я проверил XML, созданный SP, среду выполнения и запрошенные данные, и в обоих случаях они в основном одинаковы. Значения ProductID и VariantID находятся там. SelectedColor и SelectedSize нет в XML (даже во внутреннем пакете), поэтому они могут просто предоставлять нулевое значение и, возможно, в этом нет необходимости.

И это еще не все. Если я отключу значение productid из URL-адреса следующим образом:

\topic\packagename

Это не приведет к сбою страницы (но также не будет отображаться, потому что не будет никакого значения для обработки).

В любом случае я не понимаю, почему это не сработает, просто передав переменную в строке запроса (это в основном то, что она делает в исходном пакете, даже в другом формате) и значение var (productid), которое она получит. Однако кажется, что это действительно формат URL-адреса, который не нравится пакету, но для меня это не имеет особого смысла. Я занимаюсь этим уже несколько дней, и ничего из того, что я делаю, кажется, не дает никакого положительного результата. :-(

Я искал в Интернете некоторую документацию, но мне не повезло, и я не нашел абсолютно ничего. В крайних случаях я пытаюсь связаться со службой поддержки Vortx (и они обычно отвечают мне, давая какую-то ценную подсказку), но на этот раз кажется, что для этого конкретного вопроса не будет никакой помощи, если я не заплачу непристойную плату за час, и, к сожалению, это исключено. ... Смешной!

Есть идеи?

ОБНОВЛЕНИЕ. Мы не используем обычный инструмент поиска в мультимагазине. Из-за характера нашей продукции (переработанные автомобильные детали) у нас есть настраиваемый инструмент поиска, который попытается найти «похожие» элементы, которые МОГУТ соответствовать потребностям пользователя, когда у нас нет ТОЧНОЙ детали. Я не знаю, знаете ли вы, но некоторые механические части автомобиля взаимозаменяемы между разными моделями и производителями (например, генераторы переменного тока, компрессоры переменного тока, аккумулятор, подвеска, система охлаждения и т. д.), поэтому, когда одному из наших клиентов нужна деталь для ремонта код своей машины он нам не говорит; вместо этого он сообщит нам модель автомобиля, год выпуска и общее название детали, чтобы мы попытались найти для него деталь. Это означает, что определенная часть Corolla идеально подходит для Honda Accord и так далее. Иногда у нас есть запасные части, которые МОГУТ подойти к его машине, но мы не уверены в этом. Когда это произойдет, мы покажем эти детали клиенту, и он решит, может ли он рискнуть. Ради удобства клиентов мы хотим показать все эти части на одной странице, но, поскольку они обычно являются вариантами разных продуктов, мы не можем использовать обычную страницу продукта для этой цели (поскольку на странице продукта будут отображаться только варианты ОДНОГО продукта в время). По этой причине я собираюсь написать пакет — модифицированную версию страницы продукта — который сделает это, но я борюсь с функцией AddtoCartForm. На самом деле, я ПРОСТО нашел обходной путь, добавив товар в корзину, напрямую обращаясь к сценарию /shoppingcart/addtocart, и теперь моя проблема заключается в том, чтобы заставить его вернуться к определенному URL-адресу после добавления товара в корзину...


person Yan Kleber    schedule 11.02.2021    source источник


Ответы (1)


Ошибка связана с тем, что токен темы может правильно заполнить html-помощник.

Я задаюсь вопросом, почему тестирование проводится по теме. Чтобы протестировать новый продукт xmlpackage, я обычно изменяю xmlpackage только для одного продукта в тестовой среде.

Если изменение xmlpackage продукта невозможно, я предлагаю вместо этого использовать XmlPackageController/engine. Что описано на странице https://help.aspdotnetstorefront.com/1000/xml_packages.htm под заголовком «Вызов пакетов XML сами по себе». Если вы используете XmlPackageController, убедитесь, что для атрибута allowengine установлено значение true в xmlpackage, иначе это также вызовет ошибку.

person Geach    schedule 11.02.2021
comment
Я ТОЛЬКО проверил вашу ссылку и ДА, вместо этого протестировав ее как тему с использованием движка (вызывая пакеты XML сами по себе), у меня получилось. ОГРОМНОЕ спасибо, приятель, я бился головой об стол больше недели! :-) - person Yan Kleber; 11.02.2021
comment
Я понимаю вопрос об использовании вариантов и отображении вариантов на одной и той же странице продукта. Я просто ничего не использую и, вероятно, начну с xmlpackage product.VariantsInList.xml.config или product.VariantsInGrid.xml.config для версии 10.0.24. Это все еще не объясняет, почему тема используется для отображения продукта. . - person Geach; 11.02.2021
comment
Что ж, за все эти годы настройки страниц в SF, я думаю, я закончил привыкать делать ВСЕ как темы. В основном пакеты xml, которые я делаю, предназначены для разделов сайта. Это первый раз, когда мне нужно сделать пользовательскую страницу для показа продуктов, и потому что привычка у меня закончилась, я делаю это как тему. В любом случае, с вашей помощью все разрешилось. Спасибо еще раз. - person Yan Kleber; 11.02.2021