Mirasvit Search AutoComplete Box Missing After Enabling LiteMage

Problem

If you have added header in LiteMage's **Customized Block Names for "toplinks" Tag** setting, the entire header will be treated as one big ESI block. When LiteMage is enabled, the default search box will show up in the header, but not the customized Mirasvit search box.

Cause

The Mirasvit search block is not directly added to header block in the layout, but is added later in the addSearchAutocomplete action method call. The related code is located in the Mirasvit_SearchAutocomplete_Block_Layout addForm() function in file app/code/local/Mirasvit/SearchAutocomplete/Block/Layout.php. When LiteMage renders the ESI block header based on layout, it is not aware of this replaced search box, thus the default search box is used.

Solution

To fix this:

  1. Locate the layout XML added by Misrasvit search box. In our example this is located in design/frontend/base/default/layout/mst_searchautocomplete.xml.

    In the default handle, it adds search.block.
    <default>
      …
            <block type="searchautocomplete/layout" name="search.block">
                <action method="addSearchAutocomplete" ifconfig="searchautocomplete/general/enabled" />
            </block>
      …
    </default>
  2. Add this block to the header block in the layout file, allowing the related layout xml to be picked up by LiteMage. Modify the above layout file, wrapping the block with a header reference.
    <default>
      …
        <reference name="header">
            <block type="searchautocomplete/layout" name="search.block">
                <action method="addSearchAutocomplete" ifconfig="searchautocomplete/general/enabled" />
            </block>
        </reference>
      …
    </default>
  3. Flush the Magento configuration cache and LiteMage cache. The customized search box should now appear as normal.