diff --git a/ecrire/exec/accueil.php b/ecrire/exec/accueil.php
index cb02719e7bb6a62936c98288af6da146aa10d6a7..ef5209b24afc91d55f2aae4cca8686f53dc008ca 100644
--- a/ecrire/exec/accueil.php
+++ b/ecrire/exec/accueil.php
@@ -312,9 +312,9 @@ if ($spip_display != 4) {
 	echo debut_cadre_relief("racine-site-24.gif", false, "", $nom_site_spip);
 
 	if ($spip_display != 1) {
-		include_spip('inc/logos');
-		$res = decrire_logo("id_syndic", 'on', 0, 170, 170);
-		if ($res)
+		$logo_f = charger_fonction('chercher_logo', 'inc');
+		if ($res = $logo_f(0, 'id_syndic', 'on'))
+		  if ($res = decrire_logo("id_syndic", 'on', 0, 170, 170; $res))
 			echo  "<div style='text-align:center; margin-bottom: 5px;'>$res</div>";
 	}
 	echo "<div class='verdana1'>";
diff --git a/ecrire/exec/ajax_page.php b/ecrire/exec/ajax_page.php
index bcb92073afd9b7187b6c53f7964f8f98148a23da..b3a184a8754333a55e29270fa77218ada87083a3 100644
--- a/ecrire/exec/ajax_page.php
+++ b/ecrire/exec/ajax_page.php
@@ -226,14 +226,11 @@ function ajax_page_aff_info($id, $exclus, $col, $id_ajax_fonc, $type, $rac)
 		echo "<input type='text' id='".$rac."_sel2' value=\"".entites_html($titre)."\" />";
 		echo "</div>";
 
-		include_spip('inc/logos');
-
-
 		echo "<div class='arial2' style='padding: 5px; background-color: white; border: 1px solid $couleur_foncee; border-top: 0px;'>";
 		if ($type == "rubrique" AND $spip_display != 1 AND $spip_display!=4 AND $GLOBALS['meta']['image_process'] != "non") {
-			include_spip('inc/logos');
-			$res = decrire_logo("id_rubrique", 'on', $id, 100, 48);
-			if ($res)
+			$logo_f = charger_fonction('chercher_logo', 'inc');
+			if ($res = $logo_f($id, 'id_rubrique', 'on'))
+			    if ($res = decrire_logo("id_rubrique", 'on', $id, 100, 48, $res))
 				echo  "<div style='float: $spip_lang_right; margin-$spip_lang_right: -5px; margin-top: -5px;'>$res</div>";
 		}
 
diff --git a/ecrire/exec/articles.php b/ecrire/exec/articles.php
index 99a1b05260f96b6c741e23a27a23b2cc7f409c64..50e525751c3b5ac2dea20b87aa86b77fa5e62b66 100644
--- a/ecrire/exec/articles.php
+++ b/ecrire/exec/articles.php
@@ -16,7 +16,6 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 include_spip('inc/presentation');
 include_spip('inc/texte');
 include_spip('inc/rubriques');
-include_spip('inc/logos');
 include_spip('inc/mots');
 include_spip('inc/date');
 include_spip('inc/documents');
@@ -270,10 +269,11 @@ function boites_de_config_articles($id_article, $id_rubrique, $flag_editable,
 
 // Logos de l'article
 
-	if ($id_article AND $flag_editable AND ($spip_display != 4))
-	  afficher_boite_logo('id_article', $id_article,
+  if ($id_article AND $flag_editable AND ($spip_display != 4)) {
+	  include_spip('inc/chercher_logo');
+	  echo afficher_boite_logo('id_article', $id_article,
 			      _T('logo_article').aide ("logoart"), _T('logo_survol'), 'articles');
-
+  }
 
 //
 // Boites de configuration avancee
diff --git a/ecrire/exec/auteurs_edit.php b/ecrire/exec/auteurs_edit.php
index 16c47f9e58f74806d5dfcd40c94bc37aa43b455c..73c57daaaff55194f641e2ae9bda09a7322a31fc 100644
--- a/ecrire/exec/auteurs_edit.php
+++ b/ecrire/exec/auteurs_edit.php
@@ -13,7 +13,6 @@
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
 include_spip('inc/presentation');
-include_spip('inc/logos');
 include_spip('inc/auteur_voir');
 include_spip('inc/message_select');
 
@@ -40,7 +39,8 @@ function exec_auteurs_edit_dist()
 	cadre_auteur_infos($id_auteur, $auteur);
 
 	if (statut_modifiable_auteur($id_auteur, $auteur) AND ($spip_display != 4)) {
-		afficher_boite_logo('id_auteur', $id_auteur,
+		include_spip('inc/chercher_logo');
+		echo afficher_boite_logo('id_auteur', $id_auteur,
 				    _T('logo_auteur').aide ("logoart"), _T('logo_survol'), 'auteurs_edit');
 	}
 
diff --git a/ecrire/exec/breves_voir.php b/ecrire/exec/breves_voir.php
index 1f6c97a56726a14733a7846fe6fa51350373c81f..92039467e97f2a6eb6378553bf1f82e57b8de1be 100644
--- a/ecrire/exec/breves_voir.php
+++ b/ecrire/exec/breves_voir.php
@@ -14,7 +14,6 @@ if (!defined("_ECRIRE_INC_VERSION")) return;
 
 include_spip('inc/presentation');
 include_spip('inc/rubriques');
-include_spip('inc/logos');
 include_spip('inc/mots');
 include_spip('inc/date');
 include_spip('base/abstract_sql');
@@ -69,11 +68,12 @@ fin_boite_info();
 // Logos de la breve
 //
 
-if (($spip_display != 4) AND $id_breve>0 AND ($connect_statut == '0minirezo' AND acces_rubrique($id_rubrique)))
-	afficher_boite_logo('id_breve', $id_breve,
+ if (($spip_display != 4) AND $id_breve>0 AND ($connect_statut == '0minirezo' AND acces_rubrique($id_rubrique))) {
+	include_spip('inc/chercher_logo');
+	echo afficher_boite_logo('id_breve', $id_breve,
 			    _T('logo_breve').aide ("breveslogo"),
 			    _T('logo_survol'), 'breves_voir'); 
-
+ }
 
 debut_raccourcis();
 icone_horizontale(_T('icone_nouvelle_breve'), generer_url_ecrire("breves_edit","new=oui&id_rubrique=$id_rubrique"), "breve-24.gif","creer.gif");
diff --git a/ecrire/exec/configuration.php b/ecrire/exec/configuration.php
index 5f4c7849554b0d37a3b87986c1800e613ae63840..43befe7153ced6b6f01ab6f8629d43ccaa680fc8 100644
--- a/ecrire/exec/configuration.php
+++ b/ecrire/exec/configuration.php
@@ -18,7 +18,6 @@ function exec_configuration_dist()
 
 include_spip('inc/presentation');
 include_spip('inc/config');
-include_spip('inc/logos');
 
  if ($connect_statut != '0minirezo') {
 	echo _T('avis_non_acces_page');
@@ -60,9 +59,10 @@ debut_gauche();
 //
 // Le logo de notre site, c'est site{on,off}0.{gif,png,jpg}
 //
-if ($spip_display != 4)
-	afficher_boite_logo('id_syndic', 0, _T('logo_site'), _T('logo_survol'), 'configuration');
-
+ if ($spip_display != 4) {
+	include_spip('inc/chercher_logo');
+	echo afficher_boite_logo('id_syndic', 0, _T('logo_site'), _T('logo_survol'), 'configuration');
+ }
 
 echo pipeline('affiche_gauche',array('args'=>array('exec'=>'configuration'),'data'=>''));
 creer_colonne_droite();
diff --git a/ecrire/exec/mots_edit.php b/ecrire/exec/mots_edit.php
index f360affe4591242a1b3b0a6dcfb2e623cd886c45..3462b2d2909a214668958a6e37694e0588eff188 100644
--- a/ecrire/exec/mots_edit.php
+++ b/ecrire/exec/mots_edit.php
@@ -13,7 +13,6 @@
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
 include_spip('inc/presentation');
-include_spip('inc/logos');
 include_spip('base/abstract_sql');
 
 function exec_mots_edit_dist()
@@ -139,9 +138,10 @@ if ($id_mot) {
 // Logos du mot-clef
 //
 
-if ($id_mot > 0 AND $connect_statut == '0minirezo'  AND $connect_toutes_rubriques AND ($spip_display != 4))
-  afficher_boite_logo('id_mot', $id_mot, _T('logo_mot_cle').aide("breveslogo"), _T('logo_survol'), 'mots_edit');
-
+ if ($id_mot > 0 AND $connect_statut == '0minirezo'  AND $connect_toutes_rubriques AND ($spip_display != 4)) {
+	include_spip('inc/chercher_logo');
+	echo afficher_boite_logo('id_mot', $id_mot, _T('logo_mot_cle').aide("breveslogo"), _T('logo_survol'), 'mots_edit');
+ }
 
 //
 // Afficher les boutons de creation d'article et de breve
diff --git a/ecrire/exec/naviguer.php b/ecrire/exec/naviguer.php
index 8b7ca961958c9f79f6c945253b227f70b89f9ae8..2f248693f494c3645f23290efd0a94a747de8f61 100644
--- a/ecrire/exec/naviguer.php
+++ b/ecrire/exec/naviguer.php
@@ -16,7 +16,6 @@ include_spip('inc/presentation');
 include_spip('inc/texte');
 include_spip('inc/rubriques');
 include_spip('inc/forum');
-include_spip('inc/logos');
 include_spip('inc/mots');
 include_spip('inc/documents');
 include_spip('base/abstract_sql');
@@ -105,8 +104,10 @@ function exec_naviguer_dist()
 //
 // Logos de la rubrique
 //
-		if ($flag_editable AND ($spip_display != 4)) 
-			afficher_boite_logo('id_rubrique', $id_rubrique, ($id_rubrique ? _T('logo_rubrique') : _T('logo_standard_rubrique'))." ".aide ("rublogo"), _T('logo_survol'), 'naviguer');
+		if ($flag_editable AND ($spip_display != 4)) {
+			include_spip('inc/chercher_logo');
+			echo afficher_boite_logo('id_rubrique', $id_rubrique, ($id_rubrique ? _T('logo_rubrique') : _T('logo_standard_rubrique'))." ".aide ("rublogo"), _T('logo_survol'), 'naviguer');
+		}
 
 //
 // Afficher les boutons de creation d'article et de breve
diff --git a/ecrire/exec/sites.php b/ecrire/exec/sites.php
index cf69c76199821eaf90c8025d709ff756570fd5e7..3862a229d93ec616b937e59278f8ff8c374e5b97 100644
--- a/ecrire/exec/sites.php
+++ b/ecrire/exec/sites.php
@@ -15,7 +15,6 @@ include_spip('inc/presentation');
 include_spip('inc/sites_voir');
 include_spip('inc/syndic');
 include_spip('inc/rubriques');
-include_spip('inc/logos');
 include_spip('inc/mots');
 include_spip('inc/date');
 include_spip('inc/config');
@@ -254,9 +253,10 @@ echo "<p><center>";
 	icone (_T('icone_voir_sites_references'), generer_url_ecrire("sites_tous",""), "site-24.gif","rien.gif");
 echo "</center>";
 
-if ($id_syndic AND $flag_administrable AND ($spip_display != 4))
-  afficher_boite_logo('id_syndic', $id_syndic, _T('logo_site')." ".aide ("rublogo"), _T('logo_survol'), 'sites');
-
+ if ($id_syndic AND $flag_administrable AND ($spip_display != 4)) {
+	include_spip('inc/chercher_logo');
+	echo afficher_boite_logo('id_syndic', $id_syndic, _T('logo_site')." ".aide ("rublogo"), _T('logo_survol'), 'sites');
+ }
 echo pipeline('affiche_gauche',array('args'=>array('exec'=>'sites','id_syndic'=>$id_syndic),'data'=>''));
 
 creer_colonne_droite();
diff --git a/ecrire/inc/logos.php b/ecrire/inc/logos.php
index c9b9d60835a254ee65b2e13845ee45e626d5233a..18b57dd771222b6c5f3b24dfa4810aa783a1598f 100644
--- a/ecrire/inc/logos.php
+++ b/ecrire/inc/logos.php
@@ -12,6 +12,7 @@
 
 if (!defined("_ECRIRE_INC_VERSION")) return;
 
+
 function cherche_image_nommee($nom, $formats = array ('gif', 'jpg', 'png')) {
 
 	if (ereg("^" . _DIR_IMG, $nom)) {
@@ -37,160 +38,6 @@ function cherche_image_nommee($nom, $formats = array ('gif', 'jpg', 'png')) {
 	}
 }
 
-function cherche_logo($id, $type, $mode) {
-	global $formats_logos;
-	# attention au cas $id = '0' pour LOGO_SITE_SPIP : utiliser intval()
-	$nom = $type . $mode . intval($id);
-	foreach ($formats_logos as $format) {
-		if (@file_exists($d = (_DIR_LOGOS . $nom . '.' . $format)))
-			return array($d, _DIR_LOGOS, $nom, $format);
-	}
-	# coherence de type pour servir comme filtre (formulaire_login)
-	return array();
-}
-
-
-function decrire_logo($id_objet, $mode, $id, $width, $height, $titre="", $script="") {
-		
-	$type = $GLOBALS['table_logos'][$id_objet];
-	if (!$img = cherche_logo($id, $type, $mode)) 	return '';
-	list($fid, $dir, $nom, $format) = $img;
-
-	$res = ratio_image($fid, $nom, $format, $width, $height, "alt=''");
-	if (!$titre)
-		return $res;
-	else {
-	  if ($res)
-	    $res = "<div><a href='" .	$fid . "'>$res</a></div>";
-	  else
-	    $res = "<img src='$fid' width='$width' height='$height' alt='" . htmlentities($titre) . "' />";
-	  if ($taille = @getimagesize($fid))
-			$taille = _T('info_largeur_vignette', array('largeur_vignette' => $taille[0], 'hauteur_vignette' => $taille[1]));
-	  return "<p><center>$res" .
-		debut_block_invisible(md5($titre)) .
-		"<font size='1'>" .
-		$taille .
-		"\n<br />[<a href='" .
-		redirige_action_auteur("iconifier", "unlink $nom.$format", $script, "$id_objet=$id") .
-		"'>".
-		_T('lien_supprimer') .
-		"</a>]</font>" .
-		fin_block() .
-		"</center></p>";
-	}
-}
-
-function afficher_boite_logo($id_objet, $id, $texteon, $texteoff, $script) {
-
-	include_spip('inc/session');
-	echo "<p>";
-	debut_cadre_relief("image-24.gif");
-	echo "<div class='verdana1' style='text-align: center;'>";
-	$desc = afficher_logo($texteon, $id_objet, 'on', $id, $script);
-
-	if ($desc AND $texteoff) {
-		echo "<br /><br />";
-		afficher_logo($texteoff, $id_objet, 'off', $id, $script);
-	}
-
-	echo "</div>";
-	fin_cadre_relief();
-	echo "</p>";
-}
-
-global $table_logos;
-
-$table_logos = array( // cf public/composer.php
-		     'id_article' => 'art', 
-		     'id_auteur' => 'aut', 
-		     'id_breve' => 'breve', 
-		     'id_mot' => 'mot', 
-		     'id_syndic'=> 'site',
-		     'id_rubrique' => 'rub'
-		     );
-
-function afficher_logo($titre, $id_objet, $mode, $id, $script) {
-	global $connect_id_auteur;
-
-	echo bouton_block_invisible(md5($titre)), "<b>", $titre, "</b>";
-
-	$logo = decrire_logo($id_objet,$mode,$id, 170, 170, $titre, $script);
-
-	if ($logo) {
-	  echo $logo;
-	}
-	else {
-		$afficher = "";
-		$dir_ftp = determine_upload();
-		if ($dir_ftp
-		AND $fichiers = preg_files($dir_ftp, '[.](gif|jpg|png)$')) {
-			foreach ($fichiers as $f) {
-				$f = substr($f, strlen($dir_ftp));
-				$afficher .= "\n<option value='$f'>$f</option>";
-			}
-		}
-		if (!$afficher) {
-		  if ($dir_ftp) 
-			$afficher = _T('info_installer_images_dossier',
-				array('upload' => '<b>' . $dir_ftp . '</b>'));
-		} else {
-		$afficher = "\n<div style='text-align: left'>" .
-			_T('info_selectionner_fichier',
-				array('upload' => '<b>' . $dir_ftp . '</b>')) .
-			":</div>" .
-			"\n<select name='source' CLASS='forml' size='1'>$afficher\n</select>" .
-			"\n<div align='" .
-			$GLOBALS['spip_lang_right'] .
-			"'><input name='sousaction2' type='submit' value='".
-			_T('bouton_choisir') .
-			"' CLASS='fondo'  style='font-size:9px' /></div>";
-		}
-		$afficher = "\n" .
-			_T('info_telecharger_nouveau_logo') .
-			"<br />" .
-			"\n<input name='image' type='File' class='forml' style='font-size:9px;' size='15'>" .
-			"<div align='" .  $GLOBALS['spip_lang_right'] . "'>" .
-			"\n<input name='sousaction1' type='submit' value='" .
-			_T('bouton_telecharger') .
-			"' class='fondo' style='font-size:9px' /></div>" .
-			$afficher;
-
-		$type = $GLOBALS['table_logos'][$id_objet];
-		echo debut_block_invisible(md5($titre));
-		echo generer_action_auteur('iconifier',
-			"$type$mode$id",
-			generer_url_ecrire($script, "$id_objet=$id"), 
-			$afficher,
-			" method='POST' ENCTYPE='multipart/form-data'");
-		echo fin_block();
-	}
-	return $logo;
-}
-
-
-//
-// Creation automatique d'une vignette
-//
-
-// Calculer le ratio
-function image_ratio ($srcWidth, $srcHeight, $maxWidth, $maxHeight) {
-	$ratioWidth = $srcWidth/$maxWidth;
-	$ratioHeight = $srcHeight/$maxHeight;
-
-	if ($ratioWidth <=1 AND $ratioHeight <=1) {
-		$destWidth = $srcWidth;
-		$destHeight = $srcHeight;
-	} else if ($ratioWidth < $ratioHeight) {
-		$destWidth = $srcWidth/$ratioHeight;
-		$destHeight = $maxHeight;
-	}
-	else {
-		$destWidth = $maxWidth;
-		$destHeight = $srcHeight/$ratioWidth;
-	}
-	return array (ceil($destWidth), ceil($destHeight),
-		max($ratioWidth,$ratioHeight));
-}
 
 function creer_vignette($image, $maxWidth, $maxHeight, $format, $destdir, $destfile, $process='AUTO', $force=false, $test_cache_only = false) {
 	global $convert_command, $pnmscale_command;
@@ -231,6 +78,7 @@ function creer_vignette($image, $maxWidth, $maxHeight, $format, $destdir, $destf
 		if ($srcsize = @getimagesize($image)) {
 			$srcWidth=$srcsize[0];
 			$srcHeight=$srcsize[1];
+			include_spip('inc/chercher_logo');
 			list ($destWidth,$destHeight) = image_ratio($srcWidth, $srcHeight, $maxWidth, $maxHeight);
 		} else if ($process == 'convert' OR $process == 'imagick') {
 			$destWidth = $maxWidth;
@@ -422,6 +270,7 @@ function recupere_image_originale($image, $format)
 }
 
 
+
 //
 // Retourner taille d'une image
 // pour les filtres |largeur et |hauteur
@@ -464,9 +313,6 @@ function taille_image($img) {
 	return array($srcHeight, $srcWidth);
 }
 
-
-
-
 //
 // Reduire la taille d'un logo
 // [(#LOGO_ARTICLE||reduire_image{100,60})]
@@ -508,6 +354,7 @@ function reduire_image_logo($img, $taille = -1, $taille_y = -1) {
 		// on peut resizer en mode html si on dispose des elements
 		if ($srcw = extraire_attribut($img, 'width')
 		AND $srch = extraire_attribut($img, 'height')) {
+			include_spip('inc/chercher_logo');
 			list($w,$h) = image_ratio($srcw, $srch, $taille, $taille_y);
 			$img = inserer_attribut(
 				inserer_attribut($img, 'width', $w),
@@ -559,6 +406,7 @@ function reduire_image_logo($img, $taille = -1, $taille_y = -1) {
 	if (preg_match(",(.*)\.(jpg|gif|png)$,", $logo, $regs)) {
 		if ($i = cherche_image_nommee($regs[1], array($regs[2]))) {
 			list(,$nom,$format) = $i;
+			include_spip('inc/chercher_logo');
 			return ratio_image($logo, $nom, $format, $taille, $taille_y, $attributs);
 		}
 	}
@@ -567,26 +415,4 @@ function reduire_image_logo($img, $taille = -1, $taille_y = -1) {
 		return "<img src='$logo$date'$attributs />";
 }
 
-function ratio_image($logo, $nom, $format, $taille, $taille_y, $attributs)
-{
-	if (!$taille_origine = @getimagesize($logo)) return '';
-	list ($destWidth,$destHeight, $ratio) = image_ratio($taille_origine[0], $taille_origine[1], $taille, $taille_y);
-
-		// Creer effectivement la vignette reduite
-	$suffixe = '-'.$destWidth.'x'.$destHeight;
-	$preview = creer_vignette($logo, $taille, $taille_y, $format, ('cache'.$suffixe), $nom.$suffixe);
-	if ($preview) {
-			$logo = $preview['fichier'];
-			$destWidth = $preview['width'];
-			$destHeight = $preview['height'];
-	}
-
-		// dans l'espace prive mettre un timestamp sur l'adresse 
-		// de l'image, de facon a tromper le cache du navigateur
-		// quand on fait supprimer/reuploader un logo
-		// (pas de filemtime si SAFE MODE)
-	$date = _DIR_RESTREINT ? '' : ('?date='.@filemtime($logo));
-	return "<img src='$logo$date' width='".$destWidth."' height='".$destHeight."'$attributs />";
-}
-
 ?>
diff --git a/ecrire/inc/presentation.php b/ecrire/inc/presentation.php
index 2fd49f5bb10383ca8fb7f265cb608e86bc6a7f08..3bb12e540558515a7b049367f408be710d598e6b 100644
--- a/ecrire/inc/presentation.php
+++ b/ecrire/inc/presentation.php
@@ -501,7 +501,6 @@ function affiche_tranche_bandeau($requete, $icone, $col, $fg, $bg, $tmp_var, $de
 	global $spip_display ;
 
 	$voir_logo = ($spip_display != 1 AND $spip_display != 4 AND $GLOBALS['meta']['image_process'] != "non");
-	if ($voir_logo) include_spip('inc/logos');
 
 	$tous_id = array();
 
@@ -791,7 +790,6 @@ function afficher_articles($titre_table, $requete, $afficher_visites = false, $a
 		
 	$voir_logo = ($spip_display != 1 AND $spip_display != 4 AND $GLOBALS['meta']['image_process'] != "non");
 		
-	if ($voir_logo) include_spip('inc/logos');
 
 	//echo "<table width='100%' cellpadding='2' cellspacing='0' border='0'>";
 	echo afficher_liste_debut_tableau(), str_replace("::id_ajax_fonc::", $id_ajax_fonc, $tranches);
@@ -890,11 +888,10 @@ function afficher_articles_boucle($row, &$tous_id, $afficher_auteurs, $afficher_
 		"'$descriptif$dir_lang style=\"display:block;\">";
 
 	if ($voir_logo) {
-
-		include_spip('inc/logos');
-		$logo = decrire_logo("id_article", 'on', $id_article, 26, 20);
-		if ($logo)
-			$s .= "<div style='float: $spip_lang_right; margin-top: -2px; margin-bottom: -2px;'>$logo</div>";
+		$logo_f = charger_fonction('chercher_logo', 'inc');
+		if ($logo = $logo_f($id_article, 'id_article', 'on'))
+			if ($logo = decrire_logo("id_article", 'on', $id_article, 26, 20, $logo))
+				$s .= "<div style='float: $spip_lang_right; margin-top: -2px; margin-bottom: -2px;'>$logo</div>";
 	}
 
 	$s .= typo($titre);
@@ -1179,11 +1176,10 @@ function afficher_breves_boucle($row, &$tous_id,  $voir_logo, $own)
 	$s .= "<a href='" . generer_url_ecrire("breves_voir","id_breve=$id_breve") . "' style=\"display:block;\">";
 
 	if ($voir_logo) {
-
-		include_spip('inc/logos');
-		$logo = decrire_logo("id_breve", 'on', $id_breve, 26, 20);
-		if ($logo)
-			$s .= "<div style='float: $spip_lang_right; margin-top: -2px; margin-bottom: -2px;'>$logo</div>";
+		$logo_f = charger_fonction('chercher_logo', 'inc');
+		if ($logo = $logo_f($id_breve, 'id_breve', 'on'))
+			if ($logo = decrire_logo("id_breve", 'on', $id_breve, 26, 20))
+				$s .= "<div style='float: $spip_lang_right; margin-top: -2px; margin-bottom: -2px;'>$logo</div>";
 	}
 
 	$s .= typo($titre);
@@ -1418,7 +1414,6 @@ function afficher_forum_thread($row, $controle_id_article, $compteur_forum, $nb_
 		$voir_logo = (($spip_display != 1 AND $spip_display != 4 AND $GLOBALS['meta']['image_process'] != "non") ? 
 		      "position: absolute; $spip_lang_right: 0px; margin: 0px; margin-top: -3px; margin-$spip_lang_right: 0px;" 
 		      : '');
-		if ($voir_logo) include_spip('inc/logos');
 	}
 
 	$id_forum=$row['id_forum'];
@@ -1446,10 +1441,10 @@ function afficher_forum_thread($row, $controle_id_article, $compteur_forum, $nb_
 	}
 	$titre_boite = '';
 	if ($id_auteur AND $voir_logo) {
-		include_spip('inc/logos');
-		$titre_boite = decrire_logo("id_auteur", 'on', $id_auteur, 48, 48);
-		if ($titre_boite)
-			$titre_boite = "<div style='$voir_logo'>$titre_boite</div>" ;
+		$logo_f = charger_fonction('chercher_logo', 'inc');
+		if ($logo = $logo_f($id_auteur, 'id_auteur', 'on'))
+			if ($logo = decrire_logo("id_auteur", 'on', $id_auteur, 48, 48))
+			    $titre_boite = "<div style='$voir_logo'>$$logo</div>" ;
 	} 
 
 	$titre_boite .= typo($titre);
diff --git a/ecrire/inc/rubriques.php b/ecrire/inc/rubriques.php
index e18b185e76983616849c9e5869988789990dcf3a..fc2c7e89a09fca8eb37b251d50f8d1cb678f8c1c 100644
--- a/ecrire/inc/rubriques.php
+++ b/ecrire/inc/rubriques.php
@@ -229,7 +229,7 @@ function enfant_rub($collection){
 		
 	if ($voir_logo) {
 		$voir_logo = "float: $spip_lang_right; margin-$spip_lang_right: -6px; margin-top: -6px;";
-		include_spip('inc/logos');
+		$logo_f = charger_fonction('chercher_logo', 'inc');
 	}
 
 	$les_enfants = "";
@@ -250,8 +250,8 @@ function enfant_rub($collection){
 		if ($spip_display == 4) $les_enfants .= "<li>";
 
 		if ($voir_logo) {
-			$logo = decrire_logo("id_rubrique", 'on', $id_rubrique, 48, 36);
-			if ($logo)
+			if ($logo = $logo_f($id_rubrique, $id_rubrique, 'on'))
+				if ($logo = decrire_logo("id_rubrique", 'on', $id_rubrique, 48, 36))
 				$logo =  "<div style='$voir_logo'>$logo</div>";
 		}
 		$les_enfants .= "<div class='enfants'>" .
diff --git a/ecrire/inc/sites_voir.php b/ecrire/inc/sites_voir.php
index bf0f441647d811f5aa97be24c13e97af702100ff..32c87cdc95cdfcf0bea89143ccddabe58e5ef7f5 100644
--- a/ecrire/inc/sites_voir.php
+++ b/ecrire/inc/sites_voir.php
@@ -69,11 +69,10 @@ function afficher_sites_boucle($row, &$tous_id, $voir_logo, $bof)
 	$s = "<a href=\"".generer_url_ecrire("sites","id_syndic=$id_syndic")."\" title=\"$title\">";
 
 	if ($voir_logo) {
-
-		include_spip('inc/logos');
-		$logo = decrire_logo("id_syndic", 'on', $id_syndic, 26, 20);
-		if ($logo)
-			$s .= "<div style='float: $spip_lang_right; margin-top: -2px; margin-bottom: -2px;'>$logo</div>";
+		$logo_f = charger_fonction('chercher_logo', 'inc');
+		if ($logo = $logo_f($id_syndic, $id_syndic, 'on'))
+			if ($logo = decrire_logo("id_syndic", 'on', $id_syndic, 26, 20))
+				$s .= "<div style='float: $spip_lang_right; margin-top: -2px; margin-bottom: -2px;'>$logo</div>";
 	}
 
 	$s .= http_img_pack($puce, $statut, "width='7' height='7'") ."&nbsp;&nbsp;";
diff --git a/ecrire/public/balises.php b/ecrire/public/balises.php
index c8ede87e8dc7e0975e8cbc4ae8a12bee3648028c..d7a1d4e082c190ac7a873b9fb6ca5eb1f39b9ab6 100644
--- a/ecrire/public/balises.php
+++ b/ecrire/public/balises.php
@@ -648,11 +648,13 @@ function calculer_balise_logo ($p) {
 		$type_objet = 'SITE';
 		$suite_logo = $regs[1];
 		$_id_objet = "\"'0'\"";
+		$id_objet = 'id_syndic'; # parait faux mais donne bien "siteNN"
 	} else {
 		if ($type_objet == 'SITE')
-			$_id_objet = champ_sql("id_syndic", $p);
+			$id_objet = "id_syndic";
 		else
-			$_id_objet = champ_sql("id_".strtolower($type_objet), $p);
+			$id_objet = "id_".strtolower($type_objet);
+		$_id_objet = champ_sql($id_objet, $p);
 	}
 
 	// analyser les faux filtres
@@ -739,7 +741,7 @@ function calculer_balise_logo ($p) {
 			."')";
 	}
 	else {
-		$p->code = "affiche_logos(calcule_logo('$type_objet', '" .
+		$p->code = "affiche_logos(calcule_logo('$id_objet', '" .
 			(($suite_logo == '_SURVOL') ? 'off' : 
 			(($suite_logo == '_NORMAL') ? 'on' : 'ON')) .
 			"', $_id_objet," .
diff --git a/ecrire/public/composer.php b/ecrire/public/composer.php
index 721fd3b26542c83a432133894fb339ce6798389b..60f96cbeb4bd4a3bdd92423097be91622e8b6186 100644
--- a/ecrire/public/composer.php
+++ b/ecrire/public/composer.php
@@ -141,35 +141,25 @@ function affiche_logos($logos, $lien, $align) {
 //
 
 function calcule_logo($type, $onoff, $id, $id_rubrique, $ff) {
-	include_spip('inc/logos');
-
-	$table_logos = array (
-	'ARTICLE' => 'art',
-	'AUTEUR' =>  'aut',
-	'BREVE' =>  'breve',
-	'MOT' => 'mot',
-	'RUBRIQUE' => 'rub',
-	'SITE' => 'site'
-	);
-	$type = $table_logos[$type];
+	$logo_f = charger_fonction('chercher_logo', 'inc');
 	$nom = strtolower($onoff);
 
 	while (1) {
-		$on = cherche_logo($id, $type, $nom);
+		$on = $logo_f($id, $type, $nom);
 		if ($on) {
 			if ($ff)
 			  return  (array('', "$on[2].$on[3]"));
 			else {
 				$off = ($onoff != 'ON') ? '' :
-				  cherche_logo($id, $type, 'off');
+				  $logo_f($id, $type, 'off');
 				return array ($on[0], ($off ? $off[0] : ''));
 			}
 		}
 		else if ($id_rubrique) {
-			$type = 'rub';
+			$type = 'id_rubrique';
 			$id = $id_rubrique;
 			$id_rubrique = 0;
-		} else if ($id AND $type == 'rub')
+		} else if ($id AND $type == 'id_rubrique')
 			$id = sql_parent($id);
 		else return array('','');
 	}