2

出于某种原因,我需要一个类别中的所有产品,包括非销售产品。但我不确定这是否是 magento 没有显示它的唯一情况。

目前,我正在退回所有有库存且有价格等的产品,就像普通产品一样。

收藏不是捡起非卖品或没有给出价格的产品。这是我们创建的一种不同类型的产品,其中价格不是快照中的强制性选项。

包含 2 个产品的类别

现在我想要收集这两种产品。目前我只得到显示价格的那个,底部一个。

我试过了

<?php


class Ubt_Featured_Block_Featured extends
Mage_Core_Block_Template {

private $_itemPerPage = 2;
private $_category_id = 4;

public function allProducts() {


    $category = Mage::getModel('catalog/category')->load($this->_category_id);
    $_collections = $category->getProductCollection();
    $_productCollection = $this->getCollection($_collections);  // calling the function that have been created in block page.

    return $_productCollection;
}

public function totalPages() {
    $category = Mage::getModel('catalog/category')->load(4);
    $_collections_count = $category->getProductCollection()->count();
    return $number_of_pages = $_collections_count / $this->_itemPerPage;
}

public function getCollection($collection = 'null') {

    if ($collection != 'null') {


        $collection->addWebsiteFilter();
        $collection->addUrlRewrite($this->_category_id);
        $collection->addMinimalPrice()->addFinalPrice()->addTaxPercents();

        Mage::getSingleton('catalog/product_visibility')
                ->addVisibleInCatalogFilterToCollection($collection);

        Mage::getSingleton('catalog/product_status')
                ->addVisibleFilterToCollection($collection);

        $collection->addAttributeToSelect(array('entity_id', 'sku', 'name', 'short_description', 
            'description', 'price', 'thumbnail', 'image', 'url_path', 'type_of'), 'inner')
              ->addAttributeToFilter('is_saleable', array('like' => '0'))      ;


        $collection->setCurPage(1);
        $collection->setPageSize($this->_itemPerPage);

        return $collection;
    }
}

}

它没有显示任何使用它的东西。空白页。

但是,如果我从 getCollection() 方法中删除 ->addAttributeToFilter('is_saleable', array('like' => '0')) ,那么我会得到包含一个产品的普通集合。var_dump 下面。

    array
  'entity_id' => string '1' (length=1)
  'entity_type_id' => string '4' (length=1)
  'attribute_set_id' => string '4' (length=1)
  'type_id' => string 'simple' (length=6)
  'sku' => string 'q' (length=1)
  'has_options' => string '0' (length=1)
  'required_options' => string '0' (length=1)
  'created_at' => string '2013-03-05 22:00:39' (length=19)
  'updated_at' => string '2013-04-29 01:29:30' (length=19)
  'cat_index_position' => string '0' (length=1)
  'grant_catalog_category_view' => string '-1' (length=2)
  'grant_catalog_product_price' => string '-1' (length=2)
  'grant_checkout_items' => string '-1' (length=2)
  'price' => string '22.0000' (length=7)
  'tax_class_id' => string '2' (length=1)
  'final_price' => string '22.0000' (length=7)
  'minimal_price' => string '22.0000' (length=7)
  'min_price' => string '22.0000' (length=7)
  'max_price' => string '22.0000' (length=7)
  'tier_price' => null
  'name' => string 'Prod 01' (length=7)
  'short_description' => string 'q' (length=1)
  'description' => string 'q' (length=1)
  'thumbnail' => string '/h/a/hands.jpg' (length=14)
  'image' => string '/h/a/hands.jpg' (length=14)
  'url_path' => string 'prod-01.html' (length=12)
  'type_of' => null
  'request_path' => string 'sub-cat-01/prod-01.html' (length=23)
  'is_salable' => string '1' (length=1)
  'stock_item' => 
    object(Varien_Object)[546]
      protected '_data' => 
        array
          'is_in_stock' => string '1' (length=1)
      protected '_hasDataChanges' => boolean false
      protected '_origData' => null
      protected '_idFieldName' => null
      protected '_isDeleted' => boolean false
      protected '_oldFieldsMap' => 
        array
          empty
      protected '_syncFieldsMap' => 
        array
          empty
  'tax_percent' => float 10
  'category_ids' => 
    array
      0 => string '2' (length=1)
      1 => string '3' (length=1)
      2 => string '4' (length=1)
  'event' => boolean false

请建议。谢谢

不同之处在于该产品类型没有任何价格输入选项,因此人们无法将其添加到购物车并且没有价格显示。它就像一个 cms 页面一样。当我们在产品列表页面中单击它时,它会进入没有添加到购物车选项的产品页面。这是在产品列表中起作用的。

但我试图在主页上调用这些产品,所有其他产品都在显示,但不是这个。

在此处输入图像描述

在此处输入图像描述

----config.xml

    <?xml version="1.0"?>

<config>
    <modules>
        <Rik_ReferralProduct>
            <version>0.1.0</version>
        </Rik_ReferralProduct>
    </modules>
    <global>
        <models>
            <referralproduct>
                <class>Rik_ReferralProduct_Model</class>
            </referralproduct>
        </models>
        <catalog>
            <product>
                <type>
                    <referralproduct translate="label" module="catalog">
                        <label>Referral Product</label>
                        <model>referralproduct/product_type_referral</model>
                        <is_qty>1</is_qty>
                        <index_data_retreiver>referralproduct/catalogIndex_data_referral</index_data_retreiver>
                        <composite>0</composite>
                    </referralproduct>
                </type>
            </product>        
        </catalog>
        <blocks>
            <adminhtml>
                <rewrite>
                    <catalog_product_edit_tabs>Rik_ReferralProduct_Block_Adminhtml_Catalog_Product_Edit_Tabs</catalog_product_edit_tabs>
                </rewrite>
            </adminhtml>
        </blocks>
    </global>
    <!--<adminhtml>-->
        <!--<layout>-->
            <!--<updates>-->
                <!--<referralproduct>-->
                    <!--<file>referral.xml</file>-->
                <!--</referralproduct>-->
            <!--</updates>-->
        <!--</layout>-->
    <!--</adminhtml>-->
</config>
4

2 回答 2

1

结果表明问题出在我的这种方法中的“内在”词上。删除它后,我的所有产品都在我的收藏中。

    $collection->addAttributeToSelect(array('entity_id', 'sku', 'name', 'short_description', 
        'description', 'price', 'thumbnail', 'image', 'url_path', 'type_of'), 'inner')
          ->addAttributeToFilter('is_saleable', array('like' => '0'))      ;
于 2013-05-03T16:54:20.003 回答
0

Magento 检查产品(库存是库存)是否与数量无关,如果 { product[stock_data][is_in_stock] } 为真,这将是可销售的产品,如果为假,则不会销售(无论数量)

============================

在您的产品集合之前添加这行代码

Mage::helper('catalog/product')->setSkipSaleableCheck(true);

==============================

会告诉目录产品型号isAvailabe方法跳过下面方法中的isSalable检查

public function isAvailable()
{
    return $this->getTypeInstance(true)->isSalable($this)
        || Mage::helper('catalog/product')->getSkipSaleableCheck();
}
于 2013-04-29T11:42:41.367 回答