Magento Ajax静态阻止调用

时间:2013-09-12 14:22:29

标签: ajax magento content-management-system

我一直在寻找解决方案,但我得到的只是我需要的一些片段。我试图在页脚上显示一些额外的内容。单击页脚链接时将显示此内容。我可以使用以下代码轻松完成:

<!-- TRIGGER -->
<li><a href="javascript:void(0);" onclick="return abreInfo();">Sobre</a></li>

<!-- CONTAINER -->
<div id="infoShow">
    <section> ... </section>
</div>

<!-- SCRIPT -->
<script type="text/javascript">

function abreInfo(id) {
    jQuery("#infoShow").slideDown('fast', function () {
        jQuery('html,body').animate({ scrollTop: jQuery("#infoShow").offset().top -54 }, 200);
    });
}
</script>

虽然这实际上不是我需要的。因为该部分内的内容需要是一个CMS静态块,并且会有多个静态块加载,根据页脚链接用户点击(我试图做的是脚注链接的AJAX调用) ,如'约','付款方式','送货信息'等)。不幸的是,知识让我想到了这种脚本:

function abreInfo(id) {
    jQuery("#infoShow").slideDown('fast', function () {
        jQuery('html,body').animate({ scrollTop: jQuery("#infoShow").offset().top -54 }, 200);
            jQuery("#infoShow>section").load("<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('" + id + "')->toHtml() ?>", function () { 
        });
    });
}

但是,正如您所看到的,我在javascript中使用了php echo,禁用了所有脚本。我无法解决的是通过单击“a”元素并在javascript函数上打印来获取CMS静态块ID的方法。

在网上看,我发现了一些可能有用的代码,但我不确定如何处理它:

$block_identifier = $_GET['id'];
$block = Mage::app()->getLayout()->createBlock('cms/block')->setBlockId($block_identifier);

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您必须将静态块加载到将被隐藏的div,然后在单击页脚链接后必须显示div。例如

<div id="hiddenBlock" style="display:hidden">
<?php echo $this->getLayout()->createBlock('cms/block')->setBlockId('static_block_id')->toHtml() ?>
</div>
<div>
<a href="#" onclick="showBlock()">show block</a>
</div>

和js功能

function showBlock() {
 jQuery('#hiddenBlock').show();
}

类似的东西,这是没有Ajax加载的最简单的解决方案