rebelsheep Posted March 18, 2019 Share Posted March 18, 2019 Hi, I'm looking to create my own menubar with drop down menus that is above the existing navbar. The reason for doing this is we have a lot of top level categories / menu items - so using the full width of the screen (on laptop / desktop) would be useful. So we would get more space to play with if we place our own menubar above the existing navbar, which currently holds the title of our site + Home + Currency Selector + Basket. What files do I need to edit to insert my own code in the place I would like? As a crude hack, and because I don't fully know OSCommerce yet.... I tried editing template_top.php in the includes folder, and stuck <p>hello</p> just below body, hoping that it would be this easy and I would see 'hello' on my website at the top of the page above the navbar. Needless to say, this didn't work. Current test site: http://notebookrepair.rocks/index.php The type of menu I am trying to achieve is at the top of this site: https://shop.notebookrepair.co.uk/ Thank you. Link to comment Share on other sites More sharing options...
Hotclutch Posted March 18, 2019 Share Posted March 18, 2019 It should work if you place the navbar there in template top. you can try: <p><?php echo 'Hello'; ?></p> Link to comment Share on other sites More sharing options...
rebelsheep Posted March 18, 2019 Author Share Posted March 18, 2019 Tried this but it still doesn't get outputted to the website. This is where I am putting it... <body> <p><?php echo 'Hello'; ?></p> <?php echo $oscTemplate->getContent('navigation'); ?> ...in the includes/template_top.php Link to comment Share on other sites More sharing options...
Hotclutch Posted March 18, 2019 Share Posted March 18, 2019 it works when i test. Link to comment Share on other sites More sharing options...
Hotclutch Posted March 18, 2019 Share Posted March 18, 2019 You can just put the example navbar there where you are trying to echo Hello, and build your navbar around that. here is the code: <nav class="navbar navbar-expand-lg navbar-light bg-light"> <a class="navbar-brand" href="#">Navbar</a> <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarSupportedContent"> <ul class="navbar-nav mr-auto"> <li class="nav-item active"> <a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a> </li> <li class="nav-item"> <a class="nav-link" href="#">Link</a> </li> <li class="nav-item dropdown"> <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> Dropdown </a> <div class="dropdown-menu" aria-labelledby="navbarDropdown"> <a class="dropdown-item" href="#">Action</a> <a class="dropdown-item" href="#">Another action</a> <div class="dropdown-divider"></div> <a class="dropdown-item" href="#">Something else here</a> </div> </li> <li class="nav-item"> <a class="nav-link disabled" href="#">Disabled</a> </li> </ul> <form class="form-inline my-2 my-lg-0"> <input class="form-control mr-sm-2" type="search" placeholder="Search" aria-label="Search"> <button class="btn btn-outline-success my-2 my-sm-0" type="submit">Search</button> </form> </div> </nav> if you want space between the 2 navbars then replace the first line of code with: <nav class="navbar navbar-expand-lg navbar-light bg-light mb-3"> Link to comment Share on other sites More sharing options...
rebelsheep Posted March 18, 2019 Author Share Posted March 18, 2019 Thank you HotClutch - that's excellent. The problem was with my FTP client - or rather me. Somehow I had set it to not overwrite existing files!! This has been killing me. Wasting hours banging head against wall with simple code that I KNOW MUST WORK. Doh! I now have a menubar that does what I would like - thank you so much. Link to comment Share on other sites More sharing options...
rebelsheep Posted March 19, 2019 Author Share Posted March 19, 2019 Is it possible to insert this code for this dropdown menu further down the page? Underneath the crumb? Link to comment Share on other sites More sharing options...
rebelsheep Posted March 19, 2019 Author Share Posted March 19, 2019 Or should I be inserting my custom code in to the website by creating my own modules? Link to comment Share on other sites More sharing options...
♥JcMagpie Posted March 19, 2019 Share Posted March 19, 2019 11 minutes ago, rebelsheep said: Or should I be inserting my custom code in to the website by creating my own modules? Yes just make a new module header or nav and then you can select which order it shows on the site. Just pick an existing one rename it and add your code. Link to comment Share on other sites More sharing options...
rebelsheep Posted March 19, 2019 Author Share Posted March 19, 2019 Ok, thanks, I will give it a go. Link to comment Share on other sites More sharing options...
rebelsheep Posted March 19, 2019 Author Share Posted March 19, 2019 So i just copy an existing module in includes/modules. So for example I copy nb_currencies.php And then when I edit it - it needs all the functions: function __construct() function getOutput() function isEnabled() function check() function install() function remove() function keys() ? And in which of the functions would I put the custom code? Thank you for your help, still learning. Link to comment Share on other sites More sharing options...
rebelsheep Posted March 19, 2019 Author Share Posted March 19, 2019 Actually will use the breadcrumb as the template - in \includes\modules\content\header Link to comment Share on other sites More sharing options...
rebelsheep Posted March 19, 2019 Author Share Posted March 19, 2019 And I put my custom code in execute() global $oscTemplate; $mymenu = "<nav class='navbar navbar-expand-lg navbar-light bg-light'>"; $mymenu = $mymenu . " <div class='collapse navbar-collapse' id='navbarSupportedContent'>"; $mymenu = $mymenu . " <ul class='navbar-nav mr-auto'>"; $mymenu = $mymenu . "<li class='nav-item dropdown nr-nav'>"; $mymenu = $mymenu . "<a class='nav-link dropdown-toggle' href='#' id='navbarDropdown' role='button' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>"; $mymenu = $mymenu . "Autocab"; $mymenu = $mymenu . "</a>"; $mymenu = $mymenu . "<div class='dropdown-menu' aria-labelledby='navbarDropdown'>"; $mymenu = $mymenu . "<a class='dropdown-item nr-nav' href='#'>Autocab PDAs</a>"; $mymenu = $mymenu . "<a class='dropdown-item nr-nav' href='#'>Autocab Phones</a>"; $mymenu = $mymenu . "<a class='dropdown-item nr-nav' href='#'>Autocab Radios</a>"; $mymenu = $mymenu . "<a class='dropdown-item nr-nav' href='#'>Autocab Mobile Data Terminals</a>"; $mymenu = $mymenu . "<a class='dropdown-item nr-nav' href='#'>Autocab Tablets</a>"; $mymenu = $mymenu . "<a class='dropdown-item nr-nav' href='#'>Autocab Accessories</a>"; $mymenu = $mymenu . "</div>"; $mymenu = $mymenu . "</li></ul></div></nav>"; $oscTemplate->addContent($mymneu, $this->group); Link to comment Share on other sites More sharing options...
rebelsheep Posted March 19, 2019 Author Share Posted March 19, 2019 $oscTemplate->addContent($mymenu, $this->group); Link to comment Share on other sites More sharing options...
rebelsheep Posted March 19, 2019 Author Share Posted March 19, 2019 Cool. That works - kind of. Just need to get my head around parameters etc. for the install. Link to comment Share on other sites More sharing options...
rebelsheep Posted March 19, 2019 Author Share Posted March 19, 2019 It worked when I changed the code in execute - and without further editing it was using the parameters from BREADCRUMB (because this was the file I copied). So now tried to give it it's own parameters - just enabled/disabled, SortOrder. But in Admin these values remain blank. What else do I need to do so values/parameters for this module are stored in the database? Here is the code: class cm_header_nbrmenu { var $code; var $group; var $title; var $description; var $sort_order; var $enabled = false; function __construct() { $this->code = get_class($this); $this->group = basename(dirname(__FILE__)); $this->title = "Notebook Repair Menu"; $this->description = "Notebook Repair Custom"; if ( defined('MODULE_CONTENT_HEADER_NBRMENU_STATUS') ) { $this->sort_order = MODULE_CONTENT_HEADER_NBRMENU_SORT_ORDER; $this->enabled = (MODULE_CONTENT_HEADER_NBRMENU_STATUS == 'True'); } } function execute() { global $oscTemplate; $mymenu = "<nav class='navbar navbar-expand-lg navbar-light bg-light'>"; $mymenu .= "<div class='collapse navbar-collapse' id='navbarSupportedContent'>"; $mymenu .= "<ul class='navbar-nav mr-auto'>"; $mymenu .= "<li class='nav-item dropdown nr-nav'>"; $mymenu .= "<a class='nav-link dropdown-toggle' href='#' id='navbarDropdown' role='button' data-toggle='dropdown' aria-haspopup='true' aria-expanded='false'>"; $mymenu .= "Autocab"; $mymenu .= "</a>"; $mymenu .= "<div class='dropdown-menu' aria-labelledby='navbarDropdown'>"; $mymenu .= "<a class='dropdown-item nr-nav' href='#'>Autocab PDAs</a>"; $mymenu .= "<a class='dropdown-item nr-nav' href='#'>Autocab Phones</a>"; $mymenu .= "<a class='dropdown-item nr-nav' href='#'>Autocab Radios</a>"; $mymenu .= "<a class='dropdown-item nr-nav' href='#'>Autocab Mobile Data Terminals</a>"; $mymenu .= "<a class='dropdown-item nr-nav' href='#'>Autocab Tablets</a>"; $mymenu .= "<a class='dropdown-item nr-nav' href='#'>Autocab Accessories</a>"; $mymenu .= "</div>"; $mymenu .= "</li></ul></div></nav>"; $oscTemplate->addContent($mymenu, $this->group); } function isEnabled() { return $this->enabled; } function check() { return defined('MODULE_CONTENT_HEADER_NBRMENU_STATUS'); } function install() { tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) values ('Enable Header NBRMenu Module', 'MODULE_CONTENT_HEADER_NBRMENU_STATUS', 'True', 'Do you want to enable the NBRMenu content module?', '6', '1', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())"); tep_db_query("insert into configuration (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Sort Order', 'MODULE_CONTENT_HEADER_NBRMENU_SORT_ORDER', '0', 'Sort order of display. Lowest is displayed first.', '6', '0', now())"); } function remove() { tep_db_query("delete from configuration where configuration_key in ('" . implode("', '", $this->keys()) . "')"); } function keys() { return array('MODULE_CONTENT_HEADER_NBRMENU_STATUS', 'MODULE_CONTENT_HEADER_NBRMENU_SORT_ORDER'); } } Link to comment Share on other sites More sharing options...
rebelsheep Posted March 19, 2019 Author Share Posted March 19, 2019 So I am assuming something is wrong in function install() Link to comment Share on other sites More sharing options...
♥JcMagpie Posted March 19, 2019 Share Posted March 19, 2019 zip your files and either post or pm and i'll have a look Link to comment Share on other sites More sharing options...
rebelsheep Posted March 19, 2019 Author Share Posted March 19, 2019 Thank you. See attached. Just one file - cm_header_nbrmenu.php in catalog\includes\modules\content\header. Not sure if I need other supporting files. cm_header_nbrmenu.zip Link to comment Share on other sites More sharing options...
♥JcMagpie Posted March 19, 2019 Share Posted March 19, 2019 I will take a look , but you may also try using this? https://apps.oscommerce.com/lf9R4&horizontal-megamenu-bootstrap Link to comment Share on other sites More sharing options...
♥JcMagpie Posted March 19, 2019 Share Posted March 19, 2019 try this file. cm_header_nbrmenu.php Link to comment Share on other sites More sharing options...
rebelsheep Posted March 19, 2019 Author Share Posted March 19, 2019 I tried the Megamenu but it wouldn't work - installed ok in Amin, enabled it - but doesn't show in front end. Also it doesn't do what I want - it replicates the Category structure which I don't want to do. ... I still get blank SortOrder and blank parameters with cm_header_nbrmenu.php Link to comment Share on other sites More sharing options...
rebelsheep Posted March 19, 2019 Author Share Posted March 19, 2019 I think I know the problem. Install() hasn't run to create the parameters. Because I installed it with the breadcrumb parameters. So I need to unistall it them install it again so Install runs. Link to comment Share on other sites More sharing options...
rebelsheep Posted March 19, 2019 Author Share Posted March 19, 2019 And the parameters for NBRMenu will then be created. Link to comment Share on other sites More sharing options...
rebelsheep Posted March 19, 2019 Author Share Posted March 19, 2019 YES!! That works. Thank you for your help JcMagpie. I think I have just written my first (very simple) OSCommerce module. :-) Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.