Как ввести новый блок в пурпурный

Я работаю над настраиваемым модулем и пытаюсь встроить свой код блока модуля в блок cms во время загрузки. Мой код для блока:

{{block type="module/block_name" categories="2,4,3" template="catalog/product/list.phtml" }}

Это выполняется на странице блока cms. Но я пытаюсь внедрить блок-код во время выполнения. Для этого я создаю событие

 
     
          
              
                       singleton
                       Module_Model_Observer
                       addlisttocms
                
         
     
 

Пока на наблюдателе я создаю функцию:

public function addlisttocms(Varien_Event_Observer $observer)
    {
     $controller = Mage::app()->getRequest()->getControllerName();
     $layout = Mage::app()->getRequest()->getRouteName();
     $var = Mage::app()->getRequest()->getActionName();
     $page =  Mage::app()->getRequest()->getParam('page_id');
}

Теперь я хочу, чтобы при загрузке страницы cms я вставлял свой блок, используя вышеприведенную функцию. Является ли это возможным ?

0
nl ja de

2 ответы

Для этого используйте xml или пользовательский виджет.

Формат настраиваемого модуля XML-файл:


    
        
            2,3,4
        
    

2
добавлено
можете ли вы дать более подробный ответ?
добавлено автор Mahmood Rehman, источник
Извините, но если вы видите мой вопрос, я хочу добавить этот блок-код в observer, а не в xml. Я пытаюсь использовать такой код $ observer-> getEvent() -> getLayout() -> getUpdate() -> addUpdate (), чтобы добавить мой блок динамически. Надеюсь, вы поняли мою мысль.
добавлено автор Mahmood Rehman, источник
Причина в том, что я получаю идентификаторы динамически, а в xml я думаю, что не могу этого сделать. Если вы знаете, что в xml обновите меня, это будет хороший выбор для меня.
добавлено автор Mahmood Rehman, источник
Я следую этому сообщению asia-connect. com.vn/2009/07/… ids i установлен у наблюдателя.
добавлено автор Mahmood Rehman, источник
Сделано, на моем телефоне, так немного короче.
добавлено автор benmarks, источник
Я не понимаю вашего мнения. Почему вы делаете/должны ли вы делать это с наблюдателем? Каждый блок в макете мог работать и так. Есть причина, почему они этого не делают.
добавлено автор benmarks, источник
Я не вижу, как ваш блок получает эти идентификаторы динамически из кода наблюдателя, который вы опубликовали. Соглашение Magento для MVC состоит в том, чтобы позволить блокам вызывать классы коллекций внутри, а не соединять несколько слоев вместе. В примере, который вы опубликовали, ваш блок может содержать метод _construct() , который использует $ this-> getRequest() для выполнения того же самого. Кроме того, используя выбранное событие, ваш блок будет never быть частью XML-кэша компоновки; оба являются соображениями, о которых нужно знать.
добавлено автор benmarks, источник
добавлено автор benmarks, источник

Я получил сообщение answer.change в 'controller_action_layout_generate_xml_before' и в коде для инъекций наблюдателя, например

  $layout = $observer->getLayout();
 $layout->getUpdate()->addUpdate(' 
    
        
            2,3,4
        
    
');
$layout->generateXml();.

Для подтверждения отметьте сайт .

1
добавлено