我正在开发一个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; ?>
希望这有助于其他人。
答案 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>
。