In der Ansichtsseite zeigt Magento standardmäßig den niedrigsten Preis der zugehörigen Produkte an.
Ich muss den höchsten Preis der zugehörigen Produkte anzeigen. Jeder hat eine Idee, wo sich die Logik befindet. Wie kann man dieses Verhalten anpassen?
aktualisieren:
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;
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;
}
Ich versuche, diese Kerndatei zu überschreiben, aber es funktioniert nicht.
<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
quelle
quelle
Antworten:
Sie müssen ein Plugin erstellen, damit der maximale Preis auf der Detailseite angezeigt wird. Unten finden Sie ein schrittweises Modul für Ihre Anforderungen.
Dateipfad, App / Code / Anbieter / Modulname /
Registrierungsdatei, app / code / Vendor / Modulename / register.php
app / code / Vendor / Modulename / etc / module.xml
app / code / Vendor / Modulename / etc / frontend / di.xml
app / code / Vendor / Modulename / Pricing / ConfigurablePrice.php
Innerhalb dieser Datei müssen Sie pluginize resolveprice () Funktion
Führen Sie den Befehl aus
Entfernen Sie den var-Ordner und checken Sie das Frontend ein
quelle
Siehe
\Magento\ConfigurableProduct\Pricing\Price\ConfigurablePriceResolver::resolvePrice
. Diese Methode ist für die Berechnung des Preises eines konfigurierbaren Produkts auf der Grundlage des Kinderpreises verantwortlich.Sie können es einbinden und Ihren Algorithmus implementieren.
quelle