Sie können dies mit XML für Massenprodukte tun. Dafür müssen Sie den Helfer überschreiben und ein Attribut dafür erstellen. Lassen Sie sich von mir beschreiben.
Schritt 1: Erstellen Sie das Produktattribut ' customlayout '.
- Erstellen Sie ein cutom-Produktattribut für ein benutzerdefiniertes Layout. Hier habe ich gerade das Attribut ' customlayout ' mit dem Typ boolean (yes / no) erstellt .
- Weisen Sie dieses Attribut im entsprechenden Attributsatz zu.
- Jetzt ist " benutzerdefiniertes Layout " in Produkten sichtbar. Setzen Sie " Ja" in den Produkten, für die Sie ein anderes Layout festlegen möchten.
Schritt 2: Überschreiben Sie die Hilfsfunktion initProductLayout ().
Überschreiben Sie die Hilfsfunktion in Ihrem benutzerdefinierten Modul und ändern Sie sie in der Datei di.xml , um die Hilfsfunktion zu überschreiben.
app / code / YourCompany / YourModule / etc / di.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="Magento\Catalog\Helper\Product\View" type="YourCompany\YourModule\Helper\Product\View" />
</config>
in der Datei YourCompany \ YourModule \ Helper \ Product \ view.php .
public function initProductLayout(ResultPage $resultPage, $product, $params = null)
{
......
// add handle params
......
if ($params && $params->getBeforeHandles()) {
foreach ($params->getBeforeHandles() as $handle) {
$resultPage->addPageLayoutHandles(['customlayout' => $product->getCustomlayout(), 'id' => $product->getId(), 'sku' => $urlSafeSku], $handle);
$resultPage->addPageLayoutHandles(['type' => $product->getTypeId()], $handle, false);
}
}
$resultPage->addPageLayoutHandles(['customlayout' => $product->getCustomlayout(), 'id' => $product->getId(), 'sku' => $urlSafeSku]);
$resultPage->addPageLayoutHandles(['type' => $product->getTypeId()], null, false);
if ($params && $params->getAfterHandles()) {
foreach ($params->getAfterHandles() as $handle) {
$resultPage->addPageLayoutHandles(['customlayout' => $product->getCustomlayout(), 'id' => $product->getId(), 'sku' => $urlSafeSku], $handle);
$resultPage->addPageLayoutHandles(['type' => $product->getTypeId()], $handle, false);
}
}
........
}
Hier habe ich ein benutzerdefiniertes Attribut für ein benutzerdefiniertes Layout-Handle hinzugefügt. Jetzt können Sie eine benutzerdefinierte Layoutdatei erstellen, um dieses Attribut zu verwenden.
Lassen Sie uns eine benutzerdefinierte Handle-Datei erstellen.
Schritt 3: Erstellen Sie eine Layoutdatei für ein benutzerdefiniertes Layout.
Erstellen Sie eine Layoutdatei in Ihrem benutzerdefinierten Design / Modul.
catalog_product_view_customlayout_1.xml
Hier können Sie Ihre benutzerdefinierten Änderungen festlegen. Es wird auf alle Produkte angewendet , deren Attibute-Wert " Ja " " Ja " ist.
$layout->getUpdate()->addHandle('your_handler_name');
, Ich verstehe den Handler nicht, ich habe auch F & E für den Layout-Handler, Ressourcen machen mich nicht verständlich. Wenn Sie mir helfen können ODER einige nützliche Links.