1 Ultima modifica di Katryne (03/08/2023 10:27:19)

Discussione: Intégrer en iframe juste un div d'une page

Salut l'équipe !

Je veux intégrer dans une boîte en accueil de mon adHoc un "nuage de noms' situé dans une div en accueil public de mon site de généalogie.

Je ne sais mettre en iframe qu'une page complète.

La solution actuelle bricolée que j'ai réalisée avec peine (sans iframe) est de repiquer le code source de la div du "Cloud of names" à un moment T, de changer les 200 liens d'url relatives en url absolues et de reporter ce code en mode source dans une boîte adHoc que je mets en accueil.

Il me faut 2 h à chaque fois ...

Mes 2 sites sont sur le même hébergement.
Mon adHoc est en domaine : https://chauvigne.info/
Mon site de généalogie est en sous domaine : https://clan.chauvigne.info/

Alors, qui saurait comment mettre en iframe juste une div d'une page externe ?
Une idée ?
Merci !

2

Re: Intégrer en iframe juste un div d'une page

Bonjour Katryne,

Une remarque tout d'abord :  https://chauvigné.info/ m'affiche adresse introuvable...

Une question (sans préjuger de ce qui serait éventuellement possible par la suite) : Est-ce que sur le site https://clan.chauvigne.info/ qui n'est pas sous adHoc, le contenu de la page d'accueil t'est accessible de la même manière que le contenu d'une page adHoc ( data/pages/page_xxxfr.inc ) ou d'une boîte... sous forme d'une variable $ftxt , $BX_txt

Si c'est le cas, as-tu la possibilité d'ajouter dans le code un commentaire au début de ton div et à la fin de celui-ci pour peut-être créer un script qui récupérerait la variable de contenu et en isolerait le contenu du div entre ces deux commentaires.

Il faudrait, de plus que le script, installé sur https://chauvigné.info/ accède, en lecture au fichier de contenu de ta page sur https://clan.chauvigne.info/ afin de pouvoir le traiter. J'ignore si cela est possible, je testerai cela entre deux adHocs...

Amicalement,
Jean-Denis

3

Re: Intégrer en iframe juste un div d'une page

Coucou Jean-Denis, merci de ton attention.

Déjà, je viens de corriger le lien : un accent dans une url, c'était pas vraiment pertinent. Avec ça ce serait mieux : https://chauvigne.info/
Dans le site de généalogie, la div est affectée d'une classe : div class='surnames-cloud
Est-ce que ça suffirait pour l'appeler dans l'autre site ?

4

Re: Intégrer en iframe juste un div d'une page

Re,

Dans le site de généalogie, la div est affectée d'une classe : div class='surnames-cloud
Est-ce que ça suffirait pour l'appeler dans l'autre site ?

Peut-être... effectivement dans cette div, il n'y a que des balises span, il y a donc peut-être un moyen de rédiger un script qui récupère le contenu de div class='surnames-cloud ... à ... /div

mais, pour cela il faut d'assurer que ce contenu apparait à l'intérieur d'un fichier txt type  data/pages/page_xxxfr.inc sur https://clan.chauvigne.info/ avec le nom de la variable qui contient ce contenu.

sans certitude sur le résultat... Il faudrait que je fasse des essais... sur mes sites.

amicalement
Jean-Denis

5

Re: Intégrer en iframe juste un div d'une page

J'ai demandé à Chat GPT pour l'iframe. Il m'a donné d'abord la solution avec l'ancre. J'ai essayé et je lui ai dit que ça marche pas très bien : ça met bien le focus sur la partie à intégrer, mais on peut défiler toute la page d'origine, c'est pas top. De ce que j'ai lu ailleurs, faudrait cibler avec du css pour délimiter la "fenêtre sur l'autre monde".

J'ai dit au robot que son truc me plaisait pas, et il s'est excusé, a convenu qu'on pouvait en effet défiler le reste de la page. Et il m'a donné une solution en javascript ...

Pfff

6

Re: Intégrer en iframe juste un div d'une page

Hello Katryne,

La technique consistant à intégrer la page existante du 1er site dans un Iframe d'un second peut fonctionner, mais si on affiche ce second site sur une tablette ou un smartphone, on n'obtient plus le cadrage des noms
J'ai essayé avec succès la méthode ici : https://forums.commentcamarche.net/foru … ans-iframe mais dès que le support d'affichage change, il y a souci...

La solution à laquelle je pensais était plutôt de récupérer le code source d'une partie de la page du 1er site à partir d'un éventuel fichier texte (qu'il aurait été possible de modifier -urls, par exemple-) comme avec adHoc, ne nécessitant pas de base de données, puis d'afficher ce code sans Iframe dans une boîte.

Or manifestement le CMS utilisé pour https://clan.chauvigne.info/ (  The Next Generation of Genealogy Sitebuilding ) nécessite MySQL et donc j'ignore où et sous quelle forme est stocké le code de la page en question...
Et donc, cela me parait difficile de faire simple... et peut-être y a-t-il des solutions en javascript, mais là... c'est hors de ma portée...

amicalement
Jean-Denis

7

Re: Intégrer en iframe juste un div d'une page

Merci de tes tests ! Ce n'est pas tout à fait à ma portée. J'ai demandé au codeur du nuage de noms, mais il fait le canard, donc ça doit pas être simple.

Je vais (pffff) recommencer (pffff) ma technique à la Kat : repiquer le mod source et y changer les URL, 200 fois. pour passer du relatif à l'absolu. Mais je mettrai pas à jour tous les jours.

8

Re: Intégrer en iframe juste un div d'une page

Bonjour Katryne,

Je viens de trouver ici : https://insimule.com/conseils-seo/scraper-page-web/
des exemples de scripts en php permettant d'extraire et d'afficher le code source d'une page web. J'ai essayé rapidement la méthode décrite : Récupérer le code d'une page avec file_get_contents
Cela fonctionne, mais il resterait à traiter ce contenu : sélectionner le div en question et automatiser la réécriture des urls. Je vais essayer... Je ne te promets rien évidemment...

Je te tiens au courant...

amicalement
Jean-Denis

9

Re: Intégrer en iframe juste un div d'une page

Hello...

J'ai progressé... voir ici dans une boîte en page d'accueil : https://essai.71site.fr/index.php

C'est fonctionnel, mais il faut l'intégrer en utilisant le procédé que j'ai indiqué ici : https://adhoc.71site.fr/pages/096-adhoc … ers-fr.php
c'est à dire avec un fork de modules/boxes/lateral.inc qui permet son intégration sans Iframe (pas de hauteur à modifier, affichage sur tous supports) et donc, il faut respecter la procédure générale indiquée dans ce tutoriel...

(à mon avis... si Alessandro accepte d'intégrer ce fork, qui ne gêne en rien le fonctionnement d'adHoc, cela simplifierait les choses...)

Le style (récupéré en grande partie sur https://chauvigne.info/) certaines variables et le texte au dessus du nuage peuvent être modifiés et/ou complétés dans le fichier type boxe_nn.php (qui devra être renommé au numéro de la boîte créée). Le script, qui sélectionne l'extrait et modifie les URLs est dans un fichier intitulé codenuage.php dans lequel il est possible d'effectuer des modifications bien sûr.

Une fois en place, il n'y a plus de modifications à y apporter, le script récupère le contenu de la page d'origine et le traite... sauf, si les "balises" choisies pour délimiter l'extrait sont modifiées...

Voilà voilà... Indique-moi si je te transmets les 3 fichiers ( modules/boxes/lateral.inc ... data/boxes/special/boxe_nn.php ... data/boxes/special/codenuage.php ) pour que tu puisses tester...

Je ne pense pas proposer ce type de service sur mon site, vu la grande spécificité de celui-ci... quoique... afficher "quelques lignes" d'un site particulier pourrait être intéressant... à voir...

amicalement
JeanDenis

10

Re: Intégrer en iframe juste un div d'une page

Quand tu croches dans quelque chose, tu lâches pas, t'es pire qu'un bouledogue (c'est un compliment ...) Ce me semble parfait, Jean-Denis.  C'est encore un peu brumeux dans ma tête à cette heure de la journée, mais mon ciel va s'éclaircir et je suis prête à tester tes fichiers, si tu veux bien me les envoyer.
Un grand merci

11

Re: Intégrer en iframe juste un div d'une page

Bonjour Katryne,

Je viens de t'envoyer un message et un zip sur deux adresses de courriel...

Amuse-toi bien ... Tiens moi au courant...

amicalement
Jean-Denis

12

Re: Intégrer en iframe juste un div d'une page

Merci, Jean-Denis. Plein de mercis. J'ai bien reçu : yapuka. J'ai essayé de te répondre, puis de t'écrire un mail "indépendant" et Orange me l'a renvoyé 2 fois dans les dents  ! Pas trouvé pourquoi, je dois être fichée quelque part ?

13

Re: Intégrer en iframe juste un div d'une page

Jean-Denis, tout s'installe bien avec ton tuto et ton zip, mais je n'ai pas su compléter ce qu'il faut pour la recherche (ligne 16 de boc_nn.php (chez moi c'est la boîte 4).

Du coup, tous les liens mènent à la page de recherche de l'adHoc. (chauvigne.info suivi de la personnalisation, au lieu de clan.chauvigne.info suivi de la personnalisation. je ne comprends pas pourquoi les liens atterrissent sur l'adHoc et pas sur le TNG. J'ai oublié quelque chose ?

Voilà ce que j'ai configuré dans la boite 4 :

// Variables à régler
$url = 'https://clan.chauvigne.info/'; // site de récupération 
$debut = '<!-- END Cloud of Names Mod MichelKirsch !-->'; // "balise" de début de l'extraction
$fin = '</div>'; // "balise" de fin de l'extraction
$lien1 = 'https://clan.chauvigne.info/surnames.php'; // lien à modifier en ajoutant l'url absolue
$cible1 = 'https://clan.chauvigne.info/surnames.php" target="_blank" rel="noopener'; // lien à modifier en ajoutant la cible et le contexte
$lien2 = 'https://clan.chauvigne.info/search.php'; // lien à modifier en ajoutant l'url absolue
$label2 = 'label'; //repère pour lien à modifier
$cible2 = 'https://clan.chauvigne.info/ target="_blank" rel="noopener" label'; //lien à modifier en ajoutant la cible et le contexte

Sur mon adHoc, j'ai mis après l'édito, d'abord le résultat de ton script, puis ce que j'avais bricolé en copiant le code source du site de généalogie.

14 Ultima modifica di JeanDenis (06/08/2023 16:32:50)

Re: Intégrer en iframe juste un div d'une page

Hello,

Dans ton fichier data/boxes/special/boxe_04.php (puis que tu installes le service dans la boîte n°4 ) tu dois laisser ces valeurs d'origine :

$url = 'https://clan.chauvigne.info/'; // site de récupération 
$debut = '<!-- END Cloud of Names Mod MichelKirsch !-->'; // "balise" de début de l'extraction
$fin = '</div>'; // "balise" de fin de l'extraction
$lien1 = 'surnames.php'; // lien à modifier en ajoutant l'url absolue
$cible1 = 'surnames.php" target="_blank" rel="noopener'; // lien à modifier en ajoutant la cible et le contexte
$lien2 = 'search.php'; // lien à modifier en ajoutant l'url absolue
$label2 = 'label'; //repère pour lien à modifier
$cible2 = 'target="_blank" rel="noopener" label'; //lien à modifier en ajoutant la cible et le contexte

Ce sont celles qui fonctionnent actuellement.
Par exemple le script dans data/boxes/special/codenuage.php effectue cette opération

$extrait = str_replace($lien1, $url.$lien1, $extrait); // Corrige le $lien1 en ajoutant l'url absolue

et donc remplace le $lien1 ( surnames.php ) par  $url.$lien1 ( https://clan.chauvigne.info/surnames.php ) dans tout l'extrait...

De la même manière

$extrait = str_replace($lien2, $url.$lien2, $extrait); // Corrige le $lien2 en ajoutant l'url absolue

remplace le $lien2 ( search.php ) par  $url.$lien2 ( https://clan.chauvigne.info/search.php ) dans tout l'extrait...

Dans le code le . (point) sert à concaténer (assembler) les deux variables.

les autres opérations servent à ajouter target="_blank" rel="noopener" aux bons endroits dans tous les liens

C'est sans doute les commentaires que j'ai laissés qui sont peu clairs...
Sauf exception, le gros de ton travail sera d'adapter le style et de placer où tu le souhaites le petit texte introductif (directement dans la boîte est sans doute le plus simple...)

amicalement
Jean-Denis

15

Re: Intégrer en iframe juste un div d'une page

Ah ça alors, mais ça marche du feu de dieu. Sans rien faire d'autre que renommer la boîte !
J'avais pris tes commentaires (c'est bien de commenter le code) pour des instructions. Je suis vraiment une bécassine, et une bécassine reconnaissante.

Merci merci merci, Jean-Denis

16

Re: Intégrer en iframe juste un div d'une page

Comment je fais pour te référencer ? Je le vois pas dans le code source.

17

Re: Intégrer en iframe juste un div d'une page

Bonjour Katryne,

Il n'y a pas vraiment de raison de me référencer pour ce code...
Mais si tu souhaites que son origine apparaisse dans le code source, tu peux placer ceci, par exemple

echo '
<!-- Extraction "Nuage de Noms" - Jean-Denis https://adhoc.71site.fr 2023 -->
<!-- à partir de cette aide https://insimule.com/conseils-seo/scraper-page-web/ -->
';

juste avant la balise de fermeture du php ?> dans data/boxes/special/codenuage.php

Merci à toi,
amicalement
Jean-Denis

18

Re: Intégrer en iframe juste un div d'une page

Jean-Denis help oskour mayday mayday :  et soudain, ça ne marche plus : https://chauvigne.info/ : le contenu de la boîte 4 ne s'affiche plus après le texte de présentation.
J'ai mis le mod debug, mais il ne dit rien.

J'ai d'abord restauré les fichiers de ton zip où j'avais modifié du texte et ajouté ta référence d'auteur, mais c'est toujours en vrac.

Comme j'ai modifié ma page d'accueil sur le site de généalogie, je l'ai remise comme avant, mais ça n'a rien changé non plus. Donc je l'ai remise à la nouvelle présentation.

Je t'écris sur le forum, parce que ton Orange me renvoie mes mails sans te les distribuer.

Que dois-je vérifier ?

19

Re: Intégrer en iframe juste un div d'une page

Bonjour Katryne,

Une erreur de syntaxe quelque part... ??

Essaie de placer les fichiers de ce zip :
https://www.71site.fr/files/nuage.zip

en renommant le fichier pour ton utilisation... data/boxes/special/boxe_04.php

pour voir...

Si cela ne donne rien, désactive ta boîte 4, et je tâcherai de trouver d'où cela peut provenir ( mes deux tests en ligne avec php7 et php8 fonctionnent tous les deux normalement...)

amicalement
Jean-Denis

20

Re: Intégrer en iframe juste un div d'une page

Merci, mais oui, mais non : ça veut pas !

Je  désactive la boîte 4 provisoirement.
Si tu veux les clefs, tu dis.

Merci de ta patience

21

Re: Intégrer en iframe juste un div d'une page

Hello,

Merci de ta confiance, mais je ne suis pas très sûr de vouloir utiliser ton accès au site et au FTP...

De ce que j'avais vu dans le code source, il semble que le fichier data/boxes/special/boxe_04.php était bien appelé et affiché, mais que l'extraction dans le fichier codenuage.php n'était pas correcte.
Cela désorganisait la page car il manquait donc deux /div...

Je suis très surpris car, sur https://essai.71site.fr/ tout se passe normalement.

Essaie de placer cette boite 4 ailleurs dans ta page pour voir (en bas de la colonne de droite par exemple) (encore que je n'y crois pas trop... j'avais fait des tests dans pleins d'endroits différents...)

Désolé...

amicalement
Jean-Denis

22

Re: Intégrer en iframe juste un div d'une page

Sois pas désolé Jean-Denis.

Mon adHoc a besoin d'une révision. Il y a certaines pages du Thème (default, par ex) que je ne peux plus configurer. J'ai une page blanche au lieu du tableau.

Mon site est bien forké et certains forks ne doivent pas supporter la dernière version du php8. Je reviendrai te solliciter quand j'aurais mis un peu d'ordre.

Merci de ta patience et de ton temps et de ton expertise.

23 Ultima modifica di JeanDenis (12/08/2023 08:01:27)

Re: Intégrer en iframe juste un div d'une page

Bonjour Katryne,

En tout cas, à mon avis, il n'est pas nécessaire de passer 2 heures à copier ce nuage et de toute façon, un Iframe n'est pas nécessaire...... Il te suffit dans une boîte ordinaire, de placer le texte introductif, puis de copier le code source du nuage de https://clan.chauvigne.info/ (à partir de [div class="tblock"]  jusqu'à [/div][/div])
de le coller dans un logiciel tel que notepad++ ou notepadqq pour linux... ou équivalent
et de faire pour l'ensemble du texte 3 remplacements à la volée (2 minutes montre en main...)

surnames.php

par

https://clan.chauvigne.info/surnames.php" target="_blank" rel="noopener

...

search.php

par

https://clan.chauvigne.info/search.php

et

label-bulle

par

target="_blank" rel="noopener" label-bulle

et de copier-coller le résultat dans le code-source de ta boîte...
Puisque le style du nuage est déjà dans le site https://chauvigne.info/ dans style.css, ta boîte s'affichera correctement...

amicalement
Jean-Denis

24

Re: Intégrer en iframe juste un div d'une page

Jean-Denis : je me demande si l'arrêt brutal du fonctionnement de ton script ne viendrait pas de la politique anti-spam/anti-rip etc.. mise en place sur le site de généalogie : mon plugin Bot-trap inscrit automatiquement en deny from dans le htaccess les connexions qu'il estime abusives.

Je vais faire un test en désactivant tous les anti-nuisibles et voir si ça repart comme en 14.

25

Re: Intégrer en iframe juste un div d'une page

EUREKA, c'était bien ça : c'est de nouveau affiché.

Là, j'ai juste nettoyé un peu le htaccess de quelques IP qui étaient en Deny from. Normalement, le Bot-Trap doit me prévenir quand il met une IP au pilori, mais il m'écrit pas souvent, ce n'est pas un fidèle épistolier.

J'ai remis les plugins Rip prevention et Bot-trap.

Et si ya de nouveau un souci, je sais maintenant où ça se passe.

Pardon d'avoir douté. Même si j'ai jamais douté de toi : je savais bien que c'était un truc de mon côté.

Merci, Jean-Denis