仔细按照处理交叉卖出的答案(如何增加购物车中的Crosssell项目数量?)一切似乎都效果很好......添加:

的最终说明

保护$ _maxitemcount= mage :: getstoreconfig('mycompany_section / mycompany_group / mycompany_field');

因此产生错误:

p>解析错误:语法错误,意外'(',期待','或';'中的/public_html/app/code/local/xxx/checkout/block/cart/crosssell.php

对此Magento / PHP新手的任何帮助将非常感谢:)

magento ver。1.9.2.1

编辑:

使用Crosssell.php使用@simonthesorcerer修正案如下:

class Abc_Checkout_Block_Cart_Crosssell extends Mage_Catalog_Block_Product_Abstract
{
/**
 * Items quantity will be capped to this value
 *
 * @var int
 */

      protected $_maxItemCount;

      protected function _construct() { 
$this->__maxItemCount = Mage::getStoreConfig('abc_section/abc_group/abc_input');
return parent::_construct(); }

/**
 * Get crosssell items
 *
 * @return array
 */
public function getItems()
{
    $items = $this->getData('items');
    if (is_null($items)) {
        $items = array();
        $ninProductIds = $this->_getCartProductIds();
        if ($ninProductIds) {
            $lastAdded = (int) $this->_getLastAddedProductId();
            if ($lastAdded) {
                $collection = $this->_getCollection()
                    ->addProductFilter($lastAdded);
                if (!empty($ninProductIds)) {
                    $collection->addExcludeProductFilter($ninProductIds);
                }
                $collection->setPositionOrder()->load();

                foreach ($collection as $item) {
                    $ninProductIds[] = $item->getId();
                    $items[] = $item;
                }
            }

            if (count($items) < $this->_maxItemCount) {
                $filterProductIds = array_merge($this->_getCartProductIds(), $this->_getCartProductIdsRel());
                $collection = $this->_getCollection()
                    ->addProductFilter($filterProductIds)
                    ->addExcludeProductFilter($ninProductIds)
                    ->setPageSize($this->_maxItemCount-count($items))
                    ->setGroupBy()
                    ->setPositionOrder()
                    ->load();
                foreach ($collection as $item) {
                    $items[] = $item;
                }
            }

        }

        $this->setData('items', $items);
    }
    return $items;
}

/**
 * Count items
 *
 * @return int
 */
public function getItemCount()
{
    return count($this->getItems());
}

/**
 * Get ids of products that are in cart
 *
 * @return array
 */
protected function _getCartProductIds()
{
    $ids = $this->getData('_cart_product_ids');
    if (is_null($ids)) {
        $ids = array();
        foreach ($this->getQuote()->getAllItems() as $item) {
            if ($product = $item->getProduct()) {
                $ids[] = $product->getId();
            }
        }
        $this->setData('_cart_product_ids', $ids);
    }
    return $ids;
}

/**
 * Retrieve Array of product ids which have special relation with products in Cart
 * For example simple product as part of Grouped product
 *
 * @return array
 */
protected function _getCartProductIdsRel()
{
    $productIds = array();
    foreach ($this->getQuote()->getAllItems() as $quoteItem) {
        $productTypeOpt = $quoteItem->getOptionByCode('product_type');
        if ($productTypeOpt instanceof Mage_Sales_Model_Quote_Item_Option
            && $productTypeOpt->getValue() == Mage_Catalog_Model_Product_Type_Grouped::TYPE_CODE
            && $productTypeOpt->getProductId()
        ) {
            $productIds[] = $productTypeOpt->getProductId();
        }
    }

    return $productIds;
}

/**
 * Get last product ID that was added to cart and remove this information from session
 *
 * @return int
 */
protected function _getLastAddedProductId()
{
    return Mage::getSingleton('checkout/session')->getLastAddedProductId(true);
}

/**
 * Get quote instance
 *
 * @return Mage_Sales_Model_Quote
 */
public function getQuote()
{
    return Mage::getSingleton('checkout/session')->getQuote();
}

/**
 * Get crosssell products collection
 *
 * @return Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Link_Product_Collection
 */
protected function _getCollection()
{
    $collection = Mage::getModel('catalog/product_link')->useCrossSellLinks()
        ->getProductCollection()
        ->setStoreId(Mage::app()->getStore()->getId())
        ->addStoreFilter()
        ->setPageSize($this->_maxItemCount);
    $this->_addProductAttributesAndPrices($collection);

    Mage::getSingleton('catalog/product_status')->addSaleableFilterToCollection($collection);
    Mage::getSingleton('catalog/product_visibility')->addVisibleInCatalogFilterToCollection($collection);
    Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($collection);

    return $collection;
}
}
.

有帮助吗?

解决方案

您正在声明一个类属性,但是在执行此操作时,您无法调用函数。

相反,更改如下所示的声明:

protected $_myPropertyName;
.

我假设您的块扩展MAGE_CORE_BLOCK_ABSTRACT。然后,您应该覆盖函数_construct()并填写属性:

protected function _construct() { 
$this->_myPropertyName = Mage::getStoreConfig('configname');
return parent::_construct(); }
.

抱歉格式化,我在手机上。

许可以下: CC-BY-SA归因
scroll top