문제

고객이 소유 한 특정 조건을 기반으로 정적 블록을 통해 사용자 정의 된 일련의 메시지를 전달하는 작업을 수행하고 있습니다.

예를 들어 고객이 로그인했는지 여부와 과거에 구매했는지 여부에 따라 사용자 정의 된 사용자 정의 메시지 대 대체 사용자 정의 메시지 대 대체 사용자 정의 메시지를 표시하고 싶습니다.

나는 모든 정적 블록을 만들었고, 그들 모두가 수동으로 그것을 활성화하는 경우에 그들이 가정되는 곳에 모두 표시됩니다.내가 배우고 싶은 것은 / 블록이 사용될지 여부를 결정할 조건부 논리를 삽입 할 수있는 방법 / 위치입니다.

고객이 제공 할 수있는 각 페이지 에이 페이지 또는 유사한 조건부 논리를 포함시켜야 할 것이라고 가정하고 있습니다.일부 페이지는이 치료를받을 것입니다. 다른 사람들은 그렇지 않습니다.

현재 비 CMS 페이지의 코드를 구현할 위치에 대해 대부분 요청합니다.

도움이나 의견에 감사드립니다.

도움이 되었습니까?

해결책

귀하의 질문에서 이러한 정적 블록을 표시 해야하는 곳에서는 분명하지 않습니다.그러나 이해를 바탕으로, 나는 당신에게 힌트를 제공 할 것입니다.

그래서 기본적으로 정적 블록이 있으며 일부 조건이 만족 될 때만 표시해야합니다.

여기 우리는갑니다.모든 페이지의 오른쪽 부분에 이러한 블록을 표시해야합니다.이를 위해 local.xml 레이아웃 파일을 만들어야합니다.

파일 : app/design/frontend/<your_package>/<your_theme>/layout/local.xml

<layout>
    <default> <!-- this layout handle enable its child block appear almost every page -->
        <reference name="right"> <!-- this let static block appear in the right section -->
            <block type="core/template" name="conditional.static.blocks.container" template="staticblocks/contaier.phtml">
                <block type="cms/block" name="static.block.1" as="static_block_1">
                    <action method="setBlockId"><block_id>code-for-sb-1</block_id></action>
                </block>
                <block type="cms/block" name="static.block.2" as="static_block_2">
                    <action method="setBlockId"><block_id>code-for-sb-2</block_id></action>
                </block>
                <!-- continue this step for every block -->
            </block>
        </reference>
    </default>
</layout>
.

파일 : app/design/frontend/<package>/<theme>/template/staticblocks/contaier.phtml

<?php if({condition_1_satisfies}) : ?>
    <div><?php echo $this->getChildHtml('static_block_1'); ?></div>
<?php endif;  ?>

<?php if({condition_2_satisfies}) : ?>
    <div><?php echo $this->getChildHtml('static_block_2'); ?></div>
<?php endif;  ?>

<!-- continue this logic here for every static block according to your need  -->
.

이 방법의 이점은 큰 유연성을 제공합니다.오른쪽의 모든 페이지 에서이 블록을 볼 수 있습니다.상위 블록에서 다른 조건을 사용하고 있으므로 원하는 정적 블록 만 프론트 엔드에 나타납니다.

이미 말했듯이, 이것은 단지 아이디어 일뿐입니다.당신은 당신 자신의 조건으로 그것을 정교하게 할 수 있습니다.

에 도움이되기를 바랍니다.

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