【问题标题】:How would I pull the content of a CMS page into a static block?如何将 CMS 页面的内容拉入静态块?
【发布时间】:2011-07-21 17:47:33
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    尚未对此进行测试,但它应该可以工作。如果您有 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;
    

    == 编辑 ==

    添加了艾伦建议的模板解析步骤

    【讨论】:

    • 此代码不会通过交换指令标记内容的处理类运行内容(请参阅上面/下面的答案)
    • 好点,谢谢艾伦。我猜使用 cms 帮助器来呈现页面会做到这一点,所以应该可以选择这一步......
    • 这真的帮助我完成了我需要完成的事情,非常感谢!
    【解决方案2】:

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

    但是,由于静态块编辑界面允许您将 widgets 插入到静态块中,我将实现一个呈现 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】:

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

      【讨论】:

      • 这不是我问的,实际上也没有回答问题。
      • 不是原始发布者想要的答案,而是 +1 以获得有用的信息。在从头开始的世界中,您的所有内容都应该是通过 CMS 静态块小部件拉入 CMS 页面的静态块
      猜你喜欢
      • 2019-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-09
      • 2014-03-11
      • 2016-02-28
      • 1970-01-01
      • 2015-05-09
      相关资源
      最近更新 更多