如何将CMS页面的内容拉入静态块?

时间:2011-03-23 23:28:16

标签: php templates magento content-management-system render

我想将CMS页面的内容提取到我的静态块中,如果您知道这样做的方法,我将不胜感激。

4 个答案:

答案 0 :(得分:19)

Haven未对此进行测试,但它应该可行。如果您拥有cms页面的唯一ID(不是标识符):

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

否则,如果您有页面标识符(即URL密钥),请使用以下内容:

$urlKey = "url_key";
$page->load($urlKey,'identifier');

然后完成:

$helper = Mage::helper('cms');
$processor = $helper->getPageTemplateProcessor();
$html = $processor->filter($page->getContent());
return $html;

==编辑==

添加了Alan

建议的模板解析步骤

答案 1 :(得分:3)

反过来做。在静态块和include it in a page或其他静态块中创建内容。

答案 2 :(得分:3)

没有办法(我知道)开箱即用。

但是,由于静态块编辑界面允许您将小部件插入到静态块中,因此我将实现一个呈现CMS页面内容的小部件。我a basic implementation我一直在玩,但是太忙了,不能充实。它是功能性的,但如果你试图在任何一个http请求中插入大量的小部件,它将不会超级性能。随意尝试一下;任何反馈都表示赞赏。

如果您对如何以编程方式呈现CMS页面感兴趣,请查看Mage_Cms_Block_Page::_toHtml()方法。

    $helper = Mage::helper('cms');
    $processor = $helper->getPageTemplateProcessor();
    $html = $processor->filter($this->getPage()->getContent());
    $html = $this->getMessagesBlock()->getGroupedHtml() . $html;
    return $html;

$this->getPage()的调用会返回cms/page模型。上面的额外代码是必要的,因为它将页面传递给替换指令标记的过滤器({{...}}

答案 3 :(得分:-3)

       $model =Mage::getModel('cms/page')->load('welcome','identifier');
       echo '<h2>'.$model->getContentHeading().'<h2>';
       echo $model->getContent();

Magento CMS Page conten显示代码Khaled saifullah