Memuat / Dapatkan blok di luar perutean Magento untuk penggunaan eksternal

15

Saya memiliki halaman web eksternal dan saya mencoba untuk menarik blok header situs dari kerangka kerja Magento untuk digunakan sebagai header di halaman eksternal ini. Inilah yang saya miliki sejauh ini:

// initialize Magento
$rootPath = dirname(dirname(__FILE__));
$mageInc = $rootPath . "/app/Mage.php";
include_once $mageInc;

Mage::app('admin')->setCurrentStore(0);

$headerBlock = Mage::app()->getLayout()->createBlock('page/html_header');
//also tried
//$headerBlock = Mage::app()->getLayout()->createBlock('page/html_header', 'header');

Eksekusi berhenti di sana, dan saya tidak mendapatkan pesan kesalahan. Tujuan saya adalah menarik blok Mage_Page_Block_Html_Header, yang menurut saya dapat saya gunakan untuk memuat <block type="page/html_header" name="header" as="header">dan semua kontennya dari file layout page.xml. Tag XML itu terbungkus di dalamnya

<default translate="label" module="page">
  <block type="page/html" name="root" output="toHtml" template="page/1column.phtml">

tag, jadi mungkin saya perlu menentukannya entah bagaimana? Saya tidak yakin apa yang saya lakukan salah dan ke mana harus pergi dari sini.

Nick Rolando
sumber
kode ini berfungsi tetapi saya memiliki masalah dengan tombol logout, ada yang punya masalah yang sama? Salam
Massimo Camoni

Jawaban:

12

Saya menemukan bahan rahasia .. dan itu Mage::app()->loadArea('frontend');

<?php
include_once "app/Mage.php";
umask(0);
Mage::app()->loadArea('frontend');

$layout = Mage::getSingleton('core/layout');

//load default xml layout handle and generate blocks
$layout->getUpdate()->load('default');
$layout->generateXml()->generateBlocks();

//get the loaded head and header blocks and output
$headBlock = $layout->getBlock('head');
$headerBlock = $layout->getBlock('header');
echo $headBlock->toHtml() . $headerBlock->toHtml();

Terima kasih @pembanda!

Nick Rolando
sumber
3

Anda 99% di sana. Anda perlu memanggil toHtml () di blok, dan kemudian menggema untuk melihat hasilnya:

<?php
// initialize Magento
$rootPath = dirname(dirname(__FILE__));
$mageInc = $rootPath . "/app/Mage.php";
include_once $mageInc;

Mage::app('admin')->setCurrentStore(0);

echo $headerBlock = Mage::app()->getLayout()->createBlock('page/html_header')->toHtml();
Luke Mills
sumber
Ya, saya sudah mencobanya dan tidak ada. Ini adalah jawabannya, saya mencobanya pada instal baru dan berfungsi. Terima kasih.
Nick Rolando
Saya membuat kode ini berfungsi, namun tidak memberi saya hampir apa pun yang dimiliki header situs. Header situs memiliki beberapa logo, menu, dan tautan. Ini memberi saya salah satu dari banyak gambar di header. Mungkin saya tidak memuatnya dengan benar?
Nick Rolando