2011-01-12 12 views
40

newest_product(コンテンツ付き)という静的ブロックがあります。.phtmlファイルにhtmlと表示したいと思います。Magento:phtmlファイルのHTMLとして静的なブロックを取得

私はこのコードを試してみた:

echo $this->getLayout()->createBlock('cms/block')->setBlockId('newest_product')->toHtml(); 

をしかし、これは何も表示されていません。

私は間違ったコードを使用していますか?レイアウトで

+3

キャッシュを更新しましたか?コードシームが正しいこと – teemitzitrone

答えて

48

(アプリ/設計/フロントエンド/ your_theme /レイアウト/ default.xmlの):あなたのPHTMLテンプレートで

<default> 
    <cms_page> <!-- need to be redefined for your needs --> 
     <reference name="content"> 
      <block type="cms/block" name="cms_newest_product" as="cms_newest_product"> 
       <action method="setBlockId"><block_id>newest_product</block_id></action> 
      </block> 
     </reference> 
    </cms_page> 
</default> 

<?php echo $this->getChildHtml('newest_product'); ?> 

がキャッシュクリーニングを忘れないでください。

助けてくれると思います。

+0

チャイルドCMSブロックのタイトルを取得するための回避策はありますか?私はPHPを介してタイトルを取得することができますが、私はどのようにレイアウトxmlによってロードされるブロックのタイトルを取得するか分からない.. TIA – Kamal

+0

個々のXMLファイルをオーバーライドする代わりにレイアウトテーマでlocal.xmlを使用する方が一般的には良いことを忘れないでください。 – bassplayer7

+1

は私のニーズに合うように再定義されましたか? – Sam

8

私はそれが作業を行いますが、今CMSブロック内の変数はもうパースされていない:(

+0

これは私にとっては唯一の解決策です。あなたは大いに – RPDeshaies

+0

これは、cmsブロック –

11

を、あなたのテンプレート/ブロックファイルにcmsblockをロードする場合、これはあなた

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

のために働くだろうと思います以下のようにあなたがこれを行うことができます/モデルなど。これは

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

$var = array('variable' => 'value', 'other_variable' => 'other value'); 
/* This will be {{var variable}} and {{var other_variable}} in your CMS block */ 

$filterModel = Mage::getModel('cms/template_filter'); 
$filterModel->setVariables($var); 

echo $filterModel->filter($block->getContent()); 
+0

でエディタを介してアップロードされた画像を取得しません。これは、XMLと 'getChildHtml()'を使用せずにcmsブロック内の変数を含む.phtmlファイルからブロックを表示する唯一の方法です。 。 – MrUpsidown

21
<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('my_static_block_name')->toHtml() ?> 
cmsblock内の任意の変数の場所をレンダリングしますこのリンクを詳細に使用 http://www.justwebdevelopment.com/blog/how-to-call-static-block-in-magento/
+0

この悪い少年は私のために働いた - 歓声! –

+0

提供されたリンクは、より多くの情報を示して、それが助けてくれました。 – Sunry

73

管理パネルから「block_identifier」という名前のCMSブロックを作成した場合は、 は、その後、あなたがMagentoの中でCMS-静的ブロックを呼び出したときに動作します.phtml

<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('block_identifier')->toHtml(); 
?> 
+3

私はこのアプローチがより好きですeMcsが言及した。レイアウトを使用することは、ほとんどの時間が乱雑です – karantan

+0

それも好きです。また、__Mage :: getModel( 'cms/block')__メソッドよりも簡単です。 – Sunry

+0

phtmlファイルの@karantan設定IDは、基本的にはテンプレート内でハードコーディングしています。レイアウトは、IDが使用される予定のシステムの構成部分を表します。それが役に立てば幸い。 –

5

次のコードでそれらを呼び出すコードになります以下。

<?php echo 

$this->getLayout()->createBlock('cms/block')->setBlockId('block_identifier')->toHtml(); 

?> 
+0

これは以前に投稿されたのと同じ回答です。 –

2

これはテスト済みのとおりです。

<?php 
$filter = new Mage_Widget_Model_Template_Filter(); 
$_widget = $filter->filter('{{widget type="cms/widget_page_link" template="cms/widget/link/link_block.phtml" page_id="2"}}'); 
echo $_widget; 
?> 
1

という名前の新しいCMSのブロックを作成するときに、あなたの.phtmlファイルからそれを呼び出すために、次のコードを使用することができ、管理パネルからblock_identifier:

<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('block_identifier')->toHtml(); 
?> 

が続いてキャッシュをクリアし、リロードあなたのブラウザ。