Magento에서 프로그래밍 방식으로 블록의 위치를 설정하고 싶습니다. (왼쪽/오른쪽)Magento에서 프로그래밍 방식으로 블록의 위치 설정
사이드 바 제품 뷰 페이지의 '콘텐츠'아래
예 :
가 나는 등의 블록의 위치를 설정할 수 있음을 받기
다른 블록 이전/이후.
하시기 바랍니다.
Magento에서 프로그래밍 방식으로 블록의 위치를 설정하고 싶습니다. (왼쪽/오른쪽)Magento에서 프로그래밍 방식으로 블록의 위치 설정
사이드 바 제품 뷰 페이지의 '콘텐츠'아래
예 :
가 나는 등의 블록의 위치를 설정할 수 있음을 받기
다른 블록 이전/이후.
하시기 바랍니다.
나는 이것을위한 해결책을 발견했다. 옵저버를 사용하여 블록 위치를 동적으로 설정할 수 있습니다. 먼저 을 <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>
이제 관찰자를 사용하여 페이지에 어디서든 블록의 위치를 설정할 수 있습니다.
insert (blockname, sibling, after, alias) 메서드를 사용할 수없는 이유는 무엇입니까? – kaushik
무엇을 시도 했습니까? ESL이 요인 일 수도 있지만 인터뷰 질문처럼 보입니다. – benmarks