I have an issue with displaying product custom attributes. I've read every resources through google but still no success. The problem is that I have to show size attribute of configurable product on category grid and list view. Every solution on google suggested something like
$_product->getAttributeText('size')
but I ended up at just a single string - "S" or "M" instead of an array. How can I fetch all possible sizes of all simple products which belongs to particular configurable product without much hassle?
UPDATE
After using solution proposed by Joseph Mastey I encountered another problem. I managed to show all possible options for given attribute, but now I need to show only these options which are available to buy. For example if t-shirt size L is out of stock or is disabled, L option should not be shown. How can I solve this issue?
A configurable product is a parent product of multiple simple products. You define a configurable product so that the buyer must make one or more choices to select a product. For example, most clothing comes in a variety of colors and sizes.
The core differences between Simple products and Configurable products are SKUs. Simple products only have a single SKU, while configurable products have multiple SKUs.
A configurable product in Magento 2 consolidates all variations of a product. On the storefront, it looks like a product that offers options and allows customers to choose between variations based on attributes like color and size.
When dealing with configurable products (or any time you're dealing with a concept for only one type of product, as configurable attributes are), you'll probably be working with getTypeInstance
. See below, I grab the configurable attributes for the product, then find the one for size. You could also just run through every configurable attribute if you wanted. Or if size is the only configurable attribute, just skip that if()
.
$attrs = $_product->getTypeInstance(true)->getConfigurableAttributesAsArray($_product);
foreach($attrs as $attr) {
if(0 == strcmp("size", $attr['attribute_code'])) {
$options = $attr['values'];
foreach($options as $option) {
print "{$option['store_label']}<br />";
}
}
}
Hope that helps! Thanks,
Joe
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With