Как бы я вытащил содержимое страницы CMS в статический блок? - PullRequest
6 голосов
/ 24 марта 2011

Я хочу перенести содержимое страницы CMS в мой статический блок, если вы знаете способ сделать это, я был бы признателен.

Ответы [ 3 ]

19 голосов
/ 24 марта 2011

Не проверял это, но оно должно работать.Если у вас есть уникальный идентификатор страницы cms (не идентификатор):

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

== РЕДАКТИРОВАТЬ ==

Добавлены шаги разбора шаблона, предложенные Аланом

3 голосов
/ 24 марта 2011

Нет способа (о котором я знаю) сделать это из коробки.

Однако, поскольку интерфейс редактирования статических блоков позволяет вставлять виджеты в статические блоки, я бы реализовал виджет, который отображает содержимое страницы CMS.У меня базовая реализация , с которой я играл, но был слишком занят, чтобы конкретизировать.Это функционально, но не будет супер производительностью, если вы попытаетесь вставить большое количество виджетов во время любого http-запроса.Не стесняйтесь попробовать;Любая обратная связь приветствуется.

Если вас интересует, как программно визуализировать ro-страницу 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 голосов
/ 24 марта 2011

Сделай наоборот.Создайте свой контент в статическом блоке и включите его в страницу или другие статические блоки.

...