Bueno, he localizado dónde está el Javascript que provoca es error, y he encontrado una forma de parchearlo. El problema es que se encuentra dentro del archivo /themes/core.js, que es un archivo del núcleo de Prestashop y, aparte de que creo que no es buena idea modificar cosas ahí, los cambios tampoco serán permanentes, ya que en el momento que se actualice la versión de Prestashop supongo que se perderán.
El caso es que el problema está en este fragmento:
success: function (e, n, o) { var a = (0, r.default)("<div>").append(e.product_cover_thumbnails); (0, r.default)(".images-container").html() !== a.find(".images-container").html() && (0, r.default)(".images-container").replaceWith(e.product_cover_thumbnails), (0, r.default)(".product-prices").replaceWith(e.product_prices), (0, r.default)(".product-customization").replaceWith(e.product_customization), (0, r.default)(".product-variants").replaceWith(e.product_variants), (0, r.default)(".product-discounts").replaceWith(e.product_discounts), (0, r.default)(".product-additional-info").replaceWith(e.product_additional_info), (0, r.default)("#product-details").replaceWith(e.product_details), (0, r.default)(".product-flags").replaceWith(e.product_flags), function (e) { var t = null; (0, r.default)(e.product_add_to_cart).each(function (e, n) { if ((0, r.default)(n).hasClass("product-add-to-cart")) return t = (0, r.default)(n), !1 }), null === t && d((0, r.default)("#product-availability"), "An error occurred while processing your request"); var n = (0, r.default)(".product-add-to-cart");
... que he modificado así:
success: function (e, n, o) { var parent = (0, r.default)("#product"); if ((0, r.default)(".modal.quickview.in").length > 0) { parent = (0, r.default)(".modal.quickview.in"); } var a = (0, r.default)("<div>").append(e.product_cover_thumbnails); parent.find(".images-container").html() !== a.find(".images-container").html() && parent.find(".images-container").replaceWith(e.product_cover_thumbnails), parent.find(".product-prices").replaceWith(e.product_prices), parent.find(".product-customization").replaceWith(e.product_customization), parent.find(".product-variants").replaceWith(e.product_variants), parent.find(".product-discounts").replaceWith(e.product_discounts), parent.find(".product-additional-info").replaceWith(e.product_additional_info), parent.find("#product-details").replaceWith(e.product_details), parent.find(".product-flags").replaceWith(e.product_flags), function (e) { var t = null; (0, r.default)(e.product_add_to_cart).each(function (e, n) { if ((0, r.default)(n).hasClass("product-add-to-cart")) return t = (0, r.default)(n), !1 }), null === t && d(parent.find("#product-availability"), "An error occurred while processing your request"); var n = parent.find(".product-add-to-cart");
Es decir, básicamente lo que hago es crear una variable padre a la cual asigno el elemento que tiene como ID "product" (que es el body), excepto en el caso que esté abierta la ventana modal del quickview, que en ese caso la pongo como padre a ella. Y luego ya todos los elementos que se buscan y reemplazan lo hago dentro de ese padre.
Como digo, así funciona correctamente, pero no me convence el sitio donde he tenido que hacer la modificación, aparte de dudar de su "durabilidad" en sucesivas actualizaciones. ¿A alguien se le ocurre alguna otra cosa?