我想将CMS页面的内容提取到我的静态块中,如果您知道这样做的方法,我将不胜感激。
答案 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