Blog

Adding navigational links to your MOD (breadcrumbs)

Posted by battye in Modifications with the tags , , on January 31st, 2010

An easy way to add navigational links to your MOD is to use an inbuilt feature of phpBB3 called “breadcrumbs” (named because it leaves a trail back to the forum index).

It only requires a few extra lines of PHP code to add a breadcrumb to your own MOD (or to your website if you are doing personal customisations). This article explains how to do so.

To understand how this works, open styles/prosilver/template/overall_header.html and find this code:

Code: Select all
<!-- BEGIN navlinks --> <strong>‹</strong> <a href="{navlinks.U_VIEW_FORUM}">{navlinks.FORUM_NAME}</a><!-- END navlinks -->

This section of templating code is responsible for the creation of the breadcrumbs your see at the top of your forum.

Breadcrumbs

As you can see from the code, “{navlinks.U_VIEW_FORUM}” is the actual web address of the page and “{navlinks.FORUM_NAME}” is the name of the page you are linking to.

To add a breadcrumb of your own in your MOD, open the main .php file for your MOD. Then find the page_header function call in your script (you may have several of these, so you can do this to some or all of them if you wish).

Before the page_header call, add this code:

Code: Select all
$template->assign_block_vars('navlinks', array(
'FORUM_NAME' => $user->lang['MOD_INDEX'],
'U_VIEW_FORUM' => append_sid('my_mod.'.$phpEx),
));

As you can see, this templating code corresponds to the “navlinks” loop shown above in overall_header.html

It would give an output like this:

Breadcrumbs

$user->lang['MOD_INDEX'] is only an example language variable, you can set this to any language variable you like (or if it is for personal use and not a MOD, a hard coded string). In the append_sid call, you also need to replace “my_mod” with whatever the name of your .php page is called. If for whatever reason you wanted to link off-site, you could do this also by hard-coding a string. (ie. ‘U_VIEW_FORUM’ => ‘http://www.example.com’,)

Another feature of the breadcrumbs is that as it is using a template loop, you can include the code repeatedly to get more links. You could also include the code inside a loop to good effect (a foreach loop would be very useful).

For instance, you could use this code:

Code: Select all
$navlinks_array = array(
array(
'FORUM_NAME' => $user->lang['MOD_INDEX'],
'U_VIEW_FORUM' => append_sid('my_mod.'.$phpEx),
),

array(
'FORUM_NAME' => $user->lang['MOD_SUBPAGE'],
'U_VIEW_FORUM' => append_sid('my_mod.'.$phpEx, 's=1'),
),

array(
'FORUM_NAME' => $user->lang['MOD_SUBPAGE_2'],
'U_VIEW_FORUM' => append_sid('my_mod.'.$phpEx, 's=2'),
),
);

foreach( $navlinks_array as $name )
{
$template->assign_block_vars('navlinks', array(
'FORUM_NAME' => $name['FORUM_NAME'],
'U_VIEW_FORUM' => $name['U_VIEW_FORUM'],
));
}

To generate an output like this:

Breadcrumbs

As these examples only require PHP changes and no template changes, there is no need to purge the cache once the changes have been applied.

I hope this article has been useful.

17 Responses to “Adding navigational links to your MOD (breadcrumbs)”

Posted by Kamran on January 31st, 2010 at 4:41 am:

I actually was looking for something like this, Great that I can finally add it :)
Thank you for posting it.

Posted by Senky on January 31st, 2010 at 9:50 am:

Waw, finally, I know how to do this… Okay, so lets update MODs :)

Posted by Dog Cow on February 1st, 2010 at 6:45 pm:

I didn’t realize that there was a function for this. :-)

Posted by David on February 2nd, 2010 at 4:01 am:

Now if only there were a way to easily add links next to the FAQ and Members links, using PHP to remove the need for template edits in overall header. :D

But thanks for the good tutorial. :)

Posted by whmcs templates on February 2nd, 2010 at 7:20 am:

Just discovered your blog and IT ROCKS! I absolutely love your style – it’s very authentic.

Posted by Martin Truckenbrodt on February 3rd, 2010 at 9:35 pm:

Hello,
the easiest and most usefull way to do a lot of things is just to try to understand how phpBB3 code is working and then to copy&paste&customize it for the MOD. Learning by doing! ;)
Bye Martin

Posted by Max on February 4th, 2010 at 5:11 am:

Hello,

Thats nice ..I have been searching it around ..this will help me fix few things at my end.

Thank you members.

Posted by Sajaki on February 6th, 2010 at 9:28 am:

overall_header.html changes are the biggest source of mod conflicts, so if it is possible to avoid editing it through MODX, this is great news ;)

Posted by Sajaki on February 6th, 2010 at 4:13 pm:

would this also work on Subsilver2 ?

Posted by Nathan on February 16th, 2010 at 1:34 pm:

Great tutorial.

@ Sajaki, I don’t think it would work with Subsilver2, the edits would be different I think. But then again it’d be stupid for them to post a tutorial only for prosilver.

Good luck though.

Posted by updown on February 24th, 2010 at 12:43 am:

@Sajakim @Nathan:
This is style-independant, so of course it also works with subsilver2 as with any other phpbb-style.

Posted by raj on March 15th, 2010 at 8:04 am:

Hello ,
thanks

Posted by Eric on March 16th, 2010 at 1:22 am:

I know this sounds dumb but I have no clue where to edit any of the text within my new forum. Such as in the header where it says yourdomain.com. Where do you do this at I have searched for hours.

Thanks for any help

Posted by Pete Smith on March 17th, 2010 at 1:08 am:

@Eric

The site name can be changed in ACP (Administration Control Panel) » Board settings (left menu) » Site name

Don’t post support requests on the blog, use the support forum created for this purpose. http://www.phpbb.com/community/viewforum.php?f=46

Posted by Graham on May 5th, 2010 at 4:08 pm:

Thanks for this, any information that is easy to understand, such as this, is always welcome.

Posted by xseoer on July 14th, 2010 at 1:43 am:

This is what i am looking for.

Posted by Steve on August 12th, 2010 at 10:11 pm:

Are using breadcrumbs still as effective as they used to be when it comes to seo?

Commenting is disabled for this blog post