문제

레이아웃을 렌더링한 후 일부 태그(제목, 설명)를 설정해야 합니다.레이아웃 파일을 통해 제목을 설정하는 방법을 알고 있습니다.

<reference name="head">
 <action method="setTitle" translate="title"><title>Your Title</title></action> 
</reference>

또는 헤드 블록 요소에 액세스하고 해당 요소에 대해 setTitle('your title') 메소드를 호출하여 코드를 통해

$this->getLayout()->getBlock('head')->setTitle('your title'); 

하지만 컬렉션의 항목에서 제목을 동적으로 가져와야 합니다.

컨트롤러 접근 방식을 사용하면 동일한 요소를 두 번 로드하게 됩니다. 왜냐하면 제목과 설명으로 설정할 필드를 가져오려면 제품을 로드해야 하고, 제품 페이지에 표시하려면 블록에 다시 표시해야 하기 때문입니다.

그것을 저장하는 것이 현명한가요? Mage::register('variable', 'value');?프로그래밍 방식으로 전체 레이아웃을 생성하고 데이터를 할당해야합니까? $this->getLayout()->getBlock('your.block.name.in.the.layout')->assign('data', $data);?

도움이 되었습니까?

해결책

제품에 관해 이야기할 때, 제품을 구입하기 전에 먼저 구입하려고 노력해야 합니다. renderLayout 전화를 걸어 헤드 블록에 접근하고 제품을 가져오세요. Mage::registry('product') 또는 Mage::registry('current_product')

다른 팁

컬렉션 후에로드 된 콘텐츠의 템플릿이없는 새 블록을 할당 할 수 있습니다.이 블록에서는 메인 블록 (예 : 제품) 또는 레지스트리에서 데이터를 가져와 필요한 모든 정보를 얻습니다.그런 다음 getBlock('head')->setTitle('your title'); 에서 _prepareLayout를 호출하십시오

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 magento.stackexchange
scroll top