[RÉSOLU] Afficher contenu page site 1 dans page site 2

nicomaxnicomax Member
mai 2017 modifié dans Entraide
Salutatous,

J'ai 2 sites PluXml différents chez 2 hébergeurs différents.

Est-il possible d'afficher le contenu d'une page du site 1 dans une page du site 2 ?

J'ai pensé à l'iframe que j'ai donc testé ; ça fonctionne mais ça m'affiche le contenu de la page avec tout le reste (header + sidebar + footer).
Je souhaiterais sans les header + sidebar + footer

Merci de vos lumières.

Nico

Réponses

  • PierrePierre Member
    Il y a toujours l'option du "web scraping" pour n'extraire que la partie contenue entre deux bornes. Ça donne surtout l'avantage de ne pas utiliser le iframe qui est à proscrire à chaque occasion possible.
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    mai 2017 modifié
    Utiliser un "iframe" est une bonne idée. C'est fait pour cela : afficher la page d'un site distant.

    Pour ne pas afficher menu, sidebar et pied de page, ou plutôt cacher, la façon la plus élégante est d'ajouter une class à l'endroit qui va bien sur la page distante pour cacher le superflu quand elle est affichée dans un "iframe".

    On fait les modifs sur le site distant, ici dénommée site1
    Pour détecter l'iframe, on rajoute une touche de javascript dans le template footer.php du théme utilisé et appliquer la class "remote-url" qui va bien au bon endroit.
    Il y a un petit souci : footer.php n'a pas la même structure entre les versions 5.5 et 5.6 de PluXml. il faut donc prendre en compte cette évolution.
    Placer dans footer.php juste avant la balise </body> :
    [== JavaScript ==]
    <script type="text/javascript">
    	if(window.top !== window.self) {
    		var container = document.querySelector('body > .container');
    		if(container != null) {
    			// PluXml version 5.5
    			container.classList.add('remote-url');
    		} else {
    			// PluXml version 5.6
    			document.body.classList.add('remote-url');
    		}
    	}
    </script>
    
    Ensuite ajouter à la fin de la feuille de style theme.css, les règles suivantes :
    [== CSS ==]
    /* ********** remote-url ************** */
    .remote-url > nav,
    .remote-url > header,
    .remote-url aside,
    .remote-url > footer {
    	display: none !important;
    }
    .remote-url .col.med-8, .gallery.med-8 li {
    	width: 100% !important;
    }
    
    

    Et voilà !

    Petite démo avec un site chez Free qui affiche une page chez OVH:
    http://jeveuxpartir.free.fr/pluxml/index.php?static29/remote-page
    http://kazimentou.lan/article8/modele-pour-galerie-photos

    P.S.: Je voulais utiliser frameElement dans le javascript mais cela bugue avec Firefox
  • nicomaxnicomax Member
    mai 2017 modifié
    Merci pour vos réponses.

    Bazooka,

    J'ai fait la modif mais ça ne fonctionne pas chez moi :(

    Une info que j'avais omise :
    mon site 1 est en version PluXml 5.1.7 et mon site 2 en version PluXml 5.5

    J'ai pourtant bien placé le javascript dans le fichier footer.php de mon site 1 (juste avant la balise </body>),
    puis le css dans le fichier style.css de mon site 1 (tout à la fin)

    Et voici comment j'insère l'iframe dans mon site 2 :
    [== Indéfini ==]
    <p><iframe frameborder="0" height="1000" marginheight="0" marginwidth="0" src="http://www.site_1.com" width="760">Chargement en cours...</iframe></p>
    
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    mai 2017 modifié
    Oups, je n'avais pas imaginé qu'on pouvait utiliser une version aussi ancienne de PluXml sortie en janvier 2013.
    J'ai craint pour toi que Stéphane ne l'ai plus en stock. Mais si.
    Pour rester dans l'actualité t'es toujours sous Windows XP ?

    Cette antique version nécessite bien sûr une adaptation. Oublie les modifs précèdentes et applique les suivantes :
    [== JavaScript ==]
    <script type="text/javascript">
    	if(window.top !== window.self) {
    		var page = document.getElementById('page');
    		if(page != null) {
    			// PluXml version 5.1.7
    			page.classList.add('remote-url');
    		} else {
    			console.log('Element #page non trouvé');
    		}
    	}
    </script>
    
    [== CSS ==]
    .remote-url .header-wrapper,
    .remote-url #footer,
    .remote-url #sidebar {
        display: none;
    }
    
    body.fixed .remote-url .page-content {
        width: initial;
    }
    body.fixed .remote-url #primary-content {
        width: 100%;
    }
    

    Il y a encore quelques petites retouches à faire mais il faut déjà appliquer les modifs précèdentes. Il te faut utiliiser l'inspecteur de Firefox ou de Chrome (touche F12) pour finir.

    Je t'encourage vivement à faire une sauvegarde de ton site actuel et d'appliquer les mises à jour une à une jusqu'à au moins la version 5.5 de PluXml en appliquant les correctifs nécessaires à chaque étape.

    Depuis 2013, les tablettes et les smartphones sont de plus en plus utilisés et ton site n'est pas tellement responsive design.
  • nicomaxnicomax Member
    C'est génial ça fonctionne parfaitement :cool:
    Merci beaucoup !
    Nico
  • nicomaxnicomax Member
    mai 2017 modifié
    Oups souci !!!

    Mon hébergeur vient de passer l'url de mon site 2 en httpS (celui qui contient l'iframe et qui affiche la page du site 1).

    Du coup le contenu de l'iframe a disparu ! 8.(
    Si je réaffiche le site en http tout redevient normal.

    Y aurait-il un bout de code à rajouter ?
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Clairement non !
    Quand on établit la connexion en https vers le site 2, la connexion est cryptée et donc sécurisée.
    Quand le navigateur charge le contenu de l'iframe en http depuis le site 1, il voit que cette connexion n'est plus sécurisée,
    On démarre donc avec une connexion sécurisée et on finit avec une connexion non sécurisée. Et cela le navigateur ne l'accepte pas.
    Donc c'est tout https ou tout http.
    En sachant qu'à terme c'est https qui sera imposé.

    Le mieux est de rapatrier le contenu du site 1 sur le site 2 dans un dossier spécifique. Il reste après à faire pointer le nom de domaine du site 1 sur le nouvel emplacement dans l'hébergeur du site 2. Avec économie de frais d'hébergement à la clé.

    Quels sont ces hébergeurs ?
  • nicomaxnicomax Member
    Effectivement, d'après ce que j'ai pu glaner ici et là sur le web, c'est tout en https ou tout en http mais pas de mix !

    Le site 1 est chez Nuxit et le site 2 est chez 1&1

    Peut-être que je peux demander à Nuxit de passer le site 1 en https, comme ça plus de problème.

    Par contre ensuite ça risque d'être galère question référencement du site 1, puisque le site est référencé sur http et non pas sur https... ou alors faire une redirection de toutes les pages http vers https !!??
  • bazooka07bazooka07 PluXml Lead Developer, Moderator
    Google réclame depuis un moment que tous les sites Internet basculent en https.
    Je pense que leurs ingéneiurs ont fait le nécessaire pour ne pas perdre tous les référencements au moment de basculer. C'est quand même leurs gagne-pains.

    Pour info
  • nicomaxnicomax Member
    Ok merci pour ces infos Bazzoka :cool:
Connectez-vous ou Inscrivez-vous pour répondre.