Позиционный блок в домашней странице CMS Content
-
16-10-2019 - |
Вопрос
У меня интересная ситуация, когда на странице CMS я определяю несколько новых блоков в update_layout_xml
Раздел - на это необходимо упомянуть из самого контента CMS с использованием синтаксиса короткометражного кода {{block ...}}
Я знаю, что можно определить новые блоки, которые можно создать из CMS Textarea - но возможно ли ссылаться на существующий блок, чтобы определить точную позицию, которую необходимо вставить.
С использованием update_layout_xml
позволяет позиционировать, используя before=
или же after=
- В то время как мне нужно больше гранулированного контроля для позиционирования элемента в content
Блок сам. Если бы это было сделано через phtml
Файл - это был бы просто случай использования getChildHtml
- Но для CMS нет эквивалента.
Я знаю, что могу продлить Mage_Widget_Model_Template_Filter
И добавить новую функцию - но есть ли уже основной метод для этого?
Решение
Я продлился Mage_Widget_Model_Template_Filter
Чтобы добавить эту функцию, и это делает свое дело, но мне было интересно, было ли родной способ сделать это.
public function getchildDirective($construction)
{
$layout = Mage::app()->getLayout();
$blockParameters = $this->_getIncludeParameters($construction[2]);
return $layout->getBlock('root')->getChildHtml($blockParameters['id']);
}
Другие советы
В зависимости от ваших методов действия, вы сможете добавить функциональность к методу _construct вашего блока (как определено вашим типом блока)
Но если ваши методы действия просто устанавливают какую -то переменную, как
<action method="setCategoryId"><category_id>17</category_id></action>
Затем вы можете добавить эти параметры в свой синтаксис смайликов, как это:
{{block type="cms/block" block_id="your_block_id" category_id="17"}}
Я знаю, что вы можете включить статические блоки в контент CMS, используя что -то подобное:
{{block type="cms/block" block_id="your_block_id"}}
Я не понимаю, почему этот метод не будет работать для пользовательских блоков. Вы пробовали по крайней мере?
Это не фиксирует это, когда шорткод находится в переменной из модуля.
Пример: у меня есть модуль слайдера, и когда я введу {{store direct_url="customer-service"}}
В качестве атрибута ссылки он не заменяется.