2012-11-15 23 views
7

Ben bir widget örneği üzerinden bir cms statik blok takacağım - ve bu benim Widget şablonundan içinden, içerik olduğu gibi ben de çıktı statik blok başlığı istiyorum. Varsayılan şablonu (app/tasarım/kullanıcı arayüzü/baz/default/template/cms/Widget/static_block/default.phtml) basitçe vardır:Magento - Onun block_id bir cms statik blok başlığı mı alıyorsunuz?

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

Ben getData()yerine onu görmek için değişti takip ediyor, hangi kapmak mümkündü:

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

Yani tek yol başlığını almak için block_id kullanmaktır tahmin ediyorum, ama oldukça anlamaya olamaz. Oradan $ this- ile block_id yakala> getBlockId() - ama sonra başlık almak için kullanabilirsiniz nasıl?

Ben işe yarayabilecek şu düşündüm ama öyle değil: yazılıdır görerek

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

Her zaman burada bir soru yazmak için yardımcı olur, yarım saat:

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

cevap

9

aşağıdaki eserlerini görünüyor cevabı kendim bulmama yardım et!

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

Sonra kullanarak şablonda görüntülemek:

0

alternatif bir yaklaşım blokta bunun için bir işlev yaratmaktır

echo $this->getContactWidgetHtml(); 
1

Birden mağazası varsa ve sizin için istediğiniz Eğer üzerinde mağaza, bu böyledir:

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