[TYPO3-UG France] Transmission de variable vers php

Fred hamel at urbansecurity.org
Tue Jul 10 10:19:00 CEST 2007


Bien, le problème est résolu, il s'agissait d'une belle boulette dûe à 
un manque de repos et de révisions.
Voici le code correct, ce n'est pas très optimisé et pas très "typo3" 
mais il fonctionne, j'ai bien un petit drapeau qui s'affiche devant 
chaque item, faisant lien vers la langue en cours.
Merci à ceux qui m'ont aidé, j'espère que ce code et mes questions 
aideront d'autres newbies. S'il y a des suggestions pour améliorer ça je 
serais enchanté, s'il y a des questions je serais ravi d'aider.

<?php
/* exec_SELECTquery ($select_fields, $from_table, $where_clause, 
$groupBy='', $orderBy='', $limit='')  */
class user_functions {
    function my_flags($content,$conf)    {
            /* Récupération de l'id de l'item courant */
        $cur_uid = $this->cObj->stdWrap($conf['factor'], $conf['factor.']);
            /* Création du span qui va contenir les drapeaux, drapeau 
anglais (langue par défaut) en premier + url */
        $babel = "<span class='babel'><a 
href='index.php?id=".$cur_uid."&L=0'><img 
src='fileadmin/media/flags/flag_uk.gif' /></a>";
            /* Création d'un array contenant les noms des images des 
drapeaux */
        $flags = array('flag_uk.gif', 'flag_fr.gif', 'flag_de.gif', 
'flag_es.gif', 'flag_it.gif', 'flag_pt.gif', 'flag_pl.gif');
            /* Création de la requête en prenant garde de ne pas prendre 
en compte les champs supprimés ou cachés */
        $res = $GLOBALS['TYPO3_DB']->exec_SELECTquery ('*', 
'pages_language_overlay', 'pid='.$cur_uid.' AND deleted=0');
        
        while($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)){

            $babel .= "<a 
href='index.php?id=".$row['pid']."&L=".$row['sys_language_uid']."'>";
            $babel .= "<img 
src='fileadmin/media/flags/".$flags[$row['sys_language_uid']]."' />";
            $babel .= "</a>";

        }
        $babel .= "</span>";
        return $babel;
    }
}
?>

Fred a écrit :
> Je reviens sur mon menu multilingue.
> J'ai sur-estimé le problème du sélecteur, on m'a demandé de placer 
> devant chaque item du menu_2 (menu des sous-parties) le ou les 
> drapeaux correspondant à la ou aux traductions existantes. J'arrive à 
> wrapper mon menu correctement, j'arrive à insérer un script php qui 
> affiche un peu n'importe-quoi pour essayer...
>
> J'ai donc repris le tutoriel et j'ai développé une classe que j'ai 
> déclarée dans la page comme suit :
>
> page.includeLibs.my_flags = fileadmin/media/scripts/test_fun.inc
>
> 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 = 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 ??? C'est rageant, j'ai 
> l'impression d'être à deux doigts de réussir ce que je veux faire mais 
> il faut toujours qu'il y ait une bisbille qui vienne se mettre sur mon 
> chemin.


More information about the TYPO3-france mailing list