[TYPO3-UG Quebec] Menu multilingue et script php

Fred hamel at urbansecurity.org
Wed Jul 4 19:36:28 CEST 2007


Revoir les bases est toujours payant.
J'ai donc repris le tutoriel et j'ai utilisé une classe que j'ai 
déclarée dans la page comme suit :
page.includeLibs.some_random_id_string = 
fileadmin/media/scripts/test_fun.inc (au passage, que veut dire "some 
random id string" ??)
Puis je l'appelle ainsi dans mon menu :

  # Second level menu-object, textual
temp.menu_2.2 = TMENU
temp.menu_2.2 {
    # Normal state properties
  NO{
  #linkWrap = &nbsp | &nbsp
  #before.data = field:uid
  #allWrap = <tr><td class="menu_2_lvl_2_no"> | </td></tr>
  allWrap.cObject = COA
  allWrap.cObject{
       10 = TEXT
       10.value = <tr><td class="menu_2_lvl_2_no">
       #20 = PHP_SCRIPT
       #20.file=fileadmin/media/scripts/test_fun.inc
       20 = USER
       20.userFunc = user_functions->multiplyTest
       20.factor = 2
       30 = TEXT
       30.value =  | </td></tr>
  }
  }
    # Enable active state and set properties:
  ACT = 1
  ACT.allWrap = <tr><td class="menu_2_lvl_2_ac"> | </td></tr>
}

Et comme ça ça fonctionne, j'ai bien l'id de la page courante qui 
apparaît multiplié par 2.

Mais là où je ne comprend plus c'est pourquoi il ne veut pas prendre 
20.factor = field:uid afin que la variable transmise soit non-plus le 
nombre 2 mais bien l'uid de la page de l'item du menu ? Pourtant ça 
fonctionne très bien quand je fais before.data = field:uid , dans ce cas 
j'ai bien l'uid de l'item en question ???


Fred a écrit :
> Bon, dans un sens ça progresse, j'arrive à inclure un php dans le menu.
> J'ai essayer d'intégrer le sélecteur de kasper mais il répète le même, 
> normal puisqu'il tient compte de la variable courante.
> J'arrive également à afficher l'uid de l'item avec before.data = 
> field:uid mais je ne vois pas bien comment l'utiliser dans un script 
> php, d'autant que celui que j'ai créé (avec une simple fonction du genre
>
> function(){
> $content = youpi
> }
>
> m'affiche un message d'erreur me disant que cette fonction est déjà 
> déclarée.
> Je rame, mais si quelqu'un a une idée... en attendant j'espère que ça 
> aidera d'autres personnes.
>
> Fred a écrit :
>> Merci pour la solution, mais en fait le multilingue fonctionne.
>>
>> En fait je pense intégrer un menu qui soit à peu près celui de kasper 
>> mais je ne sais pas wrapper le script php dans le menu.
>> Je pense qu'un script php peut faire l'affaire, il récupère l'id de 
>> la page pointée en lien  et le compare avec les entrées disponibles 
>> en traductions, c'est ce que fait le script de kasper, me semble-t-il.
>>
>> //récupération des données de pages_language_overlay pour l'id en cours
>> $result = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 
>> 'pages_language_overlay', 'pid='.intval($GLOBALS['TSFE']->id);
>> $tab    = array();
>> while($tab = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
>>    $rows[] = $row;
>> }
>> //s'il ne trouve rien il n'y a pas de traduction
>> if (count($rows) == 0){
>>    $rub_menu    = "<div><a 
>> href=\"index.php?id=\"".intval($GLOBALS['TSFE']->id."></div>";
>> }else{
>> //inclusion des drapeaux pour chaque langue
>>   }
>>
>> Grosso-modo (c'est en cours de travail).
>>
>>
>>
>> Sébastien Rivest a écrit :
>>> Bonjour Fred,
>>>  
>>>
>>> Je ne sais pas si cela peut te venir en aide... Mais pour les sites 
>>> multilangues, j'utilise une config dans le champ setup de mon 
>>> template principale.
>>>
>>>  
>>>
>>> # configuration de la langue pour le site par défaut
>>>
>>> config.sys_language_uid =0
>>>
>>> config.language=fr
>>>
>>> config.locale_all=fr_FR
>>>
>>> page.config.language = fr
>>>
>>>  
>>>
>>> #configuration de la variable L
>>>
>>>  
>>>
>>> config.linkVars=L
>>>
>>>  
>>>
>>> #français
>>>
>>> [globalVar = GP:L = 0]
>>>
>>> config.sys_language_uid = 0
>>>
>>> config.language = fr
>>>
>>> config.locale_all = fr_FR
>>>
>>> page.config.language = fr
>>>
>>>  
>>>
>>>  
>>>
>>> #doit etre retourner pour que les langues marchent
>>>
>>> [GLOBAL]
>>>
>>>  
>>>
>>> #anglais
>>>
>>> [globalVar = GP:L = 1]
>>>
>>> config.sys_language_uid = 1
>>>
>>> config.language = en
>>>
>>> config.locale_all = english
>>>
>>> page.config.language = en
>>>
>>>  
>>>
>>> #doit etre retourner pour que les langues marchent
>>>
>>> [GLOBAL]
>>>
>>>  
>>>
>>>  
>>>
>>> Solution #1
>>>
>>> Ensuite, le code typoscript qui génère mon menu est standard et 
>>> s'adapte en fonction des langues.
>>>
>>>  
>>>
>>> Suggestion pour ton menu (Je n'ai pas du tout testé ça !) :
>>>
>>>  
>>>
>>> Instancie une variable quand tu configures tes langues dans le 
>>> template principal...
>>>
>>> (Champ constant cette fois-ci)
>>>
>>>  
>>>
>>> [globalVar = GP:L = 0]
>>>
>>> drapeauMenu= class="menu_2_lvl_1"
>>>
>>>  
>>>
>>> Ensuite dans ton code temp.menu_2 :
>>>
>>>  
>>>
>>> NO.allWrap = <tr><td {$drapeauMenu}> | </td></tr>
>>>
>>>  
>>>
>>>  
>>>
>>> Solution #2
>>>
>>>  
>>>
>>> Tu pourrais aussi envisager de charger une autre feuille de style 
>>> (personnalisée selon la langue). Donc si l'usager navigue sur ton 
>>> site anglais, il voit la feuille de style en anglais. Pour cela 
>>> (dans le champ setup) utilise :
>>>
>>>  
>>>
>>> [globalVar = GP:L = 1]
>>>
>>> page.stylesheet = fileadmin/template/monSite/css/styleAnglais.css 
>>> par exemple.
>>>
>>>  
>>>
>>>  
>>>
>>> Réflexion
>>>
>>>  
>>>
>>> Je viens de penser que tu veux peut-être que ton menu détecte dans 
>>> quelle langue est l'item généré du menu... Dans ce cas, je ne 
>>> saurais t'aider... si tu as utilisé la solution avec une seule 
>>> hiérarchie mais des versions différentes de tes pages selon les 
>>> langues, je ne saurais pas comment «capter» l'information car le 
>>> lien généré par le code du menu mène vers une page qui possède 
>>> elle-même une version pour chaque langue.
>>>
>>>  
>>>
>>> J'espère que ça peut te donner des pistes de solution.
>>>
>>>  
>>>
>>> Bonne chance !
>>>
>>>  
>>>
>>>  
>>>
>>> -----Message d'origine-----
>>> De : typo3-ug-quebec-bounces at lists.netfielders.de 
>>> [mailto:typo3-ug-quebec-bounces at lists.netfielders.de] De la part de 
>>> Fred
>>> Envoyé : 4 juillet 2007 06:42
>>> À : typo3-ug-quebec at lists.netfielders.de
>>> Objet : [TYPO3-UG Quebec] Menu multilingue et script php
>>>
>>>  
>>>
>>> Bonjour,
>>>
>>>  
>>>
>>> Voici le descriptif de mon deuxième problème.
>>>
>>> J'ai un site en 5 langues, j'utilise le sélecteur de kasper, tout
>>> fonctionne.
>>>
>>> Ce que je souhaite faire, ça serait inclure ce sélecteur (ou un autre)
>>> directement dans l'item concerné, afin que les drapeaux des éventuelles
>>> traductions apparaissent à côté de chaque titre.
>>>
>>> J'épluche la documentation mais le forum français n'est pas accessible
>>> ces temps-ci.
>>>
>>> Je pense que ça doit être possible via un script php à inclure dans le
>>> allwrap mais je ne vois pas comment.
>>>
>>>  
>>>
>>> temp.menu_2 = HMENU
>>>
>>> temp.menu_2.entryLevel = 2
>>>
>>>   # First level menu-object, textual
>>>
>>> temp.menu_2.1 = TMENU
>>>
>>> temp.menu_2.1 {
>>>
>>>     # Normal state properties
>>>
>>>   NO.allWrap = <tr><td class="menu_2_lvl_1"> | </td></tr>
>>>
>>> }
>>>
>>>   # Second level menu-object, textual
>>>
>>> temp.menu_2.2 = TMENU
>>>
>>> temp.menu_2.2 {
>>>
>>>     # Normal state properties
>>>
>>>   NO.linkWrap = <td class="menu_2_lvl_2_no"> | </td>
>>>
>>>   NO.allWrap = <tr class="toto">|</tr>
>>>
>>>     # Enable active state and set properties:
>>>
>>>   ACT = 1
>>>
>>>   ACT.allWrap = <tr><td class="menu_2_lvl_2_ac"> | </td></tr>
>>>
>>> } _______________________________________________
>>>
>>> TYPO3-UG-quebec mailing list
>>>
>>> TYPO3-UG-quebec at lists.netfielders.de
>>>
>>> http://lists.netfielders.de/cgi-bin/mailman/listinfo/typo3-ug-quebec
>>>
>>>   


More information about the TYPO3-UG-quebec mailing list