2012-11-15 3 views
7

위젯 인스턴스를 통해 CMS 정적 블록을 삽입하고 있습니다. 위젯 템플릿 내에서 정적 블록 제목과 내용을 출력하고 싶습니다. 기본 서식 파일 (응용 프로그램/디자인/프론트 엔드/기초/기본/템플릿/CMS/위젯/static_block/default.phtml)는 단순히 있습니다Magento - cms 정적 블록의 제목을 block_id에서 가져 오는 중입니까?

<?php echo $this->getText(); ?> 

나는 GetData의()에 대신 무엇을 볼 것으로 변경 다음되는, 잡아 수 있었다 :

[type] => cms/widget_block 
[block_id] => 11 
[module_name] => Mage_Cms 
[text] => blahblahblah 

그래서 내가 유일한 방법은 제목을 얻기 위해 block_id를 사용하는 것 같은데요,하지만 아주 방법을 알아낼 수 없습니다. 거기에서 block_id를 가져올 수 있습니다. $ this-> getBlockId() - 그런데 그것을 어떻게 사용합니까?

가 나는 작동 할 수 있습니다 다음과 같은 생각하지만 그렇지 않습니다 : 그것은 서면보고

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

항상 여기에 질문을 작성하는 데 도움이 절반 시간 :

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

답변

9

다음 작품을 보인다 나 스스로 대답을 찾는데 도움이된다!

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; 
} 

그리고 사용하여 템플릿에 표시 :

0

다른 방법은 블록에 대한 함수를 만드는 것입니다

echo $this->getContactWidgetHtml(); 
1

여러 상점이있는 경우 당신이 원하는 당신이있는 상점은 다음과 같습니다 :

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