Я нашел решение для этого. Динамическое позиционирование блока можно использовать с помощью наблюдателей. Прежде всего создайте Observer.php
в каталоге <Namespace>/<Module>/Model
. Написать следующий код в этом файле:
class <Namespace>_<Module>_Model_Observer
{
public function set_block($observer)
{
$action = $observer->getEvent()->getAction();
$fullActionName = $action->getFullActionName();
$position = 'right';
$sub_position = 'before="cart_sidebar"';
$myXml = '<reference name="'.$position.'">';
$myXml .= '<block type="obc/obc" name="obc" template="obc/obc.phtml" '.$sub_position.' />';
$myXml .= '</reference>';
$layout = $observer->getEvent()->getLayout();
if ($fullActionName=='catalog_product_view') { //set any action name here
$layout->getUpdate()->addUpdate($myXml);
$layout->generateXml();
}
}
}
Сейчас в config.xml
пишут следующие строки для вызова наблюдателя:
<events>
<controller_action_layout_generate_blocks_before>
<observers>
<module_block_observer>
<type>singleton</type>
<class><Namespace>_<Module>_Model_Observer</class>
<method>set_block</method>
</module_block_observer>
</observers>
</controller_action_layout_generate_blocks_before>
</events>
Теперь вы можете установить позицию вашего блока в любом месте на странице с помощью наблюдателя.
Что вы пытаетесь? ESL может быть фактором, но это похоже на вопросы интервью. – benmarks