Aller au contenu
Support de Zwii
  • 0
Sourigo

[Résolu] Affichage du nom de la page "mère" dans le Breadcrumb

Question

Bonjour à tous, 

Après avoir également testé sur la version 10, il semble que la page "mère" (si c'est pas comme ça que ça s'appelle, je vais faire sourire...) affiche l'url et non le nom de la page. 

Je pense que la modification doit se faire dans core.php à cet endroit :

// Breadcrumb

		$title = $this->getData(['page', $this->getUrl(0), 'title']);
		if (!empty($this->getData(['page', $this->getUrl(0), 'parentPageId'])) &&
				$this->getData(['page', $this->getUrl(0), 'breadCrumb'])) {
				$title = '<a href="' . helper::baseUrl() . 
						$this->getData(['page', $this->getUrl(0), 'parentPageId']) .
						'">' .
						ucfirst($this->getData(['page', $this->getUrl(0), 'parentPageId'])) .
						'</a> &#8250; '.
						$this->getData(['page', $this->getUrl(0), 'title']);			

 en raison de mes compétences j'ai donc adopté la technique "essais-erreurs"... pas trés pro et le résultat c'est carnaval 😀 , voire une erreur 500 ...

 

Quelqu'un aurait-il une idée ?

Partager ce message


Lien à poster
Partager sur d’autres sites

11 réponses à cette question

Messages recommandés

  • 0

Bonjour Sourigo,

Je pense que le fil d'ariane est une option uniquement pour les pages enfant. La page mère ou d'accueil est généralement une page parent, elle ne supporte donc pas le breadcrumb (plus exactement son paramètre breadcrumb est figé à false).

 

Sylvain

Modifié par sylvainlelievre

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0
il y a 29 minutes, sylvainlelievre a dit :

Je pense que le fil d'ariane est une option uniquement pour les pages enfant. La page mère ou d'accueil est généralement une page parent, elle ne supporte donc pas le breadcrumb (plus exactement son paramètre breadcrumb est figé à false).

 

Bonjour @sylvainlelievre

Merci pour ta réponse. Effectivement ce n'est pas la page d'accueil. Je me suis sûrement mal exprimé. Voici ce que cela donne, je ne sais pas de quoi cela peut provenir... 

 

2020-01-07-151003_1280x1024_scrot.png

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonjour,

Je confirme, l'option chemin de fer ou miette de pain ou breadcrumb affiche le nom de la page parente. D'après ce que je vois dans ta copei d'écran, il n'y a pas d'anomalie.

il y a une heure, sylvainlelievre a dit :

La page mère ou d'accueil est généralement une page parent, elle ne supporte donc pas le breadcrumb (plus exactement son paramètre breadcrumb est figé à false).

Je vérifierai ce comportement, une page d'accueil peut aussi être une page parente.

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Vérification faite : cette option est unique appliquée aux pages enfants, une page parente n'en dispose pas qu'elle soit page d'accueil ou non.

 

Je déplace le sujet dans les questions.

  • Merci 1

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonjour @Fred

Je me suis mal exprimé. Ma question porte sur le résultat affiché pour la page mère. 

Est-il possible d'avoir un affichage correspondant au nom de la page et pas son url ? 

Dans cet exemple, obtenir "Éducation canine" au lieu de "Education-canine"...

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Bonsoir @Sourigo

En fait c’est l’ID de la page qui est affichée. 
Tres bonne remarque, je regarde ça. 
De mémoire, il suffit de récupérer la clé title dans un getData imbriqué.  

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0
Il y a 9 heures, Fred a dit :

il suffit de récupérer la clé title dans un getData imbriqué.  

Bonjour @Fred

Quelle poésie! On dirait un discours présidentiel 😜

C'était un peu ma piste en bidouillant le core.php dans la section Breadcrumb. 

Mais je pense qu'il y a une requête préalable à faire (et ça ça doit être le getData imbriqué)...

Là ça dépasse mes compétences et celles de mon Filezilla qui avons bien planté le serveur 😁.

Modifié par Sourigo

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0
Il y a 8 heures, Sourigo a dit :

Bonjour @Fred

Quelle poésie! On dirait un discours présidentiel 😜

C'était un peu ma piste en bidouillant le core.php dans la section Breadcrumb. 

Mais je pense qu'il y a une requête préalable à faire (et ça ça doit être le getData imbriqué)...

Là ça dépasse mes compétences et celles de mon Filezilla qui avons bien planté le serveur 😁.

Si cela avait été  présidentiel, j’aurais précisé « en même temps » 🤣

Je te donne le bout de script ce soir 😉

  • Haha 1

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Tout d'abord, il s'agit bien d'un bug, je re-déplace. Tu pourras éditer ton sujet en ajoutant [RESOLU]

La correction sera appliquée à toutes les versions.

 

Je te dois quand même une explication technique :

 

$this->getData(['page', $this->getUrl(0), 'parentPageId'])

getData est un fonction de la classe courante (core) qui permet de retourner la valeur d'une arborescence, celle des fichier de données json. elle est appelée avec trois paramètres :

  • 'page' qui représente le fichier de données des v10 et + ou un élément de cor.jsone d'une v9
  • getUrl est aussi une fonction qui renvoie une partie de l'url, ici le premier élément après le domaine, donc l'id de la page selon le système de routage de Zwii.
  • 'parentPageId' est la dernière clé, elle permet d'obtenir l'id de la page parente si elle existe.

Cet id va permettre de récupérer le titre de de la page, mais pour cela il faut l'utiliser comme un paramètre d'un nouvel appel à getData (donc imbriqué).

La ligne de script devient donc (sans ucfirst) :

 

$this->getData(['page', $this->getData(['page', $this->getUrl(0), 'parentPageId']) , 'title']) .

Avec l'explication précédente, on comprend bien que cette fois on interroge la structure de données afin de récupérer le titre de la page parente.

 

La totalité du script corrigé :

		// Breadcrumb
		$title = $this->getData(['page', $this->getUrl(0), 'title']);
		if (!empty($this->getData(['page', $this->getUrl(0), 'parentPageId'])) &&
				$this->getData(['page', $this->getUrl(0), 'breadCrumb'])) {
				$title = '<a href="' . helper::baseUrl() . 
						$this->getData(['page', $this->getUrl(0), 'parentPageId']) .
						'">' .
						ucfirst($this->getData(['page',$this->getData(['page', $this->getUrl(0), 'parentPageId']), 'title'])) .
						'</a> › '.
						$this->getData(['page', $this->getUrl(0), 'title']);			
		} 

 

  • Merci 1

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0

Un grand merci @Fred, déjà pour le code et aussi pour les explications. 

Un $this->getData dans un $this->getData, c'est chouette 🥳, je me disais que ça allait faire une espèce de boucle ... mais non.

Tu as connaissance d'un bon site accessible par un novice pour approfondir tout ça ? Y'a des besoins chez moi 😳

Encore merci

 

Partager ce message


Lien à poster
Partager sur d’autres sites
  • 0
Il y a 6 heures, Sourigo a dit :

Un grand merci @Fred

 

, déjà pour le code et aussi pour les explications. 

 

Un $this->getData dans un $this->getData, c'est chouette 🥳, je me disais que ça allait faire une espèce de boucle ... mais non.

Tu as connaissance d'un bon site accessible par un novice pour approfondir tout ça ? Y'a des besoins chez moi 😳

Encore merci

 

Avec plaisir.

getData est une fonction interne à Zwii, il n'existe pas vraiment de doc. Disons que l'exploration du code doit pouvoir t'aider à en comprendre le fonctionnement.

En revanche, tu as peut-être besoin d'en savoir plus sur la POO, je te conseille cette série de tuto en vidéo :

https://www.grafikart.fr/tutoriels/php-presentation-1112

  • Merci 1

Partager ce message


Lien à poster
Partager sur d’autres sites
Invité
Ce sujet ne peut plus recevoir de nouvelles réponses.

×
×
  • Créer...