0

我已经非常彻底地研究了这个主题,但找不到答案。

我正在尝试将 Magneto 头包含到 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。为什么是这样?为什么不自动添加它们?这是一个相关的问题吗

谢谢

4

2 回答 2

0

您熟悉如何渲染 magento 布局吗?与$head = $mage->getLayout()->getBlockSingleton('page/html_head');您一起创建一个没有任何子项的新块。这就是为什么作者需要再次添加JS和CSS。要加载默认的 head 块,请查看Magento 外部的这个线程 Load 块。您可以使用$layout->getBlock('head')->toHtml();.

于 2013-06-06T12:06:16.413 回答
0

要显示在标题块内生成的块,您需要先创建它,然后将其设置为标题块的子级。

例如。这是我在 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;

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

于 2014-06-10T11:37:53.397 回答