[英]Magento Best Way to Call Modalbox After Item is Added to Cart
我正在尋找一種在客戶將商品添加到購物車后調用Modalbox的方法。
您如何在php中調用Modalbox? 我當時想在CartController.php中的成功消息后調用模式框,但是,我不知道如何從PHP做到這一點,只能從帶有OnClick的HTML鏈接中做到。
顯然,您無法完全做到這一點,因為PHP在服務器上運行,而Modalbox在客戶端瀏覽器中的JavaScript中運行-可能在世界的相反方向,就像我們想忘記的物理障礙確實會對軟件產生影響一樣。 我們能做的最好的事情就是在適當的位置插入Javascript代碼,以便瀏覽器最終執行它。
要添加的項目的第一個具體標志是checkout_cart_product_add_after
事件。 創建一個模塊並修改它的config.xml
文件;
<config>
<!-- ...usual blocks, helpers and models stuff here... -->
<frontend>
<!-- this is the safest way to catch items being added -->
<events>
<checkout_cart_product_add_after>
<observers>
<yourmodule_product_add>
<class>yourmodule/observer</class>
<method>onProductAdd</method>
</yourmodule_product_add>
</observers>
</checkout_cart_product_add_after>
</events>
<!-- will need to insert a block later -->
<layout>
<updates>
<yourmodule>
<file>yourmodule.xml</file>
</yourmodule>
</updates>
</layout>
</frontend>
</config>
那聲明了一個期望在Your/Module/Model/Observer.php
找到的Your/Module/Model/Observer.php
;
class Your_Module_Model_Observer
{
public function onProductAdd()
{
// page might redirect immediately so make a flag for now
Mage::getSingleton('checkout/session')->setShowModalbox(true);
}
}
您應該能夠看到接下來會發生什么。 先前app/design/frontend/base/default/layout/yourmodule.xml
文件聲明為app/design/frontend/base/default/layout/yourmodule.xml
;
<layout>
<!-- hook this block for all pages because anything
might be shown after adding a product -->
<default>
<reference name="before_body_end">
<block type="yourmodule/modalbox" name="yourmodule_modalbox" />
</reference>
</default>
<default>
</layout>
最后一步是制作Your/Module/Block/Modalbox.php
,它將在必要時實際插入相關的Javascript;
class Your_Module_Block_Modalbox extends Mage_Core_Block_Text_Tag_Js
{
protected function _toHtml()
{
if (!Mage::getSingleton('checkout/session')->getShowModalbox())
return $this;
$url = 'URL to show in Modalbox';
$this->setContents("Modalbox.show({$url}, {width: 600});");
Mage::getSingleton('checkout/session')->unsShowModalBox();
return parent::_toHtml();
}
}
這是我能想到的唯一的最佳實踐方法,但是我被剛剛發現的Mage_Core_Block_Text_Tag_Js
所迷住。 俗話說“當你只有一把錘子時,所有問題都開始看起來像釘子”。 我可能缺少一些更簡單,更明顯的東西。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.