Jump to content

Résolu - breadcrumb ne pas afficher l'accueil ?


Recommended Posts

Bonjour,

j'ai un module de blog, ou le breadcrumb (d'origine) est ainsi :

Accueil/blog

je voudrais pouvoir avoir uniquement quand je suis sur les pages du blog

Blog

J'ai besoin de supprimer l'accueil. Comment puis-je faire ?

merci pour votre aide Ps 1.7

Edited by Manu-41
Merci Divine ;-) (see edit history)
Link to comment
Share on other sites

Dans ce cas, je tenterais quelque chose comme ceci dans le fichier templates >> _partials >> breadcrumb.tpl du thème utilisé :

{block name='breadcrumb_item'}
  {if $page.page_name != 'blog'}
    <li>
      {if not $smarty.foreach.breadcrumb.last}
        <a href="{$path.url}"><span>{$path.title}</span></a>
      {else}
        <span>{$path.title}</span>
      {/if}
    </li>
  {else}
    {if !$smarty.foreach.breadcrumb.first}
      <li>
        {if not $smarty.foreach.breadcrumb.last}
          <a href="{$path.url}"><span>{$path.title}</span></a>
        {else}
          <span>{$path.title}</span>
        {/if}
      </li>
    {/if}
  {/if}
{/block}

Il faudra remplacer "blog" par le véritable nom de la page du blog. S'il y a plusieurs pages de blog concernées, il faudra ajouter dans la condition le nom de chaque page comme ceci :

{if $page.page_name != 'page_blog_1' && $page.page_name != 'page_blog_2' && $page.page_name != 'page_blog_3'}

Ne pas oublier de forcer la compilation pour que la modification soit bien prise en compte.

Link to comment
Share on other sites

1 hour ago, Divine said:

Dans ce cas, je tenterais quelque chose comme ceci dans le fichier templates >> _partials >> breadcrumb.tpl du thème utilisé :

{block name='breadcrumb_item'}
  {if $page.page_name != 'blog'}
    <li>
      {if not $smarty.foreach.breadcrumb.last}
        <a href="{$path.url}"><span>{$path.title}</span></a>
      {else}
        <span>{$path.title}</span>
      {/if}
    </li>
  {else}
    {if !$smarty.foreach.breadcrumb.first}
      <li>
        {if not $smarty.foreach.breadcrumb.last}
          <a href="{$path.url}"><span>{$path.title}</span></a>
        {else}
          <span>{$path.title}</span>
        {/if}
      </li>
    {/if}
  {/if}
{/block}

Il faudra remplacer "blog" par le véritable nom de la page du blog. S'il y a plusieurs pages de blog concernées, il faudra ajouter dans la condition le nom de chaque page comme ceci :

{if $page.page_name != 'page_blog_1' && $page.page_name != 'page_blog_2' && $page.page_name != 'page_blog_3'}

Ne pas oublier de forcer la compilation pour que la modification soit bien prise en compte.

Merci Divine pour toutes ces précisions, je n'ai pas le même code.

{if isset($breadcrumb.links[1])}
  <nav aria-label="breadcrumb">
    <ol class="brum breadcrumb breadcrumb-light flex-lg-nowrap breadcrumb-mob">
      {foreach from=$breadcrumb.links item=path name=breadcrumb}
        {if $path.url != $urls.current_url}
          <li class="breadcrumb-item">
            <a href="{$path.url}" title="{$path.title}">
              {if $path.url == $urls.pages.index}
                Accueil
              {else}
                <span class="text-nowrap">{$path.title}</span>
              {/if}
            </a>
          </li>

        {/if}
      {/foreach}
    </ol>
  </nav>
{/if}

 

Link to comment
Share on other sites

Le code indiqué est bizarre mais avec ce code, cela donne ceci :

{if isset($breadcrumb.links[1])}
  <nav aria-label="breadcrumb">
    <ol class="brum breadcrumb breadcrumb-light flex-lg-nowrap breadcrumb-mob">
      {foreach from=$breadcrumb.links item=path name=breadcrumb}
        {if $path.url != $urls.current_url}
          {if $page.page_name != 'blog'}
            <li class="breadcrumb-item">
              <a href="{$path.url}" title="{$path.title}">
                {if $path.url == $urls.pages.index}
                  Accueil
                {else}
                  <span class="text-nowrap">{$path.title}</span>
                {/if}
              </a>
            </li>
          {else}
            {if !$smarty.foreach.breadcrumb.first}
              <li class="breadcrumb-item">
                <a href="{$path.url}" title="{$path.title}">
                  {if $path.url == $urls.pages.index}
                    Accueil
                  {else}
                    <span class="text-nowrap">{$path.title}</span>
                  {/if}
                </a>
              </li>
            {/if}
          {/if}
        {/if}
      {/foreach}
    </ol>
  </nav>
{/if}

Pourquoi "Accueil" est ainsi en dur dans le code (sans utilisation de la syntaxe pour traduire le terme) ?
Et y a-t-il une raison pour laquelle le dernier élément du breadcrumb (la page courante) n'est pas affiché ?

Link to comment
Share on other sites

Pour les microdatas c'est le même principe. Il faut vérifier la page sur laquelle on est, si on se trouve sur une page autre que le blog, on affiche les microdatas normalement, sinon on n'affiche pas le premier élément de la liste.

Ceci dit je ne suis pas sûre que cela soit une bonne idée de toucher ainsi au microdatas, vous risquez d'avoir des erreurs dans votre Search Console Google.
A vérifier donc.

Edited by Divine (see edit history)
Link to comment
Share on other sites

9 minutes ago, Divine said:

Pour les microdatas c'est le même principe. Il faut vérifier la page sur laquelle on est, si on se trouve sur une page autre que le blog, on affiche les microdatas normalement, sinon on n'affiche pas le premier élément de la liste.

Ceci dit je ne suis pas sûre que cela soit une bonne idée de toucher ainsi au microdatas, vous risquez d'avoir des erreurs dans votre Search Console Google.
A vérifier donc.

Le but étant de rendre les page du blog indépendante de la boutique. Et il me reste juste le microdata.

J'ajoute une image, car le code ne passe pas

microdataCapture.PNG

Edited by Manu-41
merci (see edit history)
Link to comment
Share on other sites

16 hours ago, Divine said:

Comme je vous l'ai dit, même principe, il vous suffit de faire la même chose que pour le fichier breadcrumb.tpl. Le code ne passe pas non plus de mon côté...

J'ai ajouté la condition avec le code de mon blog, mais le fil part toujours depuis l'accueil.

J'ai ce code :

"itemListElement": [
    {foreach from=$breadcrumb.links item=path name=breadcrumb}
    {
    "@type": "ListItem",
    "position": {$smarty.foreach.breadcrumb.iteration},
    "name": "{$path.title}",
    "item": "{$path.url}"
    }{if !$smarty.foreach.breadcrumb.last},{/if}
    {/foreach}]

 

Link to comment
Share on other sites

Essayez ceci :

"itemListElement": [
  {foreach from=$breadcrumb.links item=path name=breadcrumb}
    {if $page.page_name != 'blog'}
      {
        "@type" : "ListItem",
        "position" : {$smarty.foreach.breadcrumb.iteration},
        "name" : "{$path.title}",
        "item" : "{$path.url}"
      }{if !$smarty.foreach.breadcrumb.last},{/if}
    {else}
      {if !$smarty.foreach.breadcrumb.first}
        {
          "@type" : "ListItem",
          "position" : {$smarty.foreach.breadcrumb.iteration - 1},
          "name" : "{$path.title}",
          "item" : "{$path.url}"
        }{if !$smarty.foreach.breadcrumb.last},{/if}
      {/if}
    {/if}
  {/foreach}
]

Ne pas oublier d'enlever 1 à l'itération pour que la position parte bien à 1 et non à 2. Cela devrait éviter les erreurs dans la Search Console.
Mais vérifiez tout de même qu'il n'y a pas d'erreurs au niveau des microdatas.

Link to comment
Share on other sites

53 minutes ago, Divine said:

Essayez ceci :

"itemListElement": [
  {foreach from=$breadcrumb.links item=path name=breadcrumb}
    {if $page.page_name != 'blog'}
      {
        "@type" : "ListItem",
        "position" : {$smarty.foreach.breadcrumb.iteration},
        "name" : "{$path.title}",
        "item" : "{$path.url}"
      }{if !$smarty.foreach.breadcrumb.last},{/if}
    {else}
      {if !$smarty.foreach.breadcrumb.first}
        {
          "@type" : "ListItem",
          "position" : {$smarty.foreach.breadcrumb.iteration - 1},
          "name" : "{$path.title}",
          "item" : "{$path.url}"
        }{if !$smarty.foreach.breadcrumb.last},{/if}
      {/if}
    {/if}
  {/foreach}
]

Ne pas oublier d'enlever 1 à l'itération pour que la position parte bien à 1 et non à 2. Cela devrait éviter les erreurs dans la Search Console.
Mais vérifiez tout de même qu'il n'y a pas d'erreurs au niveau des microdatas.

Au niveau de la page blog, l'accueil est toujours présent, cela ne change rien

Link to comment
Share on other sites

J'avance, l'accueil est retiré, mais j'ai une erreur de ,

ai-je mal mis la condition ?

{
    "@context": "https://schema.org",
    "@type": "BreadcrumbList",
    "itemListElement": [
    {foreach from=$breadcrumb.links item=path name=breadcrumb}
     {if $path.url == $urls.pages.index}
	 {else}{
    "@type": "ListItem",
    "position": {$smarty.foreach.breadcrumb.iteration -1},
    "name": "{$path.title}",
    "item": "{$path.url}"
    }
	{/if}
	
	{if !$smarty.foreach.breadcrumb.last},{/if}
    {/foreach}]
    }

 

Link to comment
Share on other sites

c'est bon, plus d'erreur, j'ai ajouté la condition aussi sur

{if $path.url == $urls.pages.index}{else}{if !$smarty.foreach.breadcrumb.last},{/if}{/if}

je ne sais pas si c'est propre, mais c'est fonctionnel, et pas d'erreur.

Encore merci divine 😉

 

Link to comment
Share on other sites

  • Manu-41 changed the title to Résolu - breadcrumb ne pas afficher l'accueil ?

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...