Załaduj / pobierz blok poza routingiem Magento do użytku zewnętrznego

15

Mam zewnętrzną stronę internetową i próbuję pobrać blok nagłówka witryny ze środowiska Magento, aby użyć go jako nagłówka na tej stronie zewnętrznej. Oto co mam do tej pory:

// 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');

Wykonanie jednak się tam kończy i nie otrzymuję komunikatów o błędach. Moim celem jest ściągnięcie bloku Mage_Page_Block_Html_Header, który moim zdaniem mogę użyć do załadowania <block type="page/html_header" name="header" as="header">całej zawartości z pliku układu page.xml. Ten znacznik XML jest zawinięty w środku

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

tagi, więc może muszę to jakoś określić? Nie jestem pewien, co robię źle i dokąd się udać.

Nick Rolando
źródło
ten kod działa, ale mam problem z przyciskiem wylogowania, ktoś ma ten sam problem? Pozdrawiam
Massimo Camoni,

Odpowiedzi:

12

Znalazłem sekretny składnik .. i jest 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();

Dzięki @benmarks!

Nick Rolando
źródło
3

Jesteś tam 99%. Musisz wywołać metodę toHtml () w bloku, a następnie wywołać echo, aby zobaczyć wynik:

<?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
źródło
Tak, próbowałem tego i nic. Oto odpowiedź: wypróbowałem ją na nowej instalacji i działa. Dzięki.
Nick Rolando
Mam ten kod działający, jednak nie daje mi to dostępu do niczego, co ma nagłówek strony. Nagłówek witryny ma kilka logo, menu i łącza. To daje mi jeden z wielu obrazów w nagłówku. Być może nie ładuję go poprawnie?
Nick Rolando