Magento - 从它的block_id获取cms静态块的标题?

时间:2012-11-15 11:52:51

标签: magento

我正在通过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();

3 个答案:

答案 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();