我有一个观察员,如果他们缺货就会从购物车中移除物品(即顾客返回购物车的时间x,购物车中的商品已经缺货),并向用户显示消息.
删除项目有效,但更新购物车总数不会. 任何帮助将非常感激!
我的观察者观察sales_quote_save_before事件:
public function checkStockStatus($observer)
{
// return if disabled or observer already executed on this request
if (!Mage::helper('stockcheck')->isEnabled() || Mage::registry('stockcheck_observer_executed')) {
return $this;
}
$quote = $observer->getEvent()->getQuote();
$outOfStockCount = 0;
foreach ($quote->getAllItems() as $item) {
$product = Mage::getModel('catalog/product')->load($item->getProductId());
$stockItem = $product->getStockItem();
if ($stockItem->getIsInStock()) {
// in stock - for testing only
$this->_getSession()->addSuccess(Mage::helper('stockcheck')->__('in stock'));
$item->setData('calculation_price', null);
$item->setData('original_price', null);
}
else {
//remove item
$this->_getCart()->removeItem($item->getId());
$outOfStockCount++;
$this->_getSession()->addError(Mage::helper('stockcheck')->__('Out of Stock'));
}
}
if ($outOfStockCount) > 0) {
$quote->setTotalsCollectedFlag(false)->collectTotals();
}
Mage::register('stockcheck_observer_executed', …Run Code Online (Sandbox Code Playgroud) 我们运营着一个网络开发商店,大约有20名开发人员在任何特定的时间在~30个不同的网站上工作,我们正在花费大量的时间来管理我们的subversion存储库 - 必须有更好的方法.
我们的客户站点通常有3个独立的部署环境:开发(主干),登台(分支)和生产(分支).
新功能在开发时在内部进行审核,然后与分段合并以进行客户审核和批准,最后合并到生产中.
我们当前的工作流程:为客户开发主要新功能的每个开发人员都将从主干创建分支,处理其功能,同时定期从主干更新,然后将更改合并回主干(开发)以进行内部审核.处理微小更改或修复的开发人员将直接在主干中进行操作.
内部注销后,更改将合并到暂存.如果需要进行更改,通常会在trunk中进行更改,然后合并到staging.获得批准后,更改将与生产合并,然后进行部署.
内部或客户端不会按顺序审查新功能,整个过程会变得相当混乱.我们似乎正在使用错误的流程 - 必须有更好的方法来实现这一目标.我们对学习如何更好地利用版本控制非常感兴趣,但我们缺乏启动过程的经验.
这些方案的最佳做法是什么?除了这个论坛,我们还有兴趣聘请经验丰富的顾问,他们可以帮助我们改进流程.
谢谢!
背景:我需要能够在灯箱中加载追加销售/交叉销售产品,并提供添加到购物车的功能.
我实现这一目标的想法是"迫使"Magento以不同的布局加载产品.我想在controller_action_layout_generate_xml_before事件上使用观察者(下面的代码).
不幸的是,我所拥有的不起作用.任何指针(或完全不同/更好的想法)都非常感谢.
<?php
class My_ForceLayout_Model_Observer
{
public function changeLayoutEvent($observer)
{
$action = $observer->getEvent()->getAction();
$layout = $observer->getEvent()->getLayout();
if($action->getRequest()->getControllerName() == 'product'
&& $action->getRequest()->getActionName() == 'view')
{
$update = $layout->getUpdate();
$update->load('popup'); // for testing only
$layout->generateXml();
}
}
}
Run Code Online (Sandbox Code Playgroud)