SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano | Nederlands

286 Plugins, 197 contribs sur SPIP-Zone, 320 visiteurs en ce moment

Accueil > Rédaction > Archives pour donner des idées > Afficher des répertoires ou un site externe dans un site SPIP

Afficher des répertoires ou un site externe dans un site SPIP

29 novembre 2004 – par fleg – commentaires

L’objectif de cette contrib est de permettre, à l’intérieur d’un site SPIP, d’afficher simplement le contenu de répertoires du disque, de naviguer dans ceux-ci et même d’afficher un site web externe.

Introduction


Le site du satellite Planck (http://www.planck.fr) dont je m’occupe est à la fois un outil de publication des informations concernant le satellite mais aussi un outil de travail utilisé par les personnes construisant le satellite et dévellopant les programmes de réduction des données qu’il enverra. A ce titre, certains programmes génèrent automatiquement des fichiers dans des répertoires (voire même une arborescence complète) ainsi que des pages html simples présentant leurs résultats.
Lors du développement du site web, il fallait donc trouver un moyen pour permettre, dans l’environnement du site SPIP général, de naviguer dans ces répertoires et d’afficher les pages générées par ces programmes.
Certe, un lien « brutal » vers les répertoires était possible, mais cela signifiait sortir du site et perdre la présentation générale. En me basant sur un script nommé GetUrl trouvé sur le net, j’ai écrit la contrib suivante permettant aussi bien d’afficher le contenu d’un répertoire et de naviguer dans son arborescence que d’inclure des pages html simples de n’importe quel site à l’intérieur d’un article SPIP.

Le principe

L’idée de base consiste à ouvrir une connexion vers la page que l’on veut insérer (qui peut être soit la page générée par apache et correspondant au contenu d’un répertoire, soit une page web externe quelconque), d’envoyer les bons entêtes http (ce qui permet par exemple de passer une authentification), de récupérer la page servie dans un buffer, de la traiter (enlever les entêtes <head> etc..., réecrire les liens, etc...) puis d’insérer le résultat où l’on veut dans notre site.

Quelque détails techniques

Pour ceux qui veulent comprendre comment ça marche, voici quelque détails.
On utilise la fonction php fsockopen qui permet d’ouvrir une connection vers une adresse donnée (en l’occurence l’url à récupérer. Par exemple : http://www.le_site_a_inclure.com). On fait un GET et on bufferise ce qui est renvoyé. Une fois la page entièrement récupérée, on réecrit les liens en absolu de façons à ce qu’ils fonctionnent dans notre site (en effet, les liens sont généralement exprimés de façon relative à l’url de base de la page dans laquelle ils apparaissent - ici www.le_site_a_inclure.com- mais maintenant la page va être affichée dans notre site spip - www.mon_site_spip.com - il faut donc corriger cela sinon les liens ne marcheront pas). Pour terminer, on ne garde de ce qui est renvoyé que ce qui est compris entre les balises <body> et </body>. Cette manip est nécessaire pour que la page finale SPIP soit bien formée (elle contient déjà ses propre balises <head et <body> ).

Limitations


Comme toute contrib, celle-ci présente certaines limitations. Premièrement, du fait que l’on ne conserve que ce qui est entre <body> et </body>, on perd les références aux éventuelles feuilles de style déclarées dans la partie <head Le rendu d’un site utilisant des feuilles de style ne sera donc pas bon. J’aurais pu récupérer les liens vers les feuilles de style, mais cela me paraissait trop dangereux. En effet, on ne maitrise pas forcément les feuilles de style des sites que l’on veut inclure et si ces derniers utilisent des classes de même nom que celles utilisées dans notre propre site, on risque de « casser » la présentation générale de notre site !
Deuxièmement, il vaut mieux éviter d’inclure des pages présentant des formulaires ou du javascript. En effet, d’une part il n’est pas facile de prévoir le comportement des scripts éventuellement lancés (par exemple tests sur les url qui ne fonctionneront pas si ces dernières sont réecrites) et d’autre part, les formulaires ne sont pas propagés.
Cette contribution s’adresse donc principalement à ceux qui veulent permettre la navigation à travers des répertoires ou l’affichage de pages HTML « simples » à l’intérieur de leur site sous SPIP.

Fonctionnement

Une fois installée, cette contribution permet d’afficher facilement à la fin d’un article le contenu d’une page accessible par le web. Pour cela, il suffit, dans l’article qui doit afficher la page, de mettre le tag suivant :

<browse http://www.url_a_inclure.com/>

et le tour est joué... ou presque !

En effet, pour éviter que n’importe quel contributeur n’affiche n’importe quoi dans le site, j’ai ajouté un mécanisme d’autorisation qui fait que le webmaster doit ajouter dans le fichier mes_fonctions.php3 la liste des sites qui pourront être ainsi inclus. Il faut donc ajouter http://www.url_a_inclure.com dans cette liste :

$GLOBALS['Authorized_sites']=array("http://www.planck.fr",
"http://www.url_a_inclure.com"        );

Et là normalement ça marche.

Installation

C’est assez simple.
L’installation consiste en l’application du filtre fl_browse lors de l’affichage du texte de l’article dans la boucle article :

[(#TEXTE|fl_browse)]

puis l’ajout de la ligne suivante dans le squelette des articles (à l’endroit où l’on veut que la page inclue apparaisse) :

<?php if ($flbrowse){include("squelettes/browse.php");} ?>

Attention, « squelette/browse.php » est le chemin menant au fichier browse.php par rapport à la racine du site.

Fichiers :
Ensuite, il suffit de copier le fichier browse.php à l’endroit indiqué et d’ajouter le contenu du fichier contrib_geturl.php à mes_fonctions.php.

Zip - 440 octets
browse.php
Le fichier browse.php qui contrôle la mise en page de la page inclue.
Zip - 3.1 ko
contrib_geturl.php
Le code à ajouter à mes_fonctions.php3

Tous les fichiers sont réunis dans le zip suivant :

Zip - 4 ko
Contribution browse_url
Tous les fichiers de la contribution

Enfin, un exemple du résultat est visible sur le site du satellite Planck.

Normalement, ça suffit.
Bonne chance.

Dernière modification de cette page le 23 septembre 2007

Retour en haut de la page

Vos commentaires

  • Le 18 octobre 2014 à 21:23, par kass En réponse à : Afficher des répertoires ou un site externe dans un site SPIP

    bonjour , mon ami , je veux just proposer un question . j"essaie d’installer ce contrib , et il me donne aucun resultat , merci pour l’aide

    العاب برق

    Répondre à ce message

  • Le 4 novembre 2012 à 20:33, par hguhf En réponse à : Afficher des répertoires ou un site externe dans un site SPIP

    Salut, comment ca va
    Je ne sais pas si tu as résolu le problème, mais je n’arrive pas à le reproduire !
    Pour ce qui est de la version de spip, la contrib fonctionne bien sous 1.7, mais je
    n’ai pas testé avec la 1.8... Cela dit, normalement, il n’y a pas trop de raisons que ça ne marche pas.
    merci pout tous
    j’ai un site web
    http://jeu-jeu-jeu.net/
    http://jeu-jeu-jeu.net/category/hguhf/
    http://jeu-jeu-jeu.net/category/jeux-al3ab-mbc3/

    Répondre à ce message

  • Le 12 novembre 2006 à 15:41, par domy22 En réponse à : Afficher des répertoires ou un site externe dans un site SPIP

    Bonjour,

    J’ai télécharger votre contrib, mais le doit probablement etre plus stupide que la moyenne car je ne vois pas du tout ou modifier le fichier article pour y mettre :
    d’abord le filtre
    ensuit, l’endroit ou doit apparaitre la page
    Sur spip 1.9.1 que j’utilise, je ne vois aucun endroit ou mettre ces element a priori

    • Le 1er avril 2007 à 11:36, par JJF En réponse à : Afficher des répertoires ou un site externe dans un site SPIP

      Bonjour,
      j’éprouve les mêmes difficultés que vous pour installer cette intéressante contrib. Pourriez vous me fournir une explication pour « LES NULS ».
      Merci
      JJF

    • Le 22 octobre 2010 à 16:24, par jfd En réponse à : Afficher des répertoires ou un site externe dans un site SPIP

      Rien ne sert de se masturber avec du php, des feuiles mes_options.php, etc.…
      Voici la formule magique :
      object data=« http://lesite_a_lier.com/fichier.html » width=« XX% » heigt=« 600 » type=« text/html »
      je n’est pas mis les balises d’ouverture de fermeture (supérieur et inférieur) afin de lire la formule, ne pas les oublier !!!!!!!!!.

      jfD

    Répondre à ce message

  • Le 3 décembre 2004 à 14:54, par tibo En réponse à : > Afficher des répertoires ou un site externe dans un site SPIP

    Salut,

    Très bonne contrib. En tout cas très utile pour moi. Cependant il y a un mais :

    Je suis en train de réaliser un site pour une région et une des communes m’a mandaté pour la refonte de leur site. Les deux sont (ou seront) sous SPIP. Je désire afficher la liste des sociétés de la commune. Pour se faire un fichier avec une boucle dans le premier site et ta contrib dans l’autre et le tour est joué.

    Sauf que

    En accédant à l’article avec www.ici.fr/article.php3?id_article=x&recalcul=oui ça joue.
    Mais (oui, il y a un mais) sans le recalcul (lors du 2e , 3e visionnage) ça n’affiche pas le contenu de l’article inclu avec la commande :

    <browse http://www.la.fr/mapage.php3>

    D’où mes questions :
    -  comment résoudre le problème ?
    -  Autres possibilités d’insérer des données provenant d’une autre base de donnée SPIP
    -  Est-ce que t’as contrib tourne avec SPIP 1-8b2 ?

    J’ai mis un exemple dans une zone de test. Le test est simple, visionner l’article, aller voir un autre article puis revenir sur l’article (1er affichage correct, deuxième manque l’include)

    • Le 7 décembre 2004 à 09:24, par DoriaN En réponse à : > Afficher des répertoires ou un site externe dans un site SPIP

      Je constate ton problème, je ne l’ai pas sur mon site de test en local (spip 1.7), je pense que ça vient de toi plus que de la contrib (ou un peu des 2 ;-) .

      Pour ta question sur la version de spip, les contribs publiées sont testées pour la version actuelle de spip, donc en l’occurence Spip 1.7.2, et comme ça marchait.

    • Le 7 décembre 2004 à 15:27, par fleg En réponse à : > Afficher des répertoires ou un site externe dans un site SPIP

      Salut,
      Je ne sais pas si tu as résolu le problème, mais je n’arrive pas à le reproduire !
      Pour ce qui est de la version de spip, la contrib fonctionne bien sous 1.7, mais je
      n’ai pas testé avec la 1.8... Cela dit, normalement, il n’y a pas trop de raisons que ça ne marche pas.

    • Le 9 décembre 2004 à 12:35, par tibo En réponse à : > Afficher des répertoires ou un site externe dans un site SPIP

      J’ai pris une autre approche,

      Je me suis basé sur la contrib de meta-cités vu que j’avais juste besoin d’inclure des scripts (internes ou externes). Ca à l’air de fonctionner. J’ai mis dans mon fichier mes_fonctions la liste des sites pouvant être inclus.

      Merci pour vos réponses.

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Métas +

    3 décembre – 12 commentaires

    Améliorez l’indexation de vos articles dans les moteurs et leur affichage sur les réseaux sociaux grâce aux métadonnées Dublin Core, Open Graph et Twitter Card. Installation Activer le plugin dans le menu dédié. Dans le panel de configuration, (...)

  • Acces Restreint 3.0

    11 décembre 2008 – 785 commentaires

    Le plugin accès restreint permet de définir et de gérer des zones de l’espace public en accès restreint. Cette version du plugin a été redévelopée et optimisée tout spécialement pour SPIP 2.0. Il en découle une amélioration des performances sur les gros (...)

  • Compositions 2 et 3

    25 mars 2011 – 176 commentaires

    Ce plugin vous permet de définir plusieurs variantes de squelettes (nommées compositions) pour un même type d’objet SPIP. Dans l’espace privé, il est alors possible de choisir, dans un menu déroulant, la composition qu’on veut attribuer à chaque (...)

  • Configurer Sparkpost

    25 avril – 18 commentaires

    N’hésitez pas à relire le préambule de cette rubrique avant de créer un compte sur une plateforme tierce . Présentation Sparkpost est une société d’envoi de mailing https://www.sparkpost.com/ Sur les petits volumes ( <100.000 emails / mois), (...)

  • Mode portail Communiquant pour SoyezCréateurs

    29 septembre 2010 – 21 commentaires

    5e mode d’affichage de la page d’accueil, ce mode se distingue des autres par une animation proposant un fondu/enchaîné des logos des articles à la une. Zonage Configuration Zone d’entête Nom du site Slogan si plugin bandeau présent (...)

Ça spipe par là