【问题标题】:Cannot get new product attribute in grid display无法在网格显示中获取新产品属性
【发布时间】:2010-04-07 23:03:35
【问题描述】:

我为我的产品添加了一个新属性(布尔“是/否”字段)。它是一个变量,用于启用/禁用在产品详细信息页面和网格视图上显示的价格。

我设法让它在产品信息页面上运行。但是在产品网格页面上,我似乎无法访问该变量。具体来说,我正在使用的模板是catalog/product/price.phtml。据我所知,产品详细信息页面和网格页面上的同一组 if 语句都显示价格。这让我很困惑,因为我在该模板上找不到任何代码来处理多个产品,只有一堆嵌套的 if 语句。

这就是我尝试使用 $_displayPrice 访问这个新变量的方式。 在 catalog/product/price.html 的第 36 行

<?php $_product = $this->getProduct();  ?>

<?php $_id = $_product->getId() ?>
<?php $_displayPrice = $_product->getDisplayPrice() ? "Yes" : "No";

echo $_displayPrice;?>

让我更加困惑的是,当显示 $_product->getData() 时,我的新变量不在该数据中的任何位置。

提前致谢

【问题讨论】:

    标签: php zend-framework magento


    【解决方案1】:

    好的,首先是您的属性无法加载的原因。 Magento 使用 EAV 模型来存储目录数据。这意味着(大部分)getData 数组中的每条数据都来自表连接。这意味着 Magento 对如何从数据库请求数据很吝啬。如果它不需要你的字段,它就不会费心包含它(并且会节省一些查询时间)。

    因此,在加载目录类别页面时,Magento 使用Mage_Catalog_CategoryController 和视图操作。通过 Magento 的魔力,这随后调用了 Mage_Catalog_Model_Layer::getProductCollection,它加载了所有必要的属性。你说,它如何选择要包含的属性?它当然是从Mage_Catalog_Model_Config::getProductCollectionAttributes 的配置中获取它们的!因此,如果我们想要包含您的新属性,我们需要更改配置。

    查看配置文件,处理加载哪些列的路径是frontend/product/collection/attributes,因此您需要将以下内容添加到扩展的 config.xml 文件中:

    <frontend>
        <product>
            <collection>
                <attributes>
                   <display_price /> 
                </attributes>
            </collection>
        </product>
    </frontend>
    

    这会将display_price 属性添加到属性列表中以默认加载到产品集合中,您现在应该可以调用$_product-&gt;getDisplayPrice() 并获取您要查找的数据。

    确保在看到任何更改之前清除缓存!

    希望对您有所帮助。

    谢谢, 乔

    【讨论】:

    • 揭开了一切的神秘面纱!通过将我的 if 语句添加到 catalog/product/view.html 来解决这个问题,它只影响产品详细信息。理想情况下,我可以使用您给我的信息来修复 price.phtml,这样我就不会在随机模板中添加太多不必要的 if 语句。谢谢哟!
    • 我似乎仍然无法访问新属性。我将它们添加到 app/core/Mage/Catalog/etc/config.xml 的列表中,并且我已经禁用了站点缓存。我假设添加那里将使它们可以在 template/catalog/product/list.phtml 中访问。
    • 只有我一个人,还是Magento真的过于复杂和臃肿? :|
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-14
    • 2012-01-26
    • 2021-01-02
    相关资源
    最近更新 更多