-
12-12-2019 - |
题
我正在努力通过基于客户拥有的某些条件来通过静态块提供定制的邮件。
例如,我可能想显示一个自定义的报价消息与备用自定义报价消息,具体取决于客户是否登录,以及它们是否已经在过去购买。
我已经创建了所有静态块,它们都显示它们,如果我手动启用它们。我希望学习的是,我如何/哪里可以插入将确定是否将使用块的条件逻辑。
我假设我需要在每个页面上包含这个或类似的条件逻辑,客户可以导航到和在哪个我想提供优惠或消息。有些页面会得到这种治疗,其他页面不会。
我主要在询问现在为非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 -->
.
这种方法的优点是,它会让您提供极大的灵活性。在右侧的每个页面中,您可以看到此块。由于我们在父块中使用不同的条件,因此前面只出现所需的静态块。
我已经说过,这只是一个想法。您可以用自己的条件详细说明它。
希望有助于