Forums de la communauté francophone du CMS TYPO3: [Tt_News] Menu De Séléction De Language En Mode Single [Resolu] - Forums de la communauté francophone du CMS TYPO3

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

[Tt_News] Menu De Séléction De Language En Mode Single [Resolu] Comment faire passer les éléments en get

#1 L'utilisateur est hors-ligne   bibos 

  • Nouveau
  • Pip
  • Groupe : Membres
  • Messages : 31
  • Inscrit(e) : 10-février 10

Posté 09 février 2012 à 16:42

Bonjour à tous,

J'ai mis que c'était un problème tt_news dans le sujet, mais en fait c'est un problème qui pourrait se poser pour n'importe quelle extension qui passe des éléments en GET dans l'URL.

J'aimerais donc savoir quelle est la solution (en typoscript si possible) pour créer un menu de sélection de langage qui fasse passer correctement les valeurs GET de l'URL (de tt_news en l'occurence).

Parce que à l'heure actuelle mon menu marche correctement, à part pour les pages de news SINGLE, ou du coup il m'affiche un beau " no news_id given".

Merci pour toute aide.

Ce message a été modifié par bibos - 16 février 2012 à 15:37.

0

#2 L'utilisateur est hors-ligne   Popy 

  • Star modeste
  • PipPipPipPipPipPipPip
  • Groupe : Modérateur
  • Messages : 3229
  • Inscrit(e) : 11-avril 06

Posté 09 février 2012 à 17:38

belink_langmenu :)

Je sais plus si ça garde tous les paramêtres de langues, mais vu que tu peux configurer en ts le lien généré, rien ne t'empèche d'utiliser la propriété de typolink qui permet de recuperer tout le GET
Expert Typo3
0

#3 L'utilisateur est hors-ligne   bibos 

  • Nouveau
  • Pip
  • Groupe : Membres
  • Messages : 31
  • Inscrit(e) : 10-février 10

Posté 10 février 2012 à 08:39

Bonjour,

Elle n'a pas de manuel cette extension ?

Mais par contre c'est quoi cette propriété de typolink qui permet de récupérer tout le get ? Parce qu'a priori c'est justement ça qui m'intéresse !

On doit pouvoir créer un menu sans utiliser une extension non ?
0

#4 L'utilisateur est hors-ligne   OlivierSC 

  • Super Membre
  • PipPipPipPipPipPip
  • Groupe : Membres
  • Messages : 662
  • Inscrit(e) : 26-juin 09

Posté 10 février 2012 à 08:58

Bonjour,

Dans la documentation sur le typolink dans la TSREF on peut trouver la configuration suivante :

Citation

addQueryString : boolean => Add the QUERY_STRING to the start of the link.

Il suffirait donc de mettre en place ce paramètre dans la génération typolink pour activer la récupération automatique des parametres GET (et/ou POST en fonction d'autres configurations).

N'hésite pas à nous dire si cela correspond à ce que tu essaies de faire.

OlivierSC
0

#5 L'utilisateur est hors-ligne   Popy 

  • Star modeste
  • PipPipPipPipPipPipPip
  • Groupe : Modérateur
  • Messages : 3229
  • Inscrit(e) : 11-avril 06

Posté 10 février 2012 à 10:45

En théorie tu peux construire le menu avec un HMENU special=lang (ou un truc dans le genre), mais l'extension pallie quelques problèmes (par exemple la gestion d'une langue par défaut, ou le switch de langue lors de la génération des liens)

Et non, pas de doc, c'est mon talon d'achille, mais le typoscript de l'extension est assez simple. Grosso modo, ça s'utilise un peu comme ça :
subparts.LANG_MENU < plugin.tx_belinklangmenu
subparts.LANG_MENU {
   // defaultLanguage permet de définir la langue par défaut (ça simule un sys_language en gros)
   defaultLanguage {
      uid = 0
      title = Français
      flag = fr.gif
   }

   // la propriété itemObj est le cObject qui est utilisé pour généré chaque lien du menu
   //   dans le ts par défaut, c'est un COA, la clef 10 est un LOAD REGISTER, la génération
   /    se fait dans la clef 20


   itemObj.20 >
   itemObj.20 = TEXT
   itemObj.20 {
      data = register:title

      typolink {
         parameter.data = tsfe:id
         additionalParams = &L={field:uid}
         additionalParams.insertData = 1
         additionalParams.fieldRequired = uid

         useCacheHash = 1

         ATagParams = class="active"
         ATagParams.if.isTrue.field = is_current
      }

      wrap = |&nbsp;
   }

}

Expert Typo3
0

#6 L'utilisateur est hors-ligne   bibos 

  • Nouveau
  • Pip
  • Groupe : Membres
  • Messages : 31
  • Inscrit(e) : 10-février 10

Posté 10 février 2012 à 17:18

Bonsoir,

Alors voilà comment j'essaye de construire mon lien :

temp.languageselect = TEXT
temp.languageselect {
	lang.fr = English
	lang.en = Français
	ATagTitle.field = title
	typolink {
		parameter.field = uid
  		additionalParams=&L=1
  	additionalParams.lang.en=&L=0
		addQueryString = GET
	}
 }


Mais je n'arrive toujours pas au résultat attendu : lorsque je suis sur ma page single, le lien créé est : http://www.monsite.com/en/news/single/
(au lieu de http://www.monsite.c...tre-de-ma-news/ donc)

Pour belinklangmenu je ne l'ai pas essayé, mais si il a des soucis avec le switch de langue... ça risque de ne pas me convenir.
0

#7 L'utilisateur est hors-ligne   OlivierSC 

  • Super Membre
  • PipPipPipPipPipPip
  • Groupe : Membres
  • Messages : 662
  • Inscrit(e) : 26-juin 09

Posté 10 février 2012 à 18:42

Voir le messagebibos, le 10 février 2012 à 17:18, dit :

addQueryString = GET


addQueryString est un boolean, donc juste 0 ou 1.
c'est
addQueryString.method=....

qui permet de spécifier la méthode GET ou POST ou GET/POST.
0

#8 L'utilisateur est hors-ligne   bibos 

  • Nouveau
  • Pip
  • Groupe : Membres
  • Messages : 31
  • Inscrit(e) : 10-février 10

Posté 13 février 2012 à 10:28

Bingo !!

Voilà donc ma config :

config.uniqueLinkVars = 1
temp.languageselect = TEXT
temp.languageselect {
	lang.fr = English
	lang.en = Français
	ATagTitle.field = title
	typolink {
		parameter.data = page:uid
  		additionalParams=&L=1
	additionalParams.lang.en=&L=0
		addQueryString = 1
		addQueryString.method = GET
	}
 }


Par contre je pense que je me suis emmêlé les pinceaux à force de tenter différentes méthodes, et que j'ai dû laisser des éléments qu'il ne fallait pas, parce que mon lien apparait en fait deux fois dans le code ! Une fois vide et une fois comme il faut :

<a onfocus="blurLink(this);" href="fr/pratique/actualites/news/"></a>
<a href="fr/pratique/actualites/news/ma-news-traduite-en-francais/">Français</a>


Dans le typoscript, une fois mon lien créé, je l'insère dans le menu comme ça :

lib.menu_pratique = COA
lib.menu_pratique {
	wrap = <ul> | </ul>
	10 = HMENU
	10 {
		special = language
		special.value = 1
		1 = TMENU
		1.NO {
			stdWrap.cObject < temp.languageselect
			allWrap = <li class="first"> | </li>
		}
	}
 (la suite de mon menu ici avec des liens de type répertoire)
}
[globalVar = GP:L = 0]
	lib.menu_pratique.10.special.value = 1
[global]
[globalVar = GP:L = 1]
	lib.menu_pratique.10.special.value = 0
[global]


Mais je suppose que mon special = language ne me sert plus à rien maintenant non ? Mais si je le supprime ça bugue,, ça m'affiche une série de liens à la place : on dirait que ça va chercher toutes mes pages de premier niveau... Je suis aussi un gros newbie en création de menus, donc je sèche à nouveau...
Il faut que je remplace special = language par autre chose ?

Merci encore pour votre aide !

Ce message a été modifié par bibos - 13 février 2012 à 10:30.

0

#9 L'utilisateur est hors-ligne   bibos 

  • Nouveau
  • Pip
  • Groupe : Membres
  • Messages : 31
  • Inscrit(e) : 10-février 10

Posté 14 février 2012 à 17:20

Personne ne voit ou je me suis planté ?
0

#10 L'utilisateur est hors-ligne   Popy 

  • Star modeste
  • PipPipPipPipPipPipPip
  • Groupe : Modérateur
  • Messages : 3229
  • Inscrit(e) : 11-avril 06

Posté 14 février 2012 à 18:06

A peu près partout en fait.
Expert Typo3
0

#11 L'utilisateur est hors-ligne   OlivierSC 

  • Super Membre
  • PipPipPipPipPipPip
  • Groupe : Membres
  • Messages : 662
  • Inscrit(e) : 26-juin 09

Posté 14 février 2012 à 18:33

:D :wub2: Popy

En fait, ce qu'il faudrait savoir, c'est qu'est ce que tu veux avoir au final?

- Est ce la présentation des 2 liens (un pour chaque langue) meme si c'est la langue active?

- Est ce que ca serait simplement l'affichage du lien pour la version dans l'autre langue (pas de lien vers la même langue)

- Est ce que les textes des liens ne seraient que les textes "Français" et "English" ou devrait il y avoir l'affichage d'un drapeau?

Parce que la actuellement ça mélange un peu toute les solutions et du coup rien ne marche au final.
0

#12 L'utilisateur est hors-ligne   bibos 

  • Nouveau
  • Pip
  • Groupe : Membres
  • Messages : 31
  • Inscrit(e) : 10-février 10

Posté 15 février 2012 à 09:09

Solution 2 : affichage du lien pour la version dans l'autre langue seulement (et sans drapeau)

J'ai un peu simplifié mon typoscript, mais sans régler le problème :

temp.languageselect = TEXT
temp.languageselect {
	lang.fr = English
	lang.en = Français
	typolink {
		#ATagTitle.field = title
		parameter.data = page:uid
  		additionalParams=&L=1
	additionalParams.lang.en=&L=0
		addQueryString = 1
		addQueryString.method = GET
	}
 }

lib.menu_pratique = COA
lib.menu_pratique {
	wrap = <ul> | </ul>
	10 = HMENU
	10 {
		special = language
		special.value.fr = 1
		special.value.en = 0
		1 = TMENU
		1.NO {
			stdWrap.cObject < temp.languageselect
			allWrap = <li class="first"> | </li>
		}
	}
	(la suite de mon menu ici...)
}


(a noter au passage que je n'arrive pas non plus à ajouter le tag "title" dans le lien)

Ce message a été modifié par bibos - 15 février 2012 à 09:13.

0

#13 L'utilisateur est hors-ligne   OlivierSC 

  • Super Membre
  • PipPipPipPipPipPip
  • Groupe : Membres
  • Messages : 662
  • Inscrit(e) : 26-juin 09

Posté 15 février 2012 à 11:25

Bonjour,

S'il s'agit d'avoir uniquement un seul lien présentant la 2nd langue disponible, alors c'est plus simple que cela. Il n'y a pas besoin de menu, ou de truc complexe... un simple TEXT avec un lien dessus suffit:
lib.menu_pratique= TEXT
lib.menu_pratique= {
   value = English
   lang.en = Français
   typolink {
      parameter.data = page:uid
      additionalParams=&L=1
      additionalParams.lang.en=&L=0
      addQueryString = 1
      addQueryString.method = GET
   }
}

Pour le champ "title" du lien, la propriété "ATagTitle" n'existe pas dans la doc typolink dans la TSREF.
Il existe par contre la propriété "title" qui permet de gérer l'attribut "title" du lien :)
Par contre il ne faut pas utiliser la propriété "field:title" car ca va récupérer le titre de la page actuelle, donc pas le titre traduit dans la langue qui sera affichée après le clic.
Comme c'est une propriété compatible sdtWrap, il est possible d'aller chercher l'information avec un objet RECORD ou CONTENT.
N'hésite pas à nous faire un retour la dessus.

OlivierSC
0

#14 L'utilisateur est hors-ligne   bibos 

  • Nouveau
  • Pip
  • Groupe : Membres
  • Messages : 31
  • Inscrit(e) : 10-février 10

Posté 16 février 2012 à 15:35

Ok, nickel, j'avais quand même besoin de l'insérer dans mon menu, mais j'ai fait ça comme ça :

lib.menu_pratique = COA
lib.menu_pratique {
	wrap = <ul> | </ul>
	10 = TEXT
	10 {
   		value = English
   		lang.en = Français
   		typolink {
  				parameter.data = page:uid
  				additionalParams=&L=1
  				additionalParams.lang.en=&L=0
  				addQueryString = 1
  				addQueryString.method = GET
  				title = See this page in English
   		}
   		wrap = <li class="first"> | </li>

	}
	20 = HMENU
	20 {
la suite de mon menu ici...
	}
}


Pour le title, finalement je n'ai pas besoin du titre de la page, donc ça me va très bien comme ça, avec un :

[globalVar = GP:L = 1]
	lib.menu_pratique.10.typolink.title = Voir cette page en français
[global]


Pour la version anglaise.
(pas possible de mettre un title.en = Voir cette page en français on dirait ?)

Merci encore !
0

#15 L'utilisateur est hors-ligne   OlivierSC 

  • Super Membre
  • PipPipPipPipPipPip
  • Groupe : Membres
  • Messages : 662
  • Inscrit(e) : 26-juin 09

Posté 16 février 2012 à 15:45

Bonjour,

Voir le messagebibos, le 16 février 2012 à 15:35, dit :

Pour le title, finalement je n'ai pas besoin du titre de la page, donc ça me va très bien comme ça, avec un :
[globalVar = GP:L = 1]
	lib.menu_pratique.10.typolink.title = Voir cette page en français
[global]

Pour la version anglaise.
(pas possible de mettre un title.en = Voir cette page en français on dirait ?)

l'utilisation du ".en=..." ne peut pas se faire directement, c'est un "sous paramètre" de la propriété "lang" du stdWrap.

La propriété "title" est de type "string/stdWrap", il faut donc inclure ".lang" au milieu, ce qui donne :
lib.menu_pratique.10.typolink.title.value= See this page in English
lib.menu_pratique.10.typolink.title.lang.en=Voir cette page en français

La condition en typoscript n'est donc plus nécessaire.
OlivierSC

Ce message a été modifié par OlivierSC - 16 février 2012 à 15:45.

0

#16 L'utilisateur est hors-ligne   bibos 

  • Nouveau
  • Pip
  • Groupe : Membres
  • Messages : 31
  • Inscrit(e) : 10-février 10

Posté 16 février 2012 à 17:22

Ok, parfait.

Encore merci !
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)