Bonjour à tous,

C'est la première fois que je poste sur ce forum.
Je voudrais vous parler d'une contribution qui permettait d'obtenir le logo d'un article traduit en allant chercher le logo de l'article d'origine (qui marche très bien!)

http://www.spip-contrib.net/Balise-LOGO-ARTICLE-ORITRAD

J'ai voulu étendre le système aux logos des sites web, mais sans succès.

en effet, www.xxx.com est le même site dans toutes les langues! donc le même logo!

mais je n'arrive pas à le faire fonctionner, quelqu'un voit il pourquoi?
sachant que la requête de ma fonction va chercher le site qui pointe à la même adresse.
2 langues, donc 1 seul résultat de site d'origine...

Merci d'avance!


-------------- Les fonctions ajoutées dans mes_fonctions.php de mon
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
dossier squelettes ------------------------
function syndic_ori_trad($id_syndic) {
     /* par precaution, on verifie que le parametre est une valeur numerique entiere, */
    if(!($id_syndic = intval($id_syndic))) return $id_syndic;
    //TODO: modifier la fonction suivante pour renvoyer 
    /* on redige puis on execute la requete pour la base de donnees */
    //$q = 'SELECT 8  s id_syndic FROM spip_syndic as trad, spip_syndic as ori WHERE trad.id_syndic='.$id_syndic
    $q = 'SELECT ori.id_syndic FROM spip_syndic as trad, spip_syndic as ori WHERE trad.id_syndic='.$id_syndic
    . ' AND TRIM(TRAILING '/' from trim(trad.url_site)) = TRIM(TRAILING '/' from trim(ori.url_site))'
    . ' AND ori.id_syndic !='.$id_syndic;
    if($r = spip_query($q))
        /* si cette requete renvoie un resultat pour le champ demande, on le retourne */
        if($row = mysql_fetch_array($r))
		if($row['id_syndic']==0)
			return $id_syndic; // s'il n'y a pas de traduction l'url de reference est lui-meme
		else
			return $row['id_syndic'];
    /* sinon, on renvoie la chaine de depart */
    return $id_syndic;
}
 
function balise_LOGO_SITE_ORIGINE ($p) {
	preg_match(",^LOGO_SITE_ORIGINE_([A-Z]+)(_.*)?$,i", $p->nom_champ, $regs);
	$type_objet = 'SITE';
	$suite_logo = $regs[1];	
	$id_objet = "id_syndic";
	$_id_objet = champ_sql($id_objet, $p);
 
	// analyser les faux filtres
	$flag_fichier = $flag_stop = $flag_lien_auto = $code_lien = $filtres = $align = $lien = $params = '';
 
	if (is_array($p->fonctions)) {
		foreach($p->fonctions as $couple) {
			if (!$flag_stop) {
				$nom = trim($couple[0]);
 
				// double || signifie "on passe aux vrais filtres"
				if ($nom == '') {
					if ($couple[1]) {
						$params = $couple[1]; // recuperer #LOGO_DOCUMENT{20,30}
						array_shift($p->param);
					}
					else
						$flag_stop = true;
				} else {
					// faux filtres
					array_shift($p->param);
					switch($nom) {
						case 'left':
						case 'right':
						case 'center':
						case 'top':
						case 'bottom':
							$align = $nom;
							break;
 
						case 'lien':
							$flag_lien_auto = 'oui';
							$flag_stop = true; # apres |lien : vrais filtres
							break;
 
						case 'fichier':
							$flag_fichier = 1;
							$flag_stop = true; # apres |fichier : vrais filtres
							break;
 
						default:
							$lien = $nom;
							$flag_stop = true; # apres |#URL... : vrais filtres
							break;
					}
				}
			}
		}
	}
 
	//
	// Preparer le code du lien
	//
	// 1. filtre |lien
 
	if ($flag_lien_auto AND !$lien)
  {
		$code_lien = '($lien = generer_url_site('.syndic_ori_trad($_id_objet).')) ? $lien : ""';
		//$code_lien = '($lien = generer_url_entite('.syndic_ori_trad($_id_objet). ',"' . $type_objet .'")) ? $lien : ""';
  }
	// 2. lien indique en clair (avec des balises : imprimer#ID_ARTICLE.html)
	else if ($lien) {
		$code_lien = "'".texte_script(trim($lien))."'";
		while (preg_match(",^([^#]*)#([A-Za-z_]+)(.*)$,", $code_lien, $match)) {
			$c = new Champ();
			$c->nom_champ = $match[2];
			$c->id_boucle = $p->id_boucle;
			$c->boucles = &$p->boucles;
			$c->descr = $p->descr;
			$c = calculer_champ($c);
			$code_lien = str_replace('#'.$match[2], "'.".$c.".'", $code_lien);
		}
		// supprimer les '' disgracieux
		$code_lien = preg_replace("@^''\.|\.''$@", "", $code_lien);
	}
 
	if ($flag_fichier)
	{
		$code_lien = "'',''" ; 
  }
	else {
		if (!$code_lien)
			$code_lien = "''";
		$code_lien .= ", '". $align . "'";
	}
	$connect = $p->id_boucle ?$p->boucles[$p->id_boucle]->sql_serveur :'';
	if ($type_objet == 'DOCUMENT') {
		$p->code = "calcule_logo_document(syndic_ori_trad($_id_objet), '" .
			$p->descr['documents'] .
			'\', $doublons, '. intval($flag_fichier).", $code_lien, '".
			// #LOGO_DOCUMENT{x,y} donne la taille maxi
			texte_script($params)
			."'," . sql_quote($connect) .")";
	}
	elseif ($connect) {
		$p->code = "''";
		spip_log("Les logos distants ne sont pas prevus");
	} else {
    echo('<br/>ici5 '.$id_objet);
    echo('<br/>ici5 '.$_id_objet);
		$p->code = "affiche_logos(calcule_logo('$id_objet', '" .
			(($suite_logo == '_SURVOL') ? 'off' : 
			(($suite_logo == '_NORMAL') ? 'on' : 'ON')) .
			"', syndic_ori_trad($_id_objet)," .
			(($suite_logo == '_RUBRIQUE') ? 
			champ_sql("id_rubrique", $p) :
			(($type_objet == 'RUBRIQUE') ? "quete_parent(syndic_ori_trad($_id_objet))" : "''")) .
			",  '$flag_fichier'), $code_lien)";
	}
 
	$p->interdire_scripts = false;
	return $p;
}