do2go Posted December 6, 2013 Share Posted December 6, 2013 Hello! I've read alot about this topic but no one provide working solution for latest prestashop. What I try to do is to add class for each <li> element into the category menu at blockmenutop. I've found this: $this->_menu .= '<li'.$selected.'> so I changed it all to this: $this->_menu .= '<li class="'.$id.'" '.$selected.'> But with out any result. Ofcourse I did that to every $this->_menu .= '<li'.$selected.'> to make sure I format the right one. If I do something like this: $this->_menu .= '<li class="'1'" '.$selected.'> for testing purpose to avoid .$id. - doesn't work eather. Do you have any solution for that matter? Thanks in advice! Link to comment Share on other sites More sharing options...
vekia Posted December 6, 2013 Share Posted December 6, 2013 instead of simepl $id you have to use other variable, for categories: $category->id, for manufacturers: $manufacturer['id_manufacturer'], for suppliers: $supplier['id_supplier'] etc. everything in this code: switch (substr($item, 0, strlen($value[1]))) { case 'CAT': $this->getCategory($id, $id_lang, $id_shop); break; case 'PRD': $selected = ($this->page_name == 'product' && (Tools::getValue('id_product') == $id)) ? ' class="sfHover"' : ''; $product = new Product((int)$id, true, (int)$id_lang); if (!is_null($product->id)) $this->_menu .= '<li'.$selected.'><a href="'.Tools::HtmlEntitiesUTF8($product->getLink()).'">'.$product->name.'</a></li>'.PHP_EOL; break; case 'CMS': $selected = ($this->page_name == 'cms' && (Tools::getValue('id_cms') == $id)) ? ' class="sfHover"' : ''; $cms = CMS::getLinks((int)$id_lang, array($id)); if (count($cms)) $this->_menu .= '<li'.$selected.'><a href="'.Tools::HtmlEntitiesUTF8($cms[0]['link']).'">'.$cms[0]['meta_title'].'</a></li>'.PHP_EOL; break; case 'CMS_CAT': $category = new CMSCategory((int)$id, (int)$id_lang); if (count($category)) { $this->_menu .= '<li><a href="'.Tools::HtmlEntitiesUTF8($category->getLink()).'">'.$category->name.'</a>'; $this->getCMSMenuItems($category->id); $this->_menu .= '</li>'.PHP_EOL; } break; // Case to handle the option to show all Manufacturers case 'ALLMAN': $link = new Link; $this->_menu .= '<li><a href="'.$link->getPageLink('manufacturer').'">'.$this->l('All manufacturers').'</a><ul>'.PHP_EOL; $manufacturers = Manufacturer::getManufacturers(); foreach ($manufacturers as $key => $manufacturer) $this->_menu .= '<li><a href="'.$link->getManufacturerLink((int)$manufacturer['id_manufacturer'], $manufacturer['link_rewrite']).'">'.$manufacturer['name'].'</a></li>'.PHP_EOL; $this->_menu .= '</ul>'; break; case 'MAN': $selected = ($this->page_name == 'manufacturer' && (Tools::getValue('id_manufacturer') == $id)) ? ' class="sfHover"' : ''; $manufacturer = new Manufacturer((int)$id, (int)$id_lang); if (!is_null($manufacturer->id)) { if (intval(Configuration::get('PS_REWRITING_SETTINGS'))) $manufacturer->link_rewrite = Tools::link_rewrite($manufacturer->name); else $manufacturer->link_rewrite = 0; $link = new Link; $this->_menu .= '<li'.$selected.'><a href="'.Tools::HtmlEntitiesUTF8($link->getManufacturerLink((int)$id, $manufacturer->link_rewrite)).'">'.$manufacturer->name.'</a></li>'.PHP_EOL; } break; // Case to handle the option to show all Suppliers case 'ALLSUP': $link = new Link; $this->_menu .= '<li><a href="'.$link->getPageLink('supplier').'">'.$this->l('All suppliers').'</a><ul>'.PHP_EOL; $suppliers = Supplier::getSuppliers(); foreach ($suppliers as $key => $supplier) $this->_menu .= '<li><a href="'.$link->getSupplierLink((int)$supplier['id_supplier'], $supplier['link_rewrite']).'">'.$supplier['name'].'</a></li>'.PHP_EOL; $this->_menu .= '</ul>'; break; case 'SUP': $selected = ($this->page_name == 'supplier' && (Tools::getValue('id_supplier') == $id)) ? ' class="sfHover"' : ''; $supplier = new Supplier((int)$id, (int)$id_lang); if (!is_null($supplier->id)) { $link = new Link; $this->_menu .= '<li'.$selected.'><a href="'.Tools::HtmlEntitiesUTF8($link->getSupplierLink((int)$id, $supplier->link_rewrite)).'">'.$supplier->name.'</a></li>'.PHP_EOL; } break; case 'SHOP': $selected = ($this->page_name == 'index' && ($this->context->shop->id == $id)) ? ' class="sfHover"' : ''; $shop = new Shop((int)$id); if (Validate::isLoadedObject($shop)) { $link = new Link; $this->_menu .= '<li'.$selected.'><a href="'.Tools::HtmlEntitiesUTF8($shop->getBaseURL()).'">'.$shop->name.'</a></li>'.PHP_EOL; } break; case 'LNK': $link = MenuTopLinks::get((int)$id, (int)$id_lang, (int)$id_shop); if (count($link)) { if (!isset($link[0]['label']) || ($link[0]['label'] == '')) { $default_language = Configuration::get('PS_LANG_DEFAULT'); $link = MenuTopLinks::get($link[0]['id_linksmenutop'], $default_language, (int)Shop::getContextShopID()); } $this->_menu .= '<li><a href="'.Tools::HtmlEntitiesUTF8($link[0]['link']).'"'.(($link[0]['new_window']) ? ' target="_blank"': '').'>'.$link[0]['label'].'</a></li>'.PHP_EOL; } break; } Link to comment Share on other sites More sharing options...
do2go Posted December 8, 2013 Author Share Posted December 8, 2013 (edited) Thanks for ur anwser! But even If I samply put class="1" - it doesn't show up. I exacly edit this code u've pase here. Adding for testing purpose <li class="'1'" '.$selected.'> and still nothing chages. Adding this everywere to see if there will be change. There is not. Where should I put this class, could u give me a example how u would add different classes for each <li>, like id or sth? ps. Got it! Changed finaly the right now! The issue was.... cashe... I've made right change but cashe didn't refresh CSS so I didn't see the change. Hope this will help every one who straggle with design of the menu Heres the code: // filter the categories that the user is allowed to see and browse if (!empty($is_intersected)) { $this->_menu .= '<li '.$selected.' class="'.$category->id.'">'; $this->_menu .= '<a href="'.$category_link.'">'.$category->name.'</a>'; if (count($children)) { $this->_menu .= '<ul>'; foreach ($children as $child) $this->getCategory((int)$child['id_category'], (int)$id_lang, (int)$child['id_shop']); $this->_menu .= '</ul>'; } $this->_menu .= '</li>'; } Line 664: $this->_menu .= '<li '.$selected.' class="'.$category->id.'">'; Thanks for help Veika Edited December 8, 2013 by do2go (see edit history) Link to comment Share on other sites More sharing options...
vekia Posted December 8, 2013 Share Posted December 8, 2013 hello thank you for information that it is solved. to regenereate menu just simply open configuration page and hit "save" button your menu will be regenerated topic marked as [solved] with regards Milos Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now