当项目添加到购物车时,如何让Magento扩展程序运行javascript

时间:2013-05-09 19:54:27

标签: magento magento-1.7

我正在开发一个Magento扩展程序,并且无法在项目添加到购物车时尝试运行javascript。

在config.xml中我有一个观察者

<checkout_cart_product_add_after>

在Observer.php中

public function itemAddedToCart(Varien_Event_Observer $observer){}

这是开火(我可以通过回声测试)。但是如何让它注入一个javascript块(最好是注入页脚)?

提前致谢。

更新: 使用Chris的解决方案,但我使用会话来避免潜在的多用户问题而不是注册表:

在Observer.php中

public function itemAddedToCart(Varien_Event_Observer $observer){}
    $itemAddedToCart = 'true';
    Mage::getSingleton('core/session')->setItemAddedToCart($itemAddedToCart);

在我的自定义块(script.phtml)中:

<?php if($itemAddedToCart) : ?>
    <script type="text/javascript">
        alert(<?php echo '"' . $this->__($itemAddedToCart) . '"' ?>);
    </script>
    <?php 
        // Clear itemAddedToCart session variable:
        Mage::getSingleton('core/session')->unsItemAddedToCart(); 
    ?>
<?php endif; ?>

希望这有助于其他人。

1 个答案:

答案 0 :(得分:2)

您应该可以通过XML在扩展程序的布局XML文件中完成此操作。

<catalog_product_view>
    <reference name="footer">
        <block type="core/template" name="INSERT_CUSTOM_NAME_HERE" template="path/to/your/phtml/file.phtml" />
    </reference>
</catalog_product_view>

确保删除缓存,因为只有刷新缓存后才会应用XML更新。

如果您使用默认的Magento主题,则无需调用此模板,因为它会自动调用所有子项$this->getChildHtml('');。 但是如果您使用自定义主题,则应将其添加到footer.phtml:$this->getChildHtml('INSERT_CUSTOM_NAME_HERE');

或者如果您想在购物车页面上添加javascript,则应将<catalog_product_view>替换为<checkout_cart_index>