Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Magento-捆绑产品中的捆绑产品(几乎可以正常工作)_Magento_Magento 1.7 - Fatal编程技术网

Magento-捆绑产品中的捆绑产品(几乎可以正常工作)

Magento-捆绑产品中的捆绑产品(几乎可以正常工作),magento,magento-1.7,Magento,Magento 1.7,我正在尝试将捆绑产品添加到另一个捆绑产品中。 实现我的身份很简单。编辑文件/app/code/Mage/Bundle/etc/config.xml,如下所示: ... <allowed_selection_types> <simple/> <bundle/> <!-- Add this at line 104--

我正在尝试将捆绑产品添加到另一个捆绑产品中。 实现我的身份很简单。编辑文件
/app/code/Mage/Bundle/etc/config.xml
,如下所示:

                ...
                <allowed_selection_types>
                    <simple/>
                    <bundle/> <!-- Add this at line 104-->
                    <virtual/>
                </allowed_selection_types>
                ...
崩溃发生在
shakeSelections($a,$b)
:代码
$a->getOption()
不返回对象。它不是null,也不是对象(我是一个PHP noobie,所以对我来说没有意义)

==更新==

现在我可以将这种新产品添加到购物车中了!我已经编辑了文件app\code\core\Mage\Bundle\Model\Product\Type.php,因此现在我有以下代码:

...
/*
 * Create extra attributes that will be converted to product options in order item
* for selection (not for all bundle)
*/
$price = $product->getPriceModel()->getSelectionFinalTotalPrice($product, $selection, 0, $qty);
$attributes = array(
        'price'         => Mage::app()->getStore()->convertPrice($price),
        'qty'           => $qty,
        'option_label'  => is_null($selection->getOption()) ? '' : $selection->getOption()->getTitle(),
        'option_id'     => is_null($selection->getOption()) ? 0 : $selection->getOption()->getId()
);

$type = $selection->getTypeInstance(true);
if (get_class($type) != 'Mage_Bundle_Model_Product_Type'){
    $_result = $selection->getTypeInstance(true)->prepareForCart($buyRequest, $selection);
}
...
以及以下功能:

public function shakeSelections($a, $b)
{
    $ta = $a->getOption();
    $tb = $b->getOption();

    $aPosition = array(
            is_null($ta) ? 0 : $ta->getPosition(),
            $a->getOptionId(),
            $a->getPosition(),
            $a->getSelectionId()
    );
    $bPosition = array(
            is_null($tb) ? 0 : $tb->getPosition(),
            $b->getOptionId(),
            $b->getPosition(),
            $b->getSelectionId()
    );
    if ($aPosition == $bPosition) {
        return 0;
    } else {
        return $aPosition < $bPosition ? -1 : 1;
    }
}
公共功能选择($a,$b)
{
$ta=$a->getOption();
$tb=$b->getOption();
$aPosition=数组(
是否为null($ta)?0:$ta->getPosition(),
$a->getOptionId(),
$a->getPosition(),
$a->getSelectionId()
);
$bPosition=数组(
是否为null($tb)?0:$tb->getPosition(),
$b->getOptionId(),
$b->getPosition(),
$b->getSelectionId()
);
如果($aPosition==$bPosition){
返回0;
}否则{
返回$aPosition<$bPosition?-1:1;
}
}
我正在调查我介绍的可能的副作用。此时此刻,我看到这捆捆绑产品的库存管理将存在问题

如果您继续,请发布您的更新。非常感谢

==第二次编辑==

我已经在github开始了这项回购协议,所以你们可以跟踪我的进度,或许可以帮助我

不要这样做


为了让它正常工作,我经历了很多艰难的时刻。我了解到,您应该创建自己的产品类型,而不是编辑现有的产品类型

当你得到一个任务来升级你的1.7到1.9时,你会有一段艰难的时间,因为你的核心文件被覆盖了。
public function shakeSelections($a, $b)
{
    $ta = $a->getOption();
    $tb = $b->getOption();

    $aPosition = array(
            is_null($ta) ? 0 : $ta->getPosition(),
            $a->getOptionId(),
            $a->getPosition(),
            $a->getSelectionId()
    );
    $bPosition = array(
            is_null($tb) ? 0 : $tb->getPosition(),
            $b->getOptionId(),
            $b->getPosition(),
            $b->getSelectionId()
    );
    if ($aPosition == $bPosition) {
        return 0;
    } else {
        return $aPosition < $bPosition ? -1 : 1;
    }
}