Magento: получить статический блок в виде HTML в файле phtml - PullRequest
40 голосов
/ 12 января 2011

У меня есть статический блок с именем newest_product (с содержимым), и я хотел бы отобразить его в файле .phtml как html .

Я пробовал этот код:

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

Но это ничего не отображается.

Я использую неправильный код?

Ответы [ 8 ]

77 голосов
/ 27 ноября 2012

Если вы создали блок CMS с именем 'block_identifier' из панели администратора.Тогда следующий код будет вызывать их в .phtml

<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('block_identifier')->toHtml(); 
?> 
50 голосов
/ 12 января 2011

В макете (app / design / frontend / your_theme / layout / default.xml):

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

В вашем шаблоне phtml:

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

Не забудьте про очистку кеша.

Думаю, это поможет.

21 голосов
/ 23 октября 2012
<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('my_static_block_name')->toHtml() ?>

и используйте эту ссылку для более http://www.justwebdevelopment.com/blog/how-to-call-static-block-in-magento/

12 голосов
/ 11 октября 2012

Если вы хотите загрузить cmsblock в ваш шаблон / блок-файл / модель и т. Д. Вы можете сделать это следующим образом.Это сделает все переменные местами в cmsblock

$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());
8 голосов
/ 25 июля 2012

Я думаю, что это будет работать для вас

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

Это работает, но теперь переменные в блоке CMS больше не анализируются: (

5 голосов
/ 04 декабря 2013

Следующий код будет работать при вызове CMS-Static Block в Magento.

<?php echo 

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

?>
2 голосов
/ 22 марта 2017

Когда вы создаете новый блок CMS с именем block_identifier из панели администратора, вы можете использовать следующий код для вызова его из вашего файла .phtml:

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

Затем очистите кеш и перезагрузите браузер.

2 голосов
/ 17 ноября 2014

Это должно работать как проверено.

<?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;
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...