I have a configurable product and I want to show all available options at once (no dropdown). I can use the ‘size=‘ attribute on the select html element to achieve this. However, to get this working correctly I need to count the number of options available in the dropdown box.
Is there any way to count the number of options available? Here’s my current code from configurable.phtml
.
<?php $ _product = $ this->getProduct(); $ _attributes = Mage::helper('core')->decorateArray($ this->getAllowAttributes()); $ _jsonConfig = $ this->getJsonConfig(); $ _renderers = $ this->getChild('attr_renderers')->getSortedChildren(); ?> <?php if ($ _product->isSaleable() && count($ _attributes)):?> <dl> <?php foreach($ _attributes as $ _attribute): ?> <?php $ _rendered = false; foreach ($ _renderers as $ _rendererName): $ _renderer = $ this->getChild('attr_renderers')->getChild($ _rendererName); if (method_exists($ _renderer, 'shouldRender') && $ _renderer->shouldRender($ _attribute, $ _jsonConfig)): $ _renderer->setProduct($ _product); $ _renderer->setAttributeObj($ _attribute); echo $ _renderer->toHtml(); $ _rendered = true; break; endif; endforeach; if (!$ _rendered): ?> <div class="option-view"> <dt><label class="required"><em>*</em><?php echo $ _attribute->getLabel() ?></label></dt> <dd<?php if ($ _attribute->decoratedIsLast){?> class="last"<?php }?>> <div class="input-box"> <select name="super_attribute[<?php echo $ _attribute->getAttributeId() ?>]" id="attribute<?php echo $ _attribute->getAttributeId() ?>" class="required-entry super-attribute-select" size="5"> <option><?php echo $ this->__('Choose an Option...') ?></option> </select> </div> </dd> </div> <?php endif; ?> <?php endforeach; ?> </dl> <script type="text/javascript"> var spConfig = new Product.Config(<?php echo $ _jsonConfig ?>); </script> <?php echo $ this->getChildHtml('after') ?> <?php endif;?>