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>