Magento: задержка загрузки головного блока до тех пор, пока не сработает мое событие
У меня есть два наблюдателя:
<events>
<controller_action_layout_load_before>
<observers>
<QuBit_UniversalVariable_Model_Page_Observer>
<type>singleton</type>
<class>universal_variable_main/observer</class>
<method>setUniversalVariable</method>
</QuBit_UniversalVariable_Model_Page_Observer>
</observers>
</controller_action_layout_load_before>
<catalog_block_product_list_collection>
<observers>
<QuBit_UniversalVariable_Model_Page_Observer>
<type>singleton</type>
<class>universal_variable_main/observer</class>
<method>setCatalogProductListing</method>
</QuBit_UniversalVariable_Model_Page_Observer>
</observers>
</catalog_block_product_list_collection>
</events>
Я хочу, чтобы блок, содержащий javascript, загружался в мою голову, но мне нужно заполнить его данными, которые собираются в Observer. Моя проблема в том, что блок загружается до начала события. Я добавил некоторые записи, чтобы доказать это.
2013-07-12T07:18:44+00:00 DEBUG (7): loading setUniversalVariable
2013-07-12T07:18:44+00:00 DEBUG (7): loading template
2013-07-12T07:18:48+00:00 DEBUG (7): loading setCatalogProductListing
В настоящее время я добавляю блок с использованием макета XML, нужно ли вместо этого создавать его программно в setCatalogProductListing или есть какой-то другой способ предотвратить его загрузку до тех пор, пока не будут доступны все данные?
И возможно ли вообще создать его здесь программно или голова уже будет доработана к этому моменту?
заранее спасибо
1 ответ
В то время, когда catalog_block_product_list_collection
событие отправляется, head
уже был выведен, так что ничто не может фактически изменить его (или фактически, это зависит от того, где размещен блок списка, но почти во всех случаях это будет после заголовка).
Вам придется иметь дело непосредственно с блоками макета и списка для извлечения данных из коллекции до визуализации заголовка, но способы выполнения зависят от того, хотите ли вы применить свой код ко всем блокам списка или, например, только к категориям (зная, что блоки также могут быть вызваны из содержимого CMS и, следовательно, могут не существовать до того, как соответствующая страница / блок сама будет выведена).