Accueil L’association Fonctionnement du site Liens croisés MMT Echange de liens croisés entre sites des MMT 2/4

Publié le : 21 janvier 2009
Publication antérieure :
14 mai 2007

Imprimer Imprimer cet article

Auteur :
Alain Sichel †

Alain Sichel
Echange de liens croisés entre sites des MMT 2/4
2. Affichage par script PHP

Après un premier article présentant les principes sur l’affichage des liens croisés, je vais donner plusieurs exemples pour le script PHP affichant la liste des sites. D’autres articles complèteront pour des scripts adaptés à des besoins particuliers et pour l’utilisation sur un site Spip.

 

 Introduction

Le but de cet article est de permettre aux MMT de choisir un des exemples présentés ou de l’adapter afin de présenter une liste de liens croisés (ou la liste de tous les sites MMT) sur son site.

Je vais surtout présenter les choix concernant la présentation de la liste de sites. Pour ceux qui sont intéressés par le fonctionnement du script, je vous renvoie aux articles de la rubrique Syndication de contenu, particulièrement Afficher un fil RSS/Atom sur votre site 1/3, 2/3, 3/3, Lecture des caractères spéciaux et d’éléments d’un fil RSS/Atom et Installer un script PHP pour les nuls et bien sûr contactez-moi si cela n’est pas clair ou pour des besoins particuliers. Le code des scripts contient des commentaires et suggère quelques modifications simples.

Les 4 exemples présentés utilisent :

- un système de cache pour ne pas être obligé de recalculer la page à chaque fois ; si le fichier en cache a plus de 12 heures, le script :

- un système de pagination pour répartir la liste des sites sur plusieurs pages [2].

Le fichier liens_croises.zip en bas de cet article comprend : [3]

- un dossier cache contenant rss_read.inc.php qui permet la lecture des flux XML (c’est cette version qu’il faut utiliser car je l’ai modifiée pour lire certains éléments),
- des fichiers liens-x-mmt.txt contenant le script des différents exemples (à insérer dans une page de votre site que vous pourrez appeler liens-mmt.php ), et les éléments de style (à mettre dans le <head> de la page),
- des fichiers liens-x-mmt.php contenant les différents scripts avec un exemple de présentation simple (avec quelques liens et le moteur de recherche multisites MMT),
- les images utilisées dans les exemples.

 Exemple 1

Cet exemple affiche en ordre aléatoire la liste des liens croisés santé, avec 11 sites par page. L’affichage se fait dans un tableau, à raison d’une cellule par site.

La cellule présente presque [4] tous les éléments de présentation du site contenus dans le fichier XML, ce qui peut faire jusqu’à 7 liens par site ! L’image des flux affiche un lien vers le ou les fils de syndication.

Pour illustrer les changements possibles avec la feuille de style, j’ai fait une légère variante avec le même script avec juste quelques modifications de la feuille de style et du tableau contenant le moteur.

 Exemple 2

L’exemple suivant affiche la liste des liens croisés santé en ordre alphabétique, avec 9 sites par page. L’affichage se fait dans un tableau, avec une présentation ressemblant à la liste des sites avec plusieurs lignes par site et en général 2 cellules par ligne.

Cette disposition est intéressante si on fait le choix de ne pas afficher la vignette du site. A noter l’URL remise à côté du nom du site et affichée en ayant retiré "http://" et le "/" final et la mise au pluriel de Auteur quand le site est géré par 2 maîtres-toile. Le moteur de recherche multisite est proposé ici avant la liste des sites.

On peut estimer que les articles ou titres ne doivent pas intervenir dans le classement alphabétique. J’ai donc fait une variante de cet exemple qui classe les noms des sites sans tenir compte de Dr, Docteur, Le, La ou Les.

 Exemple 3

Le 3e exemple affiche la liste des tous les sites MMT en ordre alphabétique, avec 8 sites par page. L’affichage se fait dans un tableau, avec une cellule par site. La vignette est alignée à droite. La catégorie du site est indiquée.

 Exemple 4

Le 4e exemple affiche la liste des tous les sites MMT en ordre alphabétique, avec 10 sites par page. L’affichage se fait par une liste à puces, la puce est ici remplacée par une image. Chaque <li>... </li> est entouré par un <div> qui permet la couleur de fond, la bordure et l’espacement entre chaque site. Le maître-toile est ici indiqué par un title en survolant le nom du site. La catégorie du site est indiquée.

 Installation et personnalisation

Pour que le script fonctionne il faut installer sur votre site :

- le script soit un fichier liens-x-mmt.php ou liens-x-mmt.txt si c’est pour l’incérer dans une page au look du site,
- le dossier cache contenant rss_read.inc.php (indispensable, sinon le script ne fonctionnera pas),
- si vous le souhaitez les images selon l’exemple choisi.

Tout ceci doit être mis au même endroit, selon votre choix racine du site ou un des répertoire (on peut aussi les placer autrement, mais il faudra alors modifier le code du script pour que les chemins vers le dossier cache rss_read.inc.php et les images soient corrects [5].

Il faudrait renommer la page où se trouve le script par exemple liens-x-mmt.php

Si vous modifiez la feuille de style, je vous conseille de garder :

a.grey, a.grey:hover, a.grey:visited {color: #666666; background-color: transparent; text-decoration: none; cursor: text;}

Sans ce code, le visiteur ne sait pas quelle page de la pagination s’affiche (à moins d’aller voir l’URL, mais çà l’internaute ne le fait pas). Si on ne veut vraiment pas de ce style, on peut supprimer le lien pour la page affichée (voir variante du 3e exemple), en changeant le code pour la pagination par :

$pagination.= '<div align="center">';
  for($j = 0; $j < $pages; $j++) {
        if ($j==$numero_page) {$pagination.= ($j!=0?($j*$nb)+1:'0').' | ';}
        else {$pagination.= '<a href="'.$PHP_SELF.($j!=0?'?sites='.(($j*$nb)+1):'').'#pagination">'.($j!=0?($j*$nb)+1:'0').'</a> | ';}
  }
  $pagination.= $nbnews.' Sites <acronym title="M&eacute;decins Ma&icirc;tres-Toile Francophones">MMT-Fr</acronym>
  </div>';

Tous ces exemples sont facilement personnalisables en modifiant :

- le nombre de sites affichés par page, ex : $nb = 11;
- le fichier XML à charger, ex : $fil1 = "http://www.mmt-fr.org/lapagedelien.xml"; [6]
- la taille de la vignette, en modifiant $largeur = 150; la hauteur est calculée pour garder les proportions,
- la présentation choisie,

// mise en forme des informations à présenter
if ($items[$i]['title']) {

Remarque :

Il arrive parfois que la liste n’apparaisse pas au premier chargement de la page, quand il n’y a rien dans le cache. Il est inutile d’indiquer "Raffraichir la page si la liste n’est pas affichée" parce que le script affiche la page en cache puis va vérifier (en comparant les dates) si la page sur le site amiral a été modifiée depuis la création de la page en cache, alors il la lit et l’affiche (rechargement de la page).
Quand vous testez votre page, une page en cache est créée, le visiteur n’aura donc jamais une page vide, au pire (si le rechargement s’est fait avant l’enregistrement de la nouvelle page en cache) il aura la liste d’avant la mise à jour.

Ordre d’affichage des sites

L’ordre d’affichage des sites est alphabétique pour la liste de tous les sites et aléatoire pour les listes de liens croisés. Cet ordre peut être modifié :

- pour les pages de liens croisés, les sites peut être mis par ordre alphabétique en retirant les // devant la ligne [7]

usort($items,create_function('$a,$b',' return strcmp(strtoupper($a["title"]),strtoupper($b["title"]));'));

- si on veut un ordre alphabétique inverse (de Z à A) en utilisant :

usort($items,create_function('$b,$a',' return strcmp(strtoupper($a["title"]),strtoupper($b["title"]));'));

- pour un ordre aléatoire, en appliquant :

usort($items,create_function('$a,$b',' return rand(-1,1);'));

Pour la page de liens croisés, cela permet d’avoir un ordre différent de celui affiché sur les autres sites MMT. Pour la liste de tous les sites, ceci n’est pas applicable tel quel, car pour les exemples décrits dans cet article, le script ne calcule que les sites à afficher sur la page demandée. Si on mélange les sites, il faut calculer toutes les pages pour que la liste soit correcte. C’est ce que nous verrons avec les exemples décrits dans l’article suivant.

En cas de difficulté :

Le script enregistre un fichier dans le dossier cache. S’il n’y arrive pas, cela peut être la source de problèmes, veillez dans ce cas à faire un chmod 777 sur le dossier cache.


Autres articles :
1. Principe
3. Autres scripts PHP
4. Affichage sans PHP

 


 

[1] Les fichiers XML ne sont modifiés que s’il y a eu un nouvel enregistrement dans la base de données des sites.

[2] Ce système sera prochainement expliqué dans un article dans la partie publique du site.

[3] Ce fichier a été modifié le 17/05/07 sur l’affichage d’informations sur les flux de syndication.

[4] Il n’a pas le classement du site, ce qui est inutile puisqu’il n’y a que des sites santé.

[5] Attention pour les images dans la feuille de style, un code comme :

background-image: url('../http.png');

ne marche pas, il faut mettre une URL absolue :

background-image: url('http://www.votre-site.org/images/http.png');

[6] Ils sont déjà indiqués dans la page, il suffit de retirer les // uniquement devant le fichier souhaité.

[7] La variante du 2e exemple utilise :

usort($items,create_function('$a,$b',' return strcmp(supprime($a["title"]),supprime($b["title"]));'));

il faut pour cela ajouter cette fonction à la fin du script (juste avant ?> ) :

function supprime($name) {
  if (preg_match("#^(Dr|Docteur|Le|La|Les) ([\w,\s]*)$#i", $name, $titre)) {
        $name = strtoupper($titre[2]);
  }
  return $name;
}


Document joint à l'article

liens_croises.zip

Bookmark and Share

Imprimer Imprimer cet article