包括magento外部的magento标头。$this的问题->;getChildHtml()

包括magento外部的magento标头。$this的问题->;getChildHtml(),magento,Magento,我对这个话题进行了彻底的研究,但没有找到答案 我试图在WordPress页面中包含一个磁磁头。我创建了一个新的wordpress模板,并添加了以下代码 try { require_once ABSPATH . '/app/Mage.php'; if (Mage::isInstalled()) { $mage = Mage::app(); Mage::getSingleton('core/session', array('name' => '

我对这个话题进行了彻底的研究,但没有找到答案

我试图在WordPress页面中包含一个磁磁头。我创建了一个新的wordpress模板,并添加了以下代码

try {
    require_once ABSPATH . '/app/Mage.php';

    if (Mage::isInstalled()) {
        $mage = Mage::app();
        Mage::getSingleton('core/session', array('name' => 'frontend'));

        if(Mage::getDesign()->designPackageExists('xxx')) {
            Mage::getDesign()->setPackageName('xxx');
            Mage::getDesign()->setTheme('xxx');             
        }


        // init translator
        $mage->getTranslator()->init('frontend');

        // init head
        $head = $mage->getLayout()->getBlockSingleton('page/html_head');        
} }   
然后再往下一点,在我的模板里

echo $head->toHtml();
现在正在发生的是,头部的一些部分被回声,而有些部分没有

当我进入head.phtml并试图弄清楚发生了什么时,我注意到任何包含

$this->getChildHtml()
没有得到回应

我查看并注意到作者正在手动添加html和CSS。为什么会这样?为什么不自动添加它们?这是一个相关的问题吗


谢谢

您熟悉magento布局的渲染方式吗?使用
$head=$mage->getLayout()->getBlockSingleton('page/html_head')创建一个没有任何子项的新块。这就是作者需要再次添加JS和CSS的原因。要加载默认头块,请查看此线程。您可以使用
$layout->getBlock('head')->toHtml()加载它

要显示在头块内部生成的块,需要首先创建它,然后将其设置为头块的子项

例如,以下是我如何在Wordpress中显示Magento标题块,包括由原始header.phtml中的getChildHtml()生成的货币下拉框:

Mage::getSingleton('core/session', array('name' => 'frontend'));
$session = Mage::getSingleton("customer/session");
$layout = Mage::getSingleton('core/layout');

$headerBlock = $layout->createBlock('page/html_header')->setTemplate('page/html/header.phtml');
$currencyBlock = $layout->createBlock('directory/currency')->setTemplate('currency/currency.phtml');
$headerBlock->setChild('currency_selector', $currencyBlock);
$headerBlock = $headerBlock->toHtml();
然后,您可以在页面上所需的位置写入块:

echo $headerBlock;

我知道有点晚了,但希望这能帮助其他人解决这个问题。

我想加载我当前的主题标题“我们如何加载?”。