2012-11-15 36 views
7

我通过一个小部件实例插入一个cms静态块 - 我想从我的小部件模板中输出静态块标题以及它的内容。默认的模板(应用程序/设计/前端/基/默认/模板/ CMS /空间/ static_block/default.phtml)只是有:Magento - 从它的block_id获取cms静态块的标题?

<?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(); 

回答

9

似乎以下工作:

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

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

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(); 
1

如果你有几个商店,你想要你所在的商店,就是这样的:

$title = Mage::getModel('cms/block') 
    ->setStoreId(Mage::app()->getStore()->getId()) 
    ->load($blockId) 
    ->getTitle();