CMSページの静的ブロックのカスタムテンプレート?
-
16-10-2019 - |
質問
私はウェブを検索しましたが、これを行う方法が見つかりませんでした。
CMS-PAGEに以前に管理した静的ブロックを追加したいと思います。これは、この行のいずれかを使用して機能します。
{{block type="cms/block" block_id="my_block_id"}}
{{block type="cms/block" block_id="my_block_id" template="cms/content.phtml"}}
今、私はカスタムテンプレートを使用したい、つまり:
{{block type="cms/block" block_id="my_block_id" template="modulename/custom-template.phtml"}}
このようなCMSページに入れたとき、ブロックが表示されますが、「テンプレート」タグは完全に無視されます - cms/content.phtml
使用されている。
私が試したこと
クラスmage_block_cms_blockを拡張して追加しようとしました setTemplate($this->getTemplate());
に _toHtml()
-働き。効果は上記と同じです - cms/content.phtml
使用されている。
クラスmage_core_block_templateを拡張しようとしました。もちろん、ここでテンプレートを設定できますが、静的ブロックの取得に問題があります。ブロックIDでブロックを取得する方法が見つかりません。
この質問は何についてではありませんか /そうではありません
私はこれをPHPで行う方法を知っています。
XML-Filesでこれを行う方法を知っています。
この質問には、ブロックをバックエンドで管理できることが重要です。
Magento CE 1.7.0.0を実行します。
お時間をいただきありがとうございます!
解決
静的ブロックにはテンプレートがないため、静的ブロックのテンプレートを変更することはできません。方法を見てください: Mage_Cms_Block_Block::_toHtml()
. 。 _toHtml()
メソッドは、ブロックオブジェクトをレンダリングするために使用され、CMSブロックの場合、ブロックのコンテンツのみをレンダリングします。
いくつかのマークアップでCMSブロックのコンテンツをラップしたい場合は、これを試すことができます。
{{block type="core/template" template="custom/block.phtml" block_id="some_block_id"}}
ファイル内 custom/block.phtml
これを行う:
<?php
$block = Mage::app()->getLayout()->createBlock('cms/block')->setBlockId($this->getBlockId()); //retrieve the cms block with the id set on this layout block
$html = $block->toHtml();//in this var you have the content of the cms block
?>
<?php if ($html) : //this is needed to avoid additional markup if the cms block is empty?>
<div class="some-class">
<div class="some-other-class">
<?php echo $html;//actuall cms block?>
</div>
</div>
<?php endif;?>
これがあなたが必要としていたものであることを願っています。
他のヒント
一緒に試しましたか cms/widget_block
?このブロックはから伸びています Mage_Core_Model_Template
, 、したがって、あなたがやろうとしていることをすることが可能かもしれません。