I put in:
$html[] = $this->getLayout() ->createBlock('core/template') ->setTemplate('catalogsearch/form.mini.phtml') ->toHtml();
/////////////and I also tried//////////
$htmlTop[] = $this->getLayout() ->createBlock('core/template') ->setTemplate('catalogsearch/form.mini.phtml') ->toHtmlTop();
Both of these broke the menu and removed the entire menu after inserting this code; So Im not sure if I put it in the right spot, or something.
Hi @damiende
The bottom block, the last method call is wrong, you cann toHtmlTop, it should just be toHtml()
Ya I tried that also
Here is the area code for that drawCustomMenuItem
public function drawCustomMenuItem($category, $level = 0, $last = false) { if (!$category->getIsActive()) return; $htmlTop = array(); $id = $category->getId(); // --- Static Block --- $blockId = sprintf(self::CUSTOM_BLOCK_TEMPLATE, $id); // --- static block key #Mage::log($blockId); $collection = Mage::getModel('cms/block')->getCollection() ->addFieldToFilter('identifier', array(array('like' => $blockId . '_w%'), array('eq' => $blockId))) ->addFieldToFilter('is_active', 1); $blockId = $collection->getFirstItem()->getIdentifier(); #Mage::log($blockId); $blockHtml = Mage::app()->getLayout()->createBlock('cms/block')->setBlockId($blockId)->toHtml(); // --- Sub Categories --- $activeChildren = $this->_getActiveChildren($category, $level); // --- class for active category --- $active = ''; if ($this->isCategoryActive($category)) $active = ' act'; // --- Popup functions for show --- $drawPopup = ($blockHtml || count($activeChildren)); if ($drawPopup) { $htmlTop[] = '<div id="menu' . $id . '" class="menu' . $active . '" onmouseover="wpShowMenuPopup(this, event, \'popup' . $id . '\');" onmouseout="wpHideMenuPopup(this, event, \'popup' . $id . '\', \'menu' . $id . '\')">'; } else { $htmlTop[] = '<div id="menu' . $id . '" class="menu' . $active . '">'; } // --- Top Menu Item --- $htmlTop[] = '<div class="parentMenu">'; if ($level == 0 && $drawPopup) { $htmlTop[] = '<a class="level' . $level . $active . '" href="javascript:void(0);" rel="'.$this->getCategoryUrl($category).'">'; } else { $htmlTop[] = '<a class="level' . $level . $active . '" href="'.$this->getCategoryUrl($category).'">'; } $name = $this->escapeHtml($category->getName()); if (Mage::getStoreConfig('custom_menu/general/non_breaking_space')) { $name = str_replace(' ', ' ', $name); } $htmlTop[] = '<span>' . $name . '</span>'; $htmlTop[] = '</a>'; $htmlTop[] = '</div>'; $htmlTop[] = '</div>'; $this->_topMenu[] = implode("\n", $htmlTop); // --- Add Popup block (hidden) --- if ($drawPopup) { $htmlPopup = array(); // --- Popup function for hide --- $htmlPopup[] = '<div id="popup' . $id . '" class="wp-custom-menu-popup" onmouseout="wpHideMenuPopup(this, event, \'popup' . $id . '\', \'menu' . $id . '\')" onmouseover="wpPopupOver(this, event, \'popup' . $id . '\', \'menu' . $id . '\')">'; // --- draw Sub Categories --- if (count($activeChildren)) { $columns = (int)Mage::getStoreConfig('custom_menu/columns/count'); $htmlPopup[] = '<div class="block1">'; $htmlPopup[] = $this->drawColumns($activeChildren, $columns); $htmlPopup[] = '<div class="clearBoth"></div>'; $htmlPopup[] = '</div>'; } // --- draw Custom User Block --- if ($blockHtml) { $htmlPopup[] = '<div id="' . $blockId . '" class="block2">'; $htmlPopup[] = $blockHtml; $htmlPopup[] = '</div>'; } $htmlPopup[] = '</div>'; $this->_popupMenu[] = implode("\n", $htmlPopup); } }
I put it right under:
$id = $category->getId();
but it made the menu dissapear
Hi @damiende
Your code should look like the code example bellow. However if you menu dsiapeared its properly a PHP or some HTML weird conflict in the catalogsearch/form.mini.phtml template. If nothing apears go check the template file and make sure there are some data to be rendered.
public function drawCustomMenuItem($category, $level = 0, $last = false) { if (!$category->getIsActive()) return; $htmlTop = array(); $id = $category->getId(); $htmlTop[] = $this->getLayout() ->createBlock('core/template') ->setTemplate('catalogsearch/form.mini.phtml') ->toHtml(); // --- Static Block --- $blockId = sprintf(self::CUSTOM_BLOCK_TEMPLATE, $id); // --- static block key #Mage::log($blockId); $collection = Mage::getModel('cms/block')->getCollection() ->addFieldToFilter('identifier', array(array('like' => $blockId . '_w%'), array('eq' => $blockId))) ->addFieldToFilter('is_active', 1); $blockId = $collection->getFirstItem()->getIdentifier(); #Mage::log($blockId); $blockHtml = Mage::app()->getLayout()->createBlock('cms/block')->setBlockId($blockId)->toHtml(); // --- Sub Categories --- $activeChildren = $this->_getActiveChildren($category, $level); // --- class for active category --- $active = ''; if ($this->isCategoryActive($category)) $active = ' act'; // --- Popup functions for show --- $drawPopup = ($blockHtml || count($activeChildren)); if ($drawPopup) { $htmlTop[] = '<div id="menu' . $id . '" class="menu' . $active . '" onmouseover="wpShowMenuPopup(this, event, \'popup' . $id . '\');" onmouseout="wpHideMenuPopup(this, event, \'popup' . $id . '\', \'menu' . $id . '\')">'; } else { $htmlTop[] = '<div id="menu' . $id . '" class="menu' . $active . '">'; } // --- Top Menu Item --- $htmlTop[] = '<div class="parentMenu">'; if ($level == 0 && $drawPopup) { $htmlTop[] = '<a class="level' . $level . $active . '" href="javascript:void(0);" rel="'.$this->getCategoryUrl($category).'">'; } else { $htmlTop[] = '<a class="level' . $level . $active . '" href="'.$this->getCategoryUrl($category).'">'; } $name = $this->escapeHtml($category->getName()); if (Mage::getStoreConfig('custom_menu/general/non_breaking_space')) { $name = str_replace(' ', ' ', $name); } $htmlTop[] = '<span>' . $name . '</span>'; $htmlTop[] = '</a>'; $htmlTop[] = '</div>'; $htmlTop[] = '</div>'; $this->_topMenu[] = implode("\n", $htmlTop); // --- Add Popup block (hidden) --- if ($drawPopup) { $htmlPopup = array(); // --- Popup function for hide --- $htmlPopup[] = '<div id="popup' . $id . '" class="wp-custom-menu-popup" onmouseout="wpHideMenuPopup(this, event, \'popup' . $id . '\', \'menu' . $id . '\')" onmouseover="wpPopupOver(this, event, \'popup' . $id . '\', \'menu' . $id . '\')">'; // --- draw Sub Categories --- if (count($activeChildren)) { $columns = (int)Mage::getStoreConfig('custom_menu/columns/count'); $htmlPopup[] = '<div class="block1">'; $htmlPopup[] = $this->drawColumns($activeChildren, $columns); $htmlPopup[] = '<div class="clearBoth"></div>'; $htmlPopup[] = '</div>'; } // --- draw Custom User Block --- if ($blockHtml) { $htmlPopup[] = '<div id="' . $blockId . '" class="block2">'; $htmlPopup[] = $blockHtml; $htmlPopup[] = '</div>'; } $htmlPopup[] = '</div>'; $this->_popupMenu[] = implode("\n", $htmlPopup); } }
This is my form.mini.phtml, the above code does make the menu dissapear;
$catalogSearchHelper = $this->helper('catalogsearch'); ?> <form id="search_mini_form" action="<?php echo $catalogSearchHelper->getResultUrl() ?>" method="get"> <div class="form-search"> <label for="search"><?php echo $this->__('Search:') ?></label> <input id="search" type="text" name="<?php echo $catalogSearchHelper->getQueryParamName() ?>" value="<?php echo $catalogSearchHelper->getEscapedQueryText() ?>" class="input-text" maxlength="<?php echo $catalogSearchHelper->getMaxQueryLength();?>" /> <button type="submit" title="<?php echo $this->__('Search') ?>" class="button"><span><span><?php echo $this->__('Search') ?></span></span></button> <div id="search_autocomplete" class="search-autocomplete"></div> <script type="text/javascript"> //<![CDATA[ var searchForm = new Varien.searchForm('search_mini_form', 'search', '<?php echo $this->__('Search entire store here...') ?>'); searchForm.initAutocomplete('<?php echo $catalogSearchHelper->getSuggestUrl() ?>', 'search_autocomplete'); //]]> </script> </div> </form>