对这个伟大社区的所有成员来说,祝你好运。我还是PHP的新手,特别是在Magento。
我不是在发帖,等待答案,而是在没有回复的情况下离开。这是一个学习过程。我希望得到你们所有人的大力支持。
我有一个产品。我确实为产品创建了自定义选项,即名为“a_size”的属性。该属性的值为S,M和L.每个值都有数量。
在单一产品视图中,我想调用所有可用尺寸。这是数量大于0的大小(S,M或L)。我只想显示可用的大小,而不是显示的大小。
任何人都可以指导我吗?我正在使用Magento 1.7.x,到目前为止,我已经通过搜索功能从社区尝试了很多建议的答案。
回复将非常感谢。谢谢。
答案 0 :(得分:2)
有几件事要尝试。
首先检查您在Magento管理员(目录 - >属性 - >管理属性)中设置新属性时,在Frontend Properties
框中设置Visible on Product View Page on Front-end
到{{1 }}
要获取大小值,我使用以下代码:
yes
但我有其他代码来获取如下所示的属性值:
$cabac_sizeAttribute = $_product->getAttributeText("a_size");
我认为它与属性的类型有关:文本,下拉列表,多选等等,所以请尝试两种方式,看看你是如何继续下去的。但实际上函数$_product_helper = Mage::helper('catalog/output');
$temp = $_product_helper->productAttribute($_product, $_product->getASize(), 'a_size');
只是应用格式。您可以在文件productAttribute()
另外,我想知道,如果您已经设置了可配置产品并且您在产品视图页面上,那么您将查看可配置产品。 该产品没有app/core/Mage/Catalog/Helper/Output.php
值:您正在尝试访问构成可配置产品的简单产品的a_size
属性,是吗?我上面写的所有内容(我认为)都是正确的,但要获得属于已配置产品的简单产品的属性,您应该研究a_size
getJsonConfig()
中的代码
特别是这些方面:
file app/core/Mage/Catalog/Block/Product/View/Type/Configurable.php
注意变量命名://file: file app/core/Mage/Catalog/Block/Product/View/Type/Configurable.php
//class: Mage_Catalog_Block_Product_View_Type_Configurable
//function: getJsonConfig()
foreach ($this->getAllowProducts() as $product) {
$productId = $product->getId();
foreach ($this->getAllowAttributes() as $attribute) {
$productAttribute = $attribute->getProductAttribute();
$productAttributeId = $productAttribute->getId();
$attributeValue = $product->getData($productAttribute->getAttributeCode());
在这里是本地的,我建议更改它,关于$product
- 但是如果你在产品视图的$this
配置中,那么我认为您的.phtml
已经$this
欢迎使用Magento编码。你做得很好;这是一条漫长而有益的道路。 (提示:Mage_Catalog_Block_Product_View_Type_Configurable
是您的重要朋友,如果您还没有看到他的内容,Alan Storm也是如此。)
[另外,(欢迎来到Magento )我想你想说的是,例如S和L缺货而M有库存但实际上函数getAllowProducts()将禁止产品零库存并将其从返回的对象中排除。您需要使用
$ allProducts = $ this-> getProduct() - > getTypeInstance(true) - > getUsedProducts(null,$ this-> getProduct());
(取自文件local.xml
中的函数getAllowProducts()
)
然后,如果需要,检查是否允许显示每个产品,例如status = ENABLED,然后检查其库存水平...... ]
马拉奇。
答案 1 :(得分:0)
如果要获取下拉属性的值,请使用以下代码
$_product->getASize();
并且最初加载产品对象