En la página de visualización, por defecto, Magento muestra el precio más bajo de los productos asociados.
Necesito mostrar el precio más alto de los productos asociados. Cualquiera tiene idea de dónde reside la lógica. Cómo personalizar este comportamiento.
actualizar:
Magento \ ConfigurableProduct \ Precios \ Precio \ ConfigurablePriceResolver
/**
* @param \Magento\Framework\Pricing\SaleableInterface|\Magento\Catalog\Model\Product $product
* @return float
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function resolvePrice(\Magento\Framework\Pricing\SaleableInterface $product)
{
$price = null;
foreach ($this->configurable->getUsedProducts($product) as $subProduct) {
$productPrice = $this->priceResolver->resolvePrice($subProduct);
$price = $price ? min($price, $productPrice) : $productPrice;
}
if (!$price) {
throw new \Magento\Framework\Exception\LocalizedException(
__('Configurable product "%1" do not have sub-products', $product->getName())
);
}
return (float)$price;
}
Estoy tratando de anular este archivo principal, pero no funciona.
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="Magento\ConfigurableProduct\Pricing\Price\ConfigurablePriceResolver" type="Kensium\Catalog\Pricing\Price\ConfigurablePriceResolver" />
<?php
namespace Kensium\Catalog\Pricing\Price;
class ConfigurablePriceResolver extends \Magento\ConfigurableProduct\Pricing\Price\ConfigurablePriceResolver
{
/**
* @param \Magento\Framework\Pricing\SaleableInterface|\Magento\Catalog\Model\Product $product
* @return float
* @throws \Magento\Framework\Exception\LocalizedException
*/
public function resolvePrice(\Magento\Framework\Pricing\SaleableInterface $product)
{
$price = null;
$assPrice=array();
foreach ($this->configurable->getUsedProducts($product) as $subProduct) {
$productPrice = $this->priceResolver->resolvePrice($subProduct);
$assPrice[]=$productPrice;
$price = $price ? min($price, $productPrice) : $productPrice;
}
if (!$price) {
throw new \Magento\Framework\Exception\LocalizedException(
__('Configurable product "%1" do not have sub-products', $product->getName())
);
}
return (float)(max($assPrice));
//return (float)$price;
}
}
magento2
configurable-product
price
sivakumar
fuente
fuente
Respuestas:
Debe hacer un complemento para que se muestre el precio máximo dentro de la página de detalles, a continuación se muestra el módulo paso a paso para su necesidad,
Ruta de archivo, aplicación / código / Proveedor / Nombre del módulo /
Archivo de registro, aplicación / código / Proveedor / Nombre del módulo / registro.php
app / code / Vendor / Modulename / etc / module.xml
app / code / Vendor / Modulename / etc / frontend / di.xml
app / code / Vendor / Modulename / Pricing / ConfigurablePrice.php
Dentro de este archivo, debe pluginizar la función resolveprice ()
ejecutar comando
eliminar la carpeta var y verificar la interfaz
fuente
Ver
\Magento\ConfigurableProduct\Pricing\Price\ConfigurablePriceResolver::resolvePrice
. Es un método responsable de calcular el precio del producto configurable basado en el precio secundario.Puede completarlo e implementar su algoritmo.
fuente