loadLayout 및 renderLayout 다음에 페이지 제목 설정
-
11-12-2019 - |
문제
레이아웃을 렌더링한 후 일부 태그(제목, 설명)를 설정해야 합니다.레이아웃 파일을 통해 제목을 설정하는 방법을 알고 있습니다.
<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
를 호출하십시오