Magento:在类别列表页面显示层级价格

Magento:在类别列表页面显示层级价格,magento,Magento,我试图在catalog/product/list.phtml类别列表页面上显示所有级别的价格,但仅获取单个产品的基本价格 print_r($_product->getTierPrice()); 返回: Array ( [0] => Array ( [price] => 0.5000 [website_price] => 0.5000 [price_qty] => 1

我试图在catalog/product/list.phtml类别列表页面上显示所有级别的价格,但仅获取单个产品的基本价格

print_r($_product->getTierPrice());
返回:

Array
(
    [0] => Array
        (
            [price] => 0.5000
            [website_price] => 0.5000
            [price_qty] => 1
            [cust_group] => 32000
        )

)
对于每种产品。在“产品信息”页面上,它在没有问题的情况下工作。请告知

弗尔。1.5.0.1

更新:

以下是受以下答案启发的问题解决方案:

$resource = Mage::getSingleton('core/resource');
$query = 'SELECT * FROM ' . $resource->getTableName('catalog/product') . '_tier_price';
$_tier_prices = $resource->getConnection('core_read')->fetchAll($query);
var_dump($_tier_prices);

转到管理属性并编辑要显示的属性

可能这些产品没有出现在产品列表中,因为它们没有配置为这样做,因此,在“编辑属性”页面中,检查是否已激活:


在产品列表中使用

Magento中的所有对象都可能在不同的页面上创建不同的对象,并且具有不同的数据。一开始可能看起来不太直观。将数据加载到Item页面上的$\u产品对象的db查询中几乎包含所有数据。但出于优化目的,category页面上使用的$_产品只有一些数据——如果我没记错的话,它甚至从不同的db表中提取数据。例如,category页面上的查询与catalogindex*表关联,以获取通常从常规eav表检索的一些数据


我没有任何细节可以告诉您,但您可以直接查看目录\产品\实体\层\价格表,其中包含所有层定价。至少这是我的magento版本中的表名,它不是1.5。副作用是,由于额外的查询,类别页面将需要更长的时间才能加载。

这已经有一段时间没有被询问/回答了,但我只是需要这样做,并找到了更好的方法,以便不使用直接数据库访问

如前所述,$\u产品对象在默认情况下不包含产品列表页面上的$\u tierplices。。。但是,如果将tier_price值设置为null,它将从数据库检索实际值并填充对象。因此,无论您在哪里需要分层价格,请添加:

$_product->setData('tier_price',null);
$_tierPrices = $this->getTierPrices($_product); 
这将确保在对象中填充层价格,以便您可以在任何页面上使用它


请记住,这仍然会导致与直接db访问相同的性能损失。

我已经尝试了上面的答案和其他一些在线答案,但都不起作用,因此我将一些技巧整合到1中,这就是如何让它在任何地方都能工作的方法。我甚至有一个自定义的主页旋转木马,它就是这样拉的

一,。首先,在环路外顶部附近建立连接

二,。获取客户id

三,。下一步,我们进入一个循环,在这个循环中,你有你的价格回音

注意:下面我使用硬代码2,因为批发默认为2。您可以构建自己的if/else&查询

我就是这样做的。如果您需要帮助,请随时与我联系


如果您正在寻找Magento方式:

 $attribute = $_product->getResource()->getAttribute('tier_price');

    if ($attribute) {
       $attribute->getBackend()->afterLoad($_product);
       $tierPrices = $_product->getTierPrice();
    }

从/app/code/core/Mage/Catalog/Model/Product/Type/Price.php getTierPrice这是获取分层价格的另一种方法

Mage::getResourceModel('catalog/product_attribute_backend_tierprice')
            ->loadPriceData($product_id,Mage::app()->getWebsite()->getId());
反应是一系列的价格

[0] => Array
    (
        [price_id] => 7
        [website_id] => 0
        [all_groups] => 1
        [cust_group] => 0
        [price] => 32.0000
        [price_qty] => 6.0000
    )

[1] => Array
    (
        [price_id] => 8
        [website_id] => 0
        [all_groups] => 1
        [cust_group] => 0
        [price] => 31.0000
        [price_qty] => 12.0000
    )

内置app/design/frontend/your_theme/default/template/catalog/product/list.phtml 将其添加到网格和/或列表的foreach循环中

<?php $this->setProduct(Mage::getModel('catalog/product')->setStoreId(Mage::app()->getStore()->getId())->load($_product->getId()))?>
<?php echo $this->getTierPriceHtml() ?> 

我在产品列表页面中显示产品没有问题,我只是不能显示分层价格。tier_price属性在产品列表中被设置为Yes。哇,这太奇怪了。谢谢我会尝试一下。对于Magento 2,你必须做什么?@AnkitShah为Magento 2打开另一个问题,关于Magento 2,你必须做什么?如果你用这种方式,它会影响性能,因为你正在为每个循环产品重新加载产品。这也帮了我很多:谢谢!
Mage::getResourceModel('catalog/product_attribute_backend_tierprice')
            ->loadPriceData($product_id,Mage::app()->getWebsite()->getId());
[0] => Array
    (
        [price_id] => 7
        [website_id] => 0
        [all_groups] => 1
        [cust_group] => 0
        [price] => 32.0000
        [price_qty] => 6.0000
    )

[1] => Array
    (
        [price_id] => 8
        [website_id] => 0
        [all_groups] => 1
        [cust_group] => 0
        [price] => 31.0000
        [price_qty] => 12.0000
    )
<?php $this->setProduct(Mage::getModel('catalog/product')->setStoreId(Mage::app()->getStore()->getId())->load($_product->getId()))?>
<?php echo $this->getTierPriceHtml() ?>