Acara checkout_onepage_controller_success_action
dipicu tepat sebelum tata letak ditampilkan, sehingga Anda masih dapat memanipulasinya.
Pengamat hanya menerima id pesanan sebagai parameter, jadi Anda harus mendapatkan tata letak melalui model aplikasi:
$layout = Mage::app()->getLayout();
Sekarang Anda dapat melakukan perubahan secara terprogram, seperti ini:
$messageBlock = $layout->createBlock('core/template', 'payment_message_block');
$messageBlock->setTemplate('payment_message.phtml');
$layout->getBlock('footer')->append($messageBlock);
Jika Anda menggunakan controller_action_layout_load_before
acara tersebut, Anda juga dapat memuat pegangan tata letak khusus seperti ini, jika pada halaman sukses:
if ($observer->getAction()->getFullActionName() === 'checkout_onepage_success') {
$layout = $observer->getLayout();
$layout->getUpdate()->addHandle('custom_layout_handle');
}
yang bisa Anda definisikan dalam XML:
<layout>
<custom_layout_handle>
<reference name="footer">
<block type="core/template" name="payment_message_block" template="payment_message.phtml" />
</reference>
</custom_layout_handle>
</layout>
Pembaruan: Blok footer di-cache, jadi kami harus memastikan bahwa versi yang berbeda diambil dari cache jika ada pesan. Sebagai contoh:
$footer = $layout->getBlock('footer');
$footer->setCacheKey(sha1($footer->getCacheKey() . '-payment-message');
bagaimana cara mengirimkan data genated ke file phtml? yang saya tunjukkan
Referensi blok Anda dengan nama dan gunakan setData()
. Sebagai contoh:
$block = $layout->getBlock('payment_message_block')->setData('messsage', 'Hello');
Dan di templat:
echo $this->getData('message');