7

我正在通过一个小部件实例插入一个 cms 静态块 - 我想从我的小部件模板中输出静态块标题及其内容。默认模板(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->getBlockId()从那里获取 block_id - 但是我如何使用它来获取标题?

我认为以下可能有效,但它没有:

$blockid = $this->getBlockId();
$blocktitle = Mage::getModel('cms/page')->load($blockid, 'block_id')->getTitle();
4

3 回答 3

9

似乎以下作品:

$blockid = $this->getBlockId();
$block = Mage::getModel('cms/block')->load($blockid);
echo $block->getTitle();

在这里写出一个问题总是有帮助的,有一半的时间看到它写出来可以帮助我自己找到答案!

于 2012-11-15T11:57:04.723 回答
1

如果您有几家商店,并且想要您所在的商店,那就是这样:

$title = Mage::getModel('cms/block')
    ->setStoreId(Mage::app()->getStore()->getId())
    ->load($blockId)
    ->getTitle();
于 2015-06-15T05:48:57.507 回答
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();
于 2014-06-20T11:01:53.740 回答