Ich möchte sku in der Reihenfolge Zusammenfassung nach dem Produktnamen anzeigen.
Ich habe ein Pluging erstellt, das afterGetConfig
zu geänderten totalsData aufruft. Sie können den folgenden Code dafür sehen.
class ConfigProviderPlugin extends \Magento\Framework\Model\AbstractModel
{
public function afterGetConfig(\Magento\Checkout\Model\DefaultConfigProvider $subject, array $result)
{
$items = $result['totalsData']['items'];
for($i=0;$i<count($items);$i++){
$items[$i]['sku'] = "dgd";
}
return $result;
}
}
Dann detail.html
habe ich hinzugefügt
<div class="details-sku">
<span class="label"><!-- ko i18n: 'Sku' --><!-- /ko --></span>
<span class="value" data-bind="text: $parent.sku"></span>
</div>
Aber ich kann dort keinen Sku-Wert sehen. Ich kann nur Etikett sehen. siehe unten Screenshot.
Antworten:
Überschreiben Sie eine Vorlage (Vereinfachung von Joeys Antwort). Binden Sie direkt an das Objekt object.checkoutConfig.quoteItemData.
quelle
item_id
ist eine Zeichenfolge, während$parents[1].item_id
eine Ganzzahl ist, so===
wird nicht funktionieren. Verwendet==
und diese Methode funktioniert super. Vielen DankIn Magento 2 können Sie anzeigen,
sku
ohne Plugins zu erstellen. Ich poste nur diese Antwort, um bei Bedarf jemandem zu helfen.Überschreiben
vendor/magento/module-checkout/view/frontend/web/template/summary/item/details.html
Datei oder finden Sie die relevante Datei in Ihrem Thema. Sie solltenMagento_Checkout
in Ihrem Themenordner haben.Hinzufügen
<strong class="product-item-sku" data-bind="text: getSku($parent.item_id)"></strong>
,wo immer Sie wollen.
Dann überschreiben
vendor/magento/module-checkout/view/frontend/web/js/view/summary/item/details.js
Datei oder finden Sie die relevante Datei in Ihrem Thema. Sie sollten
Magento_Checkout
in Ihrem Themenordner haben. FügengetSku
Sie dann eine Funktion hinzu.Ihre
details.js
Datei sollte so aussehen mit zusätzlichergetSku
Funktion,Vielen Dank an Milan Pattani für seine große Hilfe
quelle
Ich habe eine Lösung gefunden. unten ist Arbeitscode.
Hoffe das hilft anderen Menschen.
quelle
Da ich mich diesem Problem selbst stellte und keine klare Antwort fand, dachte ich, ich würde posten, wie ich dieses Problem angegangen bin. Das Problem, das ich bei der akzeptierten Antwort sehe, ist, dass die gesamte Produktressource neu geladen wird, nur um die SKU zu erhalten.
Um zu verhindern, dass dieser Leistungsaufwand auftritt (und was ich für einen "saubereren" Ansatz zur Lösung dieses Problems halte):
Erstellen Sie in Ihren Modulen etc / di.xml eine Voreinstellung für \ Magento \ Quote \ Model \ Cart \ Totals \ Item
Erstellen Sie in dieser Klasse eine Set- und Get-Methode für sku
und presto: Die SKU wird jetzt der von getItems () zurückgegebenen Elementsammlung hinzugefügt und ist über knockout.js in Vorlagen wie Magento_Checkout / template / summary / item / details.html über Folgendes zugänglich:
Normalerweise versuche ich, Klassenüberschreibungen aufgrund der Aktualisierbarkeit zu vermeiden, aber dies ändert wirklich nichts an den Kernmethoden, indem ich der Klasse nur einen Setter und einen Getter für SKU hinzufüge. Ich gehe davon aus, dass dies auch mit jedem anderen Produktattribut funktioniert.
quelle
versuche
$result['totalsData']['items'][$i]['sku']="dgd";
statt$items[$i]['sku'] = "dgd";
Ich hoffe das hilft
quelle
$items = $result['totalsData']['items']; for($i=0;$i<count($items);$i++){ $items[$i]['sku'] = "dgd"; } $result['totalsData']['items'] = $items;