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.xmlLayoutdatei 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 referenceContaineroder 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 beforeoder aftermarkieren Sie, um anzugeben, wo Sie Ihre Vorlage vor oder nach dem order.success.additional.infoContainer hinzufügen möchten . Hier after="-"fügen Sie Ihre Vorlage dem order.success.additional.infoContainer 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(); ?>