This little code snippet will add the present page title to the breadcrumb. We show you how to use this in steps.
Step 1 :
If you do not have
- Drupal7: a template.php file in your sites/all/themes/yourtheme/
- Drupal8: a yourtheme.theme in your themes/custom/yourtheme/
folder, create one.
Step 2 :
For Drupal 7
Copy and paste the code in the template.php file.
The function should be.
function MYTHEME_breadcrumb($variables) {
$breadcrumb = $variables['breadcrumb'];
if (!empty($breadcrumb)) {
// Adding the title of the current page to the breadcrumb.
$breadcrumb[] = drupal_get_title();
// Provide a navigational heading to give context for breadcrumb links to
// screen-reader users. Make the heading invisible with .element-invisible.
$output = '<h2 class="element-invisible">' . t('You are here') . '</h2>';
$output .= '<div class="breadcrumb">' . implode(' » ', $breadcrumb) . '</div>';
return $output;
}
}
That's it. Clear your cache. The current node title should now be displayed in the breadcrumb.
Alternative method
Or you can try this alternative solution (no template.php hack required):
<?php if (!drupal_is_front_page()): ?>
<div class="breadcrumb">
<?php print strip_tags($breadcrumb, '<a><h2>') . ' » ' . $title;?>
</div>
<?php endif; ?>
For Drupal 8
The function should be(inside MY_THEME.theme):
use Drupal\Core\Template\Attribute; // this should be at the top of your MY_THEME.theme file
function MYTHEME_preprocess_breadcrumb(&$variables) {
if ($variables['breadcrumb']) {
$request = \Drupal::request();
$route_match = \Drupal::routeMatch();
$page_title = \Drupal::service('title_resolver')->getTitle($request, $route_match->getRouteObject());
if (!empty($page_title)) {
$variables['breadcrumb'][] = [
'text' => $page_title,
'attributes' => new Attribute(['class' => ['active']])
];
}
}
}
It is not required to create a new breadcrumb.html.twig template inside your theme for the override to take effect, but make sure that the breadcrumb template used by your theme looks something like the code below:
{% if breadcrumb %}
<nav class="breadcrumb" role="navigation" aria-labelledby="system-breadcrumb">
<h2 id="system-breadcrumb" class="visually-hidden">{{ 'Breadcrumb'|t }}</h2>
<ol>
{% for item in breadcrumb %}
<li {{ item.attributes }}>
{% if item.url %}
<a href="{{ item.url }}">{{ item.text }}</a>
{% else %}
{{ item.text }}
{% endif %}
</li>
{% endfor %}
</ol>
</nav>
{% endif %}
Comments
doesn't work on drupal 7.
doesn't work on drupal 7. only title is printed
looks something like this
plus, 'phptemplate' should be replaced with 'MYTHEME' -- 'MYTHEME' should be the name of your theme folder...
(not everyone is going to know this offhand )
hence it would be helpful to most for drupal 5 & 6 versions if it looked like this:
Also see
Also see http://api.drupal.org/api/drupal/includes--theme.inc/function/theme_brea....
replace
replace in page.tpl.php this
with this ..
separator
I use
return '<div class="breadcrumb">'. implode(' » ', $breadcrumb) .'</div>';
instead
return '<div class="breadcrumb">'. implode(' » ', $breadcrumb) .'</div>';
to show separator correctly
Breadcrumbs as inline list
I needed my breadcrumbs to display as an inline list. This allows for the list, and CSS gives me the inline display.
This is built into the ZEN theme in Drupal 7
When using ZEN go to: appearance > [your theme] > settings and under the title ‘Breadcrumb settings’. you can turn this on with a checkbox.
If you don't want to use ZEN it still might be worth having a look at how they did it.
customize breadcrumb on view pages
Hi everyone, I'm not a php expert I'm only trying to insert a breadcrumb like HOME>SECTION1>PAGE on my "views pages" but I don't know what to do...
Actually the breadcrumb appears correctly on the other pages but not on "view pages", on view pages appears only "SECTION1" and not HOME>SECTION1>PAGE
Please help me
Thaks
Francky
Breadcrumb
How to make breadcrumb like this.
Baseurl/page/drupal
Home> page > drupal
My breadcrumb create like this.
Home > drupal
Please give me answer. I'm w8ing....................
Breadcumb like Home>Pagetitle
Add this code in theme_name.theme file
And then create another file in your theme's template folder named as "breadcrumb.html.twig" and put below code in this file :
Thats it. Now flush the cache and you will get breadcrumb with current page title like Home>Current Page Title.
You can change the separator by replacing ">" with the desired one.
P.S. For Drupal 8
Here is my 5 lines
Here is my 5 lines
Thanks, v helpful.
Thanks, v helpful.
Thanks
Thanks Working Fine...
We can use hook_menu
We can use hook_menu_breadcrumb_alter(&$active_trail, $item) to add new link in the end. According to this https://api.drupal.org/api/drupal/modules%21system%21system.api.php/func...
Add this code in theme_name
Add this code in theme_name.theme file
And then create another file in your theme's template folder named as "breadcrumb.html.twig" and put below code in this file :
Thats it. Now flush the cache and you will get breadcrumb with current page title like Home/Current Page Title.
You can change the separator by replacing "/" with the desired one.
It only work for nodes
@patelsachin444 thank you, it works perfect. But take into account that it's a solution that only works for nodes. The documentation example works also for other kind of pages, like views generated pages.
@ckrina,
@ckrina,
I didn't notice that. Guess this is what happens when you don't test your code thoroughly :)
Yes.
Yes.
www.thirstysix.com
To achieve this, use below
To achieve this, use below code in your custom module or create a new custom module.
I assume you already have understanding on how to create a custom module for Drupal 8/9.
Create your services file mymodule.services.yml and add below code,
You could set key as above like breadcrumb_nodes or breadcrumb or breadcrumb_terms etc as per your needs.
Then create breadcrumb builder file under mymodule/src/Breadcrumb/ directory named as MyModuleBreadcrumbBuilder.php and add below code. In applies() method you could set your logic so that your custom builder only gets called upon satisfying your condition. Where as build() method is where you will be changing your breadcrumb.
Hope this helps.
Thanks!!
/**
For the Drupal 8 solution, I
For the Drupal 8 solution, I was having problems with Drupal caching and Varnish cache (not sure which is the culprit). Basically the node title was getting cached and displaying the wrong title on subsequent page loads. I had to add the cache context to the $variables array to fix the issue.
See this thread: https://drupal.stackexchange.com/questions/202159/problem-with-hook-prep...