Converting multi-select field to checkbox in the advanced search form of Magento

Introduction:

Have you ever thought of modifying the default multi-select field to checkbox field in an advanced search of Magento?
If not then here we will be discussing how to do which is damn easy and much user-friendlier.

Steps:

1> Copy the following file to your working theme:
app/design/frontend/[interface]/[theme]/template/catalogsearch/advanced/form.phtml

2> Open the form.phtml (from above) and find the following line just after the case ‘select’: ?>

<div class="input-box">
	<?php echo $this->getAttributeSelectElement($_attribute) ?>
</div>

and replace it by the following code

<?php if(in_array($_attribute->getAttributeCode(), array('manufacturer'))): ?>
<div class="input-box">
	<?php
		 $options = $_attribute->getSource()->getAllOptions(false);
		 foreach($options as $_option):
			 $isChecked = in_array($_option['value'], $this->getRequest()->getParam($_attribute->getAttributeCode())) ? ' checked="checked"' : null;
			 ?>
	<input type="checkbox" name="<?php echo $_attribute->getAttributeCode(); ?>[]" value="<?php echo $_option['value']; ?>"<?php echo $isChecked; ?> /> <?php echo $_option['label']; ?><br />
	<?php
		 endforeach;
	?>
</div>
<?php else: ?>
<div class="input-box">
	<?php echo $this->getAttributeSelectElement($_attribute); ?>
</div>
<?php endif; ?>

Note: Here we have customized the display for manufacturer attribute, similarly you can customize for other attributes. Just you need to add the attribute code(for example color) in the array as:

<?php if(in_array($_attribute->getAttributeCode(), array('manufacturer', 'color'))): ?>

3> Try to refresh the advanced search page: http://your-magento-url/catalogsearch/advanced
You will see some good results 🙂

Manufacturer in default format (Before)
Customized Manufacturer Display(After)

Note: You can use some CSS in order to break the checkboxes in multi-columns for better display.
Hope you liked this article 🙂

3 thoughts on “Converting multi-select field to checkbox in the advanced search form of Magento”

  1. Great tutorial – one issue I’ve found.

    If you have an attribute with the input type “Multiple Select”, it doesn’t appear to work. It works fine with dropdown selectors (where only one value for an attribute can be selected).

    Is there a fix?

    Reply

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.