Magento createBlock方法不工作,显示静态块数据

Magento createBlock方法不工作,显示静态块数据,magento,Magento,好的,我在我的CMS区域创建了静态块,我试图在我创建的自定义主页模板中输出它们 我能找到的每个文档都表示要按如下方式输出块 <?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('my-block-identifier')->toHtml() ?> 这对我不起作用,所以我尝试了另一种方法 在管理中,当您编辑静态块的内容时,您将从顶部看到一个名为Identifier

好的,我在我的CMS区域创建了静态块,我试图在我创建的自定义主页模板中输出它们

我能找到的每个文档都表示要按如下方式输出块

    <?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('my-block-identifier')->toHtml() ?>

这对我不起作用,所以我尝试了另一种方法


在管理中,当您编辑静态块的内容时,您将从顶部看到一个名为Identifier second的字段。复制该字段的值,并将其插入代码中。因此,如果您的块在管理中被称为
联系人信息
,那么您的代码将如下所示:

<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('contact-info')->toHtml() ?>

管理员中该标识符文本框中的值也是您计算后将保存到
cms_块中的值

嗯,,
JD

查看
cms/block
block源代码,这些教程误导了您,或者您误解了它们

#File: app/code/core/Mage/Cms/Block/Block.php
class Mage_Cms_Block_Block extends Mage_Core_Block_Abstract
{
    protected function _toHtml()
    {
        if (!$this->_beforeToHtml()) {
            return '';
        }
        $html = '';
        if ($blockId = $this->getBlockId()) {
            $block = Mage::getModel('cms/block')
                ->setStoreId(Mage::app()->getStore()->getId())
                ->load($blockId);
            if (!$block->getIsActive()) {
                $html = '';
            } else {
                $content = $block->getContent();

                $processor = Mage::getModel('core/email_template_filter');
                $html = $processor->filter($content);
            }
        }
        return $html;
    }
}
块内容始终加载
->load($blockId)--
load
使用一个参数始终意味着使用数据库ID进行住宿

因此,如果块中没有支持的方法来执行此操作,则需要查找块ID

$model = Mage::getModel('cms/block')->getCollection()
->addFieldToFilter('identifier','footer_links')
->getFirstItem();

var_dump($model->getBlockId()); 

对,这就是我在上面发布的内容。问题是,setBlockId没有按照我的预期工作,它将只通过手动查找的block_id字段引用块,而不是管理部分中的命名块。我认为这与我首先在主页cms页面中引用一个块有关,例如{{Block type=“core/template”template=“home/home.phtml”},然后在该.phtml中我调用子块。因此,基本上我正在寻找一种解决方法,通过“标识符”(名称)查找块id
$model = Mage::getModel('cms/block')->getCollection()
->addFieldToFilter('identifier','footer_links')
->getFirstItem();

var_dump($model->getBlockId());