Você pode usar qualquer arquivo de layout do Magento no seu módulo para inserir seu bloco personalizado. No seu caso, você precisa usar o checkout_onepage_success.xml
arquivo de layout em seu módulo personalizado, que estará ativo quando um cliente estiver na página de êxito do pedido. No arquivo de layout, você precisa especificar onde deseja adicionar seu modelo personalizado usando referenceContainer
ou referenceBlock
.
Para você, criei um módulo simples e testei o que funciona bem.
registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
Magento\Framework\Component\ComponentRegistrar::MODULE,
'Amit_Orderpage',
__DIR__
);
compositer.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.';
}
}
visualizar / 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>
Especifique before
ou after
marque para especificar onde você deseja adicionar seu modelo antes ou depois do order.success.additional.info
contêiner. Aqui, after="-"
você adicionará seu modelo ao order.success.additional.info
container, depois de todos os outros containers presentes na mesma seção.
view / frontend / templates / order / success.phtml
<?php /* @var $block \Amit\Orderpage\Block\Success */?>
<?php echo __('Custom template file content.'); ?>
<?php echo $block->getSomething(); ?>
Se você deseja utilizar / acessar o objeto $ order atual em seu arquivo block / html, sem substituir o bloco / modelo de sucesso do pedido original. Aqui está a solução completa:
registration.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
fonte
Se você não deseja criar um novo módulo, também pode fazê-lo no seu tema. Siga as etapas abaixo:
1. Crie
checkout_onepage_success.xml
no seu tema. Por exemplo:O conteúdo do arquivo é:
2.Então você precisa criar o arquivo de modelo:
Você pode adicionar qualquer conteúdo no modelo. Por exemplo:
Limpe o cache e pronto.
fonte
Em checkout_onepage_success.xml: -
Perdeu meu código antes, você pode verificar minha resposta agora.
fschmengler
fonte
você pode usar referenceContainer ou referenceBlock para adicionar seu arquivo phtml na página de sucesso dos pedidos.
fonte