2012-11-15 4 views
7

Ich füge einen statischen cms-Block über eine Widget-Instanz ein - und ich möchte den statischen Blocktitel sowie seinen Inhalt aus meiner Widget-Vorlage heraus ausgeben. Die Standardvorlage (app/design/frontend/base/default/template/cms/Widget/static_block/default.phtml) hat einfach:Magento - Den Titel eines statischen cms-Blocks von seiner block_id abrufen?

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

ich geändert, dass auf getData() statt, was es zu sehen zu greifen war möglich, das ist die folgende:

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

So kann ich vermute, der einzige Weg, um die block_id zu verwenden ist, den Titel zu bekommen, aber nicht ganz herausfinden, wie. Ich kann die block_id von dort mit $ this-> getBlockId() greifen - aber dann, wie benutze ich das, um den Titel zu bekommen?

Ich dachte, folgendes könnte funktionieren, aber es funktioniert nicht:

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

Antwort

9

folgende Arbeiten scheint:

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

hilft immer hier eine Frage zu schreiben, die Hälfte der Zeit geschrieben zu sehen hilft mir, die Antwort selbst zu finden!

0

Ein alternativer Ansatz ist es, eine Funktion für sie auf dem Block zu erstellen:

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

Und es dann in der Vorlage angezeigt werden:

echo $this->getContactWidgetHtml(); 
1

Wenn Sie mehrere Geschäfte haben und Sie wollen für der Laden, in dem Sie sich befinden, ist es so:

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