当前位置: 首页 > 知识库问答 >
问题:

Magento:构建库存中所有可配置产品的自定义产品集合

欧阳勇军
2023-03-14
$collectionConfigurable = Mage::getResourceModel('catalog/product_collection')->addAttributeToFilter('type_id', array('eq' => 'configurable'));

foreach ($collectionConfigurable as $_configurableproduct) {
    $product = Mage::getModel('catalog/product')->load($_configurableproduct->getId());

    if ($product->isSaleable()) { 
// do something
}
}
Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($this->_productCollection);
$collectionConfigurable = Mage::getResourceModel('catalog/product_collection')->addAttributeToFilter('type_id', array('eq' => 'configurable'));
$instockConfigs = Mage::getSingleton('cataloginventory/stock')->addInStockFilterToCollection($collectionconfigurable);

将返回以下错误:

  Fatal error: Call to a member function joinField() on a non-object in /srv/magento/app/code/core/Mage/CatalogInventory/Model/Resource/Stock.php on line 197

共有1个答案

公冶子琪
2023-03-14

我的“对股票系统更精细细节的天真”方法是

>

  • 创建一个库存项目集合,只抓取库存项目。

    使用该集合创建库存产品ID数组

    //create a stock item collection with a `is_in_stock` filter
    $collection = Mage::getModel('cataloginventory/stock')
    ->getItemCollection()
    ->addFieldToFilter('is_in_stock');
    
    //capture the product ids of the in stock stock items
    $product_ids = array();
    foreach($collection as $item)
    {
        $product_ids[] = $item->getProductId();
    }
    
    $products = Mage::getModel('catalog/product')
    ->getCollection()
    ->addAttributeToSelect('*')
    ->addFieldToFilter('entity_id',array('in'=>$product_ids))
    ->addFieldToFilter('type_id','configurable');
    
    foreach($products as $product)
    {
        var_dump($product->getData());
    }
    
    $product = Mage::getModel('catalog/product')->load($_configurableproduct->getId());
    
    /**
     * Adds filtering for collection to return only in stock products
     *
     * @param Mage_Catalog_Model_Resource_Eav_Mysql4_Product_Link_Product_Collection $collection
     * @return Mage_CatalogInventory_Model_Stock $this
     */
    public function addInStockFilterToCollection($collection)
    {
        $this->getResource()->setInStockFilterToCollection($collection);
        return $this;
    }
    

  •  类似资料:
    • 问题内容: 我有以下代码: 尽管它可以完成预期的工作,但却大大减慢了页面加载时间。是否可以仅加载可配置产品并删除“可配置”检查?该商店有12000种产品,其中大约700种是可配置的,其余的是儿童简单产品。 我发现以下代码返回了所有可配置产品。我只需要当前类别中的产品: 问题答案: 问题在于它已经被加载- 产品的数据已经从数据库中检索到。仅使用当前类别的产品集合也不足够,这将忽略“图层”(属性过滤器

    • 本文向大家介绍magento 产品集-LIKE查询,包括了magento 产品集-LIKE查询的使用技巧和注意事项,需要的朋友参考一下 示例            

    • 6.3 产品定制配置 每一个 flavors 都可以通过一个闭包配置: android { ... defaultConfig { minSdkVersion 8 versionCode 10 } productFlavors { flavor1 { packageName "com.examp

    • 我正试图按价格对产品集合进行排序,但当我添加(粗体)时,这些产品消失了 我想把它们分类,虽然没有存货,但有人知道我能做到吗?

    • 我试图使用WooCommerce的分层导航属性过滤侧边栏小部件过滤WooCommerce商店中的〜30,000种产品。这需要使用预定义的产品属性分类法,而不是在每个产品的基础上使用自定义属性。 商店里的每种产品都有一个导入的定制“品牌”属性。在导入产品之前,我在wp-admin中创建了一个名为()的属性分类法。然而,进口产品没有将其品牌属性(和术语名称)添加到品牌()分类中。取而代之的是,所有的产

    • 每个 flavor 都是通过闭包来配置的: android { ... defaultConfig { minSdkVersion 8 versionCode 10 } productFlavors { flavor1 { packageName "com.example.flavor1"