Sie können eine beliebige Layoutdatei von Magento in Ihrem Modul verwenden, um Ihren benutzerdefinierten Block einzufügen. In Ihrem Fall müssen Sie eine checkout_onepage_success.xml
Layoutdatei in Ihrem benutzerdefinierten Modul verwenden, die aktiv ist, wenn sich ein Kunde auf der Seite mit dem Erfolg der Bestellung befindet. In der Layoutdatei müssen Sie angeben, wo Sie Ihre benutzerdefinierte Vorlage mit referenceContainer
oder hinzufügen möchten referenceBlock
.
Für Sie habe ich ein einfaches Modul erstellt und es getestet, das gut funktioniert.
Registrierung.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
Magento\Framework\Component\ComponentRegistrar::MODULE,
'Amit_Orderpage',
__DIR__
);
composer.json
{
"name": "amit/orderpage-module",
"description": "Simple Magento 2 module that adds a new template on order success page.",
"type": "magento2-module",
"version": "1.0.0",
"license": [
"OSL-3.0",
"AFL-3.0"
],
"require": {
"php": "~5.5.0|~5.6.0|~7.0.0",
"magento/framework": "~100.0"
},
"autoload": {
"files": [ "registration.php" ],
"psr-4": {
"Amit\\Orderpage\\": ""
}
}
}
etc / module.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Amit_Orderpage" setup_version="2.0.0"/>
</config>
Block / Success.php
<?php
namespace Amit\Orderpage\Block;
class Success extends \Magento\Framework\View\Element\Template
{
public function getSomething()
{
return 'returned something from custom block.';
}
}
view / frontend / layout / checkout_onepage_success.xml
<?xml version="1.0"?>
<body>
<referenceContainer name="order.success.additional.info">
<block class="Amit\Orderpage\Block\Success"
name="amit.order.success"
template="Amit_Orderpage::order/success.phtml"
after="-">
</block>
</referenceContainer>
</body>
Geben Sie an before
oder after
markieren Sie, um anzugeben, wo Sie Ihre Vorlage vor oder nach dem order.success.additional.info
Container hinzufügen möchten . Hier after="-"
fügen Sie Ihre Vorlage dem order.success.additional.info
Container hinzu, nachdem alle anderen Container im selben Abschnitt vorhanden sind.
view / frontend / templates / order / success.phtml
<?php /* @var $block \Amit\Orderpage\Block\Success */?>
<?php echo __('Custom template file content.'); ?>
<?php echo $block->getSomething(); ?>
Wenn Sie das aktuelle $ order-Objekt in Ihrer Block- / HTML-Datei verwenden / darauf zugreifen möchten, ohne den ursprünglichen Block / die Vorlage für den Erfolg der Bestellung zu überschreiben. Hier ist die Komplettlösung:
Registrierung.php
etc / module.xml
app / code / MageAj / OrderSuccess / view / frontend / layout / checkout_onepage_success.xml
app / code / MageAj / OrderSuccess / ViewModel / Checkout / Onepage / Success.php
app / code / MageAj / OrderSuccess / view / frontend / templates / order / success.phtml
quelle
Wenn Sie kein neues Modul erstellen möchten, können Sie dies auch in Ihrem Thema tun. Befolgen Sie die folgenden Schritte:
1.Erstellen Sie
checkout_onepage_success.xml
in Ihrem Thema. Zum Beispiel:Der Inhalt der Datei ist:
2. Dann müssen Sie die Vorlagendatei erstellen:
Sie können der Vorlage beliebigen Inhalt hinzufügen. Zum Beispiel:
Leeren Sie den Cache und Sie sind fertig.
quelle
In checkout_onepage_success.xml: -
Ich habe meinen Code schon einmal verpasst. Kannst du meine Antwort jetzt überprüfen?
fschmengler
quelle
Sie können referenceContainer oder referenceBlock verwenden, um Ihre HTML-Datei in der Reihenfolge des Erfolgs hinzuzufügen.
quelle