Вопрос

Я работаю над доставкой индивидуальной серии сообщений через статические блоки на основе определенных условий, которыми обладает клиент.

Например, мне хотелось бы отобразить одно персонализированное сообщение с предложением вместо одного.альтернативное персонализированное сообщение с предложением в зависимости от того, вошел ли клиент в систему и совершал ли он покупку в прошлом.

Я создал все статические блоки, и все они отображаются там, где должны, если я включу их вручную.Что я хочу узнать, так это то, как и где я могу вставить условную логику, которая будет определять, будет ли использоваться блок или нет.

Я предполагаю, что мне нужно будет включить эту или подобную условную логику на каждую страницу, на которую может перейти клиент и на которой я хотел бы доставлять предложения или сообщения.Некоторые страницы получат такую ​​обработку, другие — нет.

В основном я спрашиваю о том, ГДЕ сейчас реализовать код для страницы, не использующей 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