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