加载/获取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');

执行在那里停止,但是,我没有收到任何错误消息。我的目标是拉出block 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">

标签,所以也许我需要以某种方式指定它?我不确定自己在做什么错以及从这里去哪里。


此代码有效,但我对注销按钮有问题,有人遇到了同样的问题?问候
Massimo Camoni

Answers:


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

是的,我已经尝试过了,什么也没做。不过,这就是答案,我在新安装上尝试了一下,并且可以正常工作。谢谢。
Nick Rolando

我使这段代码正常工作,但是它并没有给我网站标题所具有的任何功能。站点标题具有多个徽标,菜单和链接。这给了我标题中许多图像之一。也许我没有正确加载?
Nick Rolando
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.