Carica / Ottieni un blocco al di fuori del routing Magento per uso esterno


15

Ho una pagina Web esterna e sto cercando di estrarre il blocco di intestazione del sito dal framework Magento da utilizzare come intestazione in questa pagina esterna. Questo è quello che ho finora:

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

L'esecuzione si ferma qui, tuttavia, e non ricevo messaggi di errore. Il mio obiettivo è quello di estrarre il blocco Mage_Page_Block_Html_Header, che penso di poter usare per caricare <block type="page/html_header" name="header" as="header">e tutto il suo contenuto dal file di layout page.xml. Quel tag XML è racchiuso all'interno

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

tag, quindi forse devo specificarlo in qualche modo? Non sono sicuro di cosa sto facendo di sbagliato e dove andare da qui.


questo codice funziona ma ho un problema con il pulsante di logout, qualcuno ha lo stesso problema? Saluti
Massimo Camoni,

Risposte:


12

Ho trovato l'ingrediente segreto .. ed è 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();

Grazie @benmarks!


3

Ci sei al 99% lì. È necessario chiamare toHtml () sul blocco, quindi ripetere l'eco per vedere il risultato:

<?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();

Sì, l'ho provato e niente. Questa è la risposta però, l'ho provato su una nuova installazione e funziona. Grazie.
Nick Rolando,

Ho fatto funzionare questo codice, tuttavia non mi dà nulla di simile all'intestazione del sito. L'intestazione del sito ha diversi loghi, menu e collegamenti. Questo mi dà una delle tante immagini nell'intestazione. Forse non lo sto caricando correttamente?
Nick Rolando,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.