History of TopBarTutorial
Version 3
TopBarTutorial
a brief tutorial on how to create your own top bar
Fantastic News!
i managed to integrate a nexus menu in the top bar. this means that the top bar menu can now be created using a nice bitweaver style interface.to create a top menu bar, you will need to update to the latest cvs or wait for release 1.0.2
anyway, the Nexus Suckerfish --> Horizontal menu is now a dedicated top bar menu.
until release 1.0.2
unfortunately our top bar is not replacable by using the web interface. you need to modify a template file by hand. hopefully this will change very soon...Where does the top bar come from?
the top bar is controlled by this template:
<?php
kernel/templates/top_bar.tpl
?>
for your own convenience, copy the file to your own theme directory
<?php
themes/styles/<style>/kernel/top_bar.tpl
?>
any changes found in this file will override the original file. this way you keep the original file and make upgrading easier. for more information see ThemeTutorial.
Editing the top bar file
now that you have the file there, you can open in with any text editor. for your own convenience, we will maintain the original menu when you are logged in as admin but regular users will only see the custom menu.after
insert:
{code()}
{if $gBitUser->isAdmin()}
{code}
and before the last
insert:{code()}
{if $gBitUser->isAdmin()}
{code}
and before the last
{code()}
{else}
<this is="" where="" the="" custom="" menu="" goes="">
{/if}
{code}
Use Nexus
if you really don't want to create a menu by hand, you can (with some modifications of the files), use nexus.first of all, create a menu using Nexus and pick the suckerfish horizontal dropdown menu style. this is the same as the one currently in use. if you don't like this menu, or you feel it is too buggy, you might have to create your own Nexus plugin (see the NexusPackage page for details).
once you have picked a name for the nexus menu and you have created a new menu, Nexus creates a cached file. you can now copy the cached file to the same folder as your top_bar.tpl file.
the file will look something like:
{code()}
{tikimodule title=...}<very hard="" to="" read="" menu="" stuff="" in="" here="">{/tikimodule}
{code}
all you need to do now is remove everything in the first and last set of curly braces that you are left with the <very hard="" to="" read="" menu="" stuff="">.
finally, you need to modify the top_bar.tpl file to include the file you just created in your top bar:
{code()}
<this is="" where="" the="" custom="" menu="" goes="">
changes to:
{ include file="bitpackage=kernel/
- .tpl"}
{code}Note: i had to insert a space between { and include due to the include plugin. please don't copy and paste the above without removing the space.Custom Menu
the custom menu is a simple XHTML unordered list with a few classes set for the links and looks something like this:
{code()}
{code}
Final Code
the resulting file should look something like this:{code()}
{strip}
{* this link is for textbrowsers *}
{if $gBitUser->isAdmin()}
{tr}go to top{/tr}
- {tr}{$siteTitle|default:"Home"}{/tr}
{foreach key=key item=menu from=$appMenu}
{if $menu.title && $menu.titleUrl && $menu.template}
{tr}{$menu.title}{/tr}
{if $gBitSystemPrefs.feature_top_bar_dropdown eq 'y'}
{ include file="`$menu.template`"}
{/if}
{/if}
{/foreach}
{if $gBitUser->isAdmin()}
{tr}Administration{/tr}
{if $gBitSystemPrefs.feature_top_bar_dropdown eq 'y'}
{foreach key=key item=menu from=$adminMenu}
{tr}{$key|capitalize}{/tr}
{ include file=`$menu.tpl`}
{/foreach}
{tr}Layout and Design{/tr}
{ include file="bitpackage:kernel/menu_layout_admin.tpl"}
{/if}
{/if}
{else}
{/if}
{/strip}
{code}
Note: i had to insert a space between { and include due to the include plugin. please don't copy and paste the above without removing the space.
hope this helps and wish you luck!
please excuse the inconvenience caused.
</this></very></very></this>