Magento:Fishpig / Wordpress扩展不解析Post页面上的local.xml

时间:2012-01-26 20:21:41

标签: wordpress templates magento layout local

所以我在一个月前在我的Magento网站上设置了Fishpigs Wordpress扩展,一切运行良好。在某个地方,不知何故,在上周,格式化变得混乱。追踪出错的地方,我发现帖子页面停止使用我的自定义.phtml布局('wordpress.phtml')。所有其他与wordpress相关的页面都使用了该模板。

我添加了

<wordpress_default>
    <reference name="root">
        <action method="setTemplate"><template>page/wordpress.phtml</template></action>
    </reference>
</wordpress_default>

在我的 local.xml 中,一切都很好。今天我甚至尝试在扩展设置中设置所有布局和相同的交易,只有帖子页面没有呈现正确的布局。这是一个奇怪的问题,我不知道从哪里开始寻找......

1 个答案:

答案 0 :(得分:3)

我在这里看到三种可能性(假设你已经完成了清除缓存存储的神圣仪式)

  1. 对帖子页面的请求未加载您的local.xml文件,可能是因为它使用了不同的主题和/或设计包

  2. 帖子页面未发出wordpress_default句柄,因此虽然您的local.xml文件已包含在内,但您的setTemplate操作永远不会被调用

  3. 布局更新在布局更新后(通过XML或直接在PHP代码中)称为,将根模板设置为其他内容。

  4. 调查这三项中的每一项,你应该找到答案。

    关于选择#3,我没有安装FishPig扩展程序并且没有广泛使用它,但看起来扩展程序会在ViewController.php中执行一些jiggery pokery以自动将模板设置为page/1column.phtml如果wordpress页面对象(?我不知道这是什么)将字段设置为'onecolumn''1column'

    parent::loadLayout($handles, $generateBlocks, $generateXml);    
    
    if ($this->_getPage()) {
        $keys = array('onecolumn', '1column');
        $template = $this->_getPage()->getCustomField('_wp_page_template');
    
        foreach($keys as $key) {
            if (strpos($template, $key) !== false) {
                if ($rootBlock = $this->getLayout()->getBlock('root')) {
                    $rootBlock->setTemplate('page/1column.phtml');
                }
    
                break;
            }
        }
    }
    

    我会开始寻找那里。