我正在通过widget实例插入一个cms静态块 - 我想从我的widget模板中输出静态块标题及其内容。默认模板(app / design / frontend / base / default / template / cms / widget / static_block / default.phtml)只有:
<?php echo $this->getText(); ?>
我将其更改为 getData()而不是查看可以抓取的内容,具体如下:
[type] => cms/widget_block
[block_id] => 11
[module_name] => Mage_Cms
[text] => blahblahblah
所以我猜测唯一的方法是使用block_id获取标题,但不能弄清楚如何。我可以使用 $ this-&gt; getBlockId()从那里获取block_id - 但是我如何使用它来获取标题?
我认为以下内容可能有效,但事实并非如此:
$blockid = $this->getBlockId();
$blocktitle = Mage::getModel('cms/page')->load($blockid, 'block_id')->getTitle();
答案 0 :(得分:9)
似乎有以下作用:
$blockid = $this->getBlockId();
$block = Mage::getModel('cms/block')->load($blockid);
echo $block->getTitle();
总是有助于在这里写出一个问题,看到它写的一半时间帮助我自己找到答案!
答案 1 :(得分:1)
如果您有多家商店而且您想要商店,那就是:
$title = Mage::getModel('cms/block')
->setStoreId(Mage::app()->getStore()->getId())
->load($blockId)
->getTitle();
答案 2 :(得分:0)
另一种方法是在你的块上为它创建一个函数:
public function getContactWidgetHtml()
{
$result = '';
$widget = Mage::getModel('widget/widget_instance')->load(14);
if ($widget && $widget->getId()) {
$widgetBlock = $this->getLayout()
->createBlock(
$widget->getType(),
$widget->getTitle(),
$widget->getWidgetParameters()
);
if ($widgetBlock) {
$result = $widgetBlock->toHtml();
}
}
return $result;
}
然后使用以下方法在模板中显示:
echo $this->getContactWidgetHtml();