Завантажте / отримайте блок поза маршрутизацією Magento для зовнішнього використання


15

У мене зовнішня веб-сторінка, і я намагаюся витягнути заголовок сайту з фреймворку Magento, щоб використовувати його як заголовок на цій зовнішній сторінці. Ось що я маю досі:

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

Однак виконання там зупиняється, і я не отримую жодних повідомлень про помилки. Моя мета - вивести блокMage_Page_Block_Html_Header , який, я думаю, я можу використовувати для завантаження <block type="page/html_header" name="header" as="header">та всього його вмісту з файлу макета page.xml. Цей тег XML загорнутий всередину

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

теги, тож, можливо, мені потрібно це якось вказати? Я не впевнений, що я роблю не так і куди піти звідси.


цей код працює, але у мене є проблема з кнопкою виходу, у когось така ж проблема? З повагою
Массімо Камоні

Відповіді:


12

Я знайшов секретний інгредієнт .. і це 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();

Дякую @benmarks!


3

Ви там на 99%. Вам потрібно зателефонувати toHtml () на блок, а потім повторити його, щоб побачити результат:

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

Так, я спробував це і нічого. Це відповідь, хоча я спробував це при новому встановленні, і він працює. Спасибі.
Нік Роландо

У мене цей код працює, однак він не дає мені майже нічого, що має заголовок сайту. Заголовок сайту має кілька логотипів, меню та посилань. Це дає мені одне з багатьох зображень у заголовку. Можливо, я не завантажую його правильно?
Нік Роландо
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.