레이아웃에 CMS 블록이 있는 경우 레이아웃에 블록을 어떻게 추가할 수 있나요?
-
11-12-2019 - |
문제
상황은 다음과 같습니다.나는 core/template
프로그래밍 방식으로 차단합니다(있는 경우). CMS Block
(Static Block
)가 레이아웃 구조에 존재합니다.이 템플릿을 사용하여 일부 콘텐츠를 동적으로 추가하겠습니다.
정적 블록에 대한 관찰자가 있으면 이를 사용할 수 있습니다.또 다른 옵션은 정적 블록 특정 레이아웃 핸들이 있는 경우 레이아웃을 통해 동일한 결과를 얻을 수 있다는 것입니다(마치 다음과 같습니다). cms_page
레이아웃 핸들).
하지만 아직 정적 블록에 대한 관찰자를 찾을 수 없습니다.그래서 관찰자와 함께 갈 수 없습니다.또한 정적 블록별 레이아웃 핸들을 찾습니다.그 검색은 나를 필사적으로 만들었습니다.하나도 찾을 수 없었습니다.따라서 레이아웃 업데이트도 불가능합니다.
그래서 제가 이를 달성할 수 있는 유일한 방법은 일반적인 사건을 관찰하는 것입니다(아마도 controller_action_layout_generate_blocks_after
).하지만 너무 나쁜 방법인 것 같아요..
그럼 이제 어떻게 해야 할까요?이를 수행하는 가장 좋은 방법은 무엇입니까?정적 블록에 대한 사용자 정의 이벤트 리스너를 생성해야 할 수 있나요(가능한지 모르겠습니다!!)?당신의 생각을 함께 나누세요.
메모 : 확장 프로그램을 만드는 중입니다.최대한 깨끗하고 싶습니다.:)
해결책 2
이를 수행하는 다른 방법은 없는 것 같습니다.그래서 일반행사를 들어봤는데 controller_action_layout_generate_blocks_after
.cms 블록이 있으면 새 블록을 만들었습니다.
다른 팁
어쩌면 XML에서 도우미를 사용하고 그 안의 조건을 확인하고 XML 내에서 조건을 수행한 다음 그에 따라 조치를 취할 수도 있습니다.관찰자로 블록의 부하를 하나하나 관찰하는 것보다 더 나을 수도 있습니다.
여기는 XML 접근 방식에 대한 답변입니다.
<action method="addLink" translate="label title" module="catalog" ifconfig="catalog/seo/site_map">
<label>Site Map</label>
<url helper="catalog/map/getCategoryUrl" />
<title>Site Map</title>
</action>