Inclusion dans des IFrames

Consultez la formation au REFERENCEMENT naturel Google de WebRankInfo / Ranking Metrics

Phoenix35
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 6
Inscription: 4 Nov 2003

Inclusion dans des IFrames

Message le Mar Nov 04, 2003 9:03

Je vous explique mon petit soucis
J’ai trois pages index.html, sommaire.html et contenu.html

Dans index.html, j’ai une iframe nommée « principal » et cette iframe appelle la page sommaire nommée sommaire.html Sur cette page sommaire, y'a un lien qui pointe vers contenu.html avec un target dans l'iframe, càd, "principal".. et donc au clkc la page contenu.html s'ouvre bien dans l'iframe ...... jusqu'à la pas de soucis !!

Comme je ne veux pas que les pages de mon site s'ouvre individuellement lorsque l'on tape leur url directe, j'ai mis sur la page contenu html ce javascript
<SCRIPT LANGUAGE="JavaScript">
if (parent.frames.length < 1)
{
document.location.href = 'http://www.xxxxx.com';
}
</SCRIPT>

qui renvoie le visiteur à ma page d'index de site si l'url directe de contenu.html est tapée dans le navigateur

L'inconvénient c'est que le visiteur doit retrouver sur le site la page qu'il a demandée en cliquant sur son lien direct sur un moteur de recherche par exemple.... et ca c'est pas évident !

Alors mon pb a été de chercher un script qui forcerait l'ouverture de la page contenu html DANS l'iframe de la page index.html afin que le visiteur est par la suite la possibilité de naviguer sur tout le site

Tout y est passé ALL HTML, éditeur javascrpt, je pense que j'ai tout essayé !! Mais rien ne marche, irrémédiablement j'ai la page index.html avec la page sommaire.html dans l'iframe

Bon !!
J'ai essayé de trouver et tester plusieurs script qui me permettrait

Je veux peut etre faire trop compliqué, alors je m'adresse aux pros de l'html... car la j'ai mal à la tete ;-)

Merci pour votre aide !!


George Abitbol
WRInaute passionné
WRInaute passionné
 
Messages: 1923
Inscription: 6 Juin 2003

Message le Mar Nov 04, 2003 9:17

Lorsque tu rediriges ton visiteur, il faut que tu passes dans l'URL un paramètre qui va te permettre de savoir quel fichier inclure dans l'iframe.

Exemple :

Code: Tout sélectionner
<script type="text/javascript">
<!--
if (parent.frames.length < 1) {
   window.location.href = 'http://www.xxxxx.com/index.html?i=contenu';
}
//-->
</script>


Bien sûr, ça ne suffit pas. Il faut maintenant :

- récupérer le paramètre (c'est expliqué ici)
- l'utiliser pour charger le contenu de l'iframe. Ceci devrait suffire :

Code: Tout sélectionner
window.principal.location.href = leParametre + '.html';


(à exécuter au chargement de la page, et après la récupération du paramètre, bien sûr)

:!: Il faudra quand même que tu vérifies que le paramètre correspond bien à un fichier de ton site, sinon n'importe qui pourrait écrire index.html?i=h**p://www.blabla.com/nimportequoi et inclure n'importe quel fichier dans ton iframe :!:

Fred

<edit>Au passage, note que j'ai fait quelques modifications à ton code javascript afin de le rendre correct</edit>

Phoenix35
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 6
Inscription: 4 Nov 2003

Message le Mar Nov 04, 2003 9:48

Bon si je comprend le principe !! J'ai du mal effectivement à saisir le fonctionnement, je suis plus a l'aise en php qu'en Javascript ;-(

Pour le code de récupération, je pense que tu parles de ce script

<script type="text/javascript" language="javascript">
<!-- Début
// ***************************************
// À MODIFIER - AJOUTER DES PARAMÈTRES ICI
// ***************************************
// Créer les variables avec leur contenu
// basé sur la requête:
// ?nom=...&prenom=...&email=...
nom = ParamValeur("nom");
prenom = ParamValeur("prenom");
email = ParamValeur("email");
// End -->
</script>

Que je modifie avec mes parametres !!
Bon ca c'est ok maintenant le prblème est de comprendre et de savoir quelle code a désormais mon iframe, je pense qu'il faut faire une relation avec !!


George Abitbol
WRInaute passionné
WRInaute passionné
 
Messages: 1923
Inscription: 6 Juin 2003

Message le Mar Nov 04, 2003 10:03

Phoenix35 a écrit:Bon ca c'est ok maintenant le prblème est de comprendre et de savoir quelle code a désormais mon iframe, je pense qu'il faut faire une relation avec !!


Je ne comprends pas trop de quoi tu parles, là.
Une fois que tu as récupéré le paramètre (dans mon exemple, c'était 'contenu'), il suffit je pense de faire window.principal.location.href = leParametre + '.html';
Le paramètre contenant 'contenu', ça chargera bien le fichier contenu.html dans l'iframe principal.

Cela dit, si tu préfères (et je te comprends), tu peux récupérer le paramètre en PHP, et l'insérer dans la ligne ci-dessus : window.principal.location.href = '<?php echo $_GET['i']; ?>.html';

Fred

Phoenix35
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 6
Inscription: 4 Nov 2003

Message le Mar Nov 04, 2003 10:54

Ah d'accord !! Oui j'ai pigé !!
;-)
bon je vais essayer cela de suite !!
Par contre une dernière petite question, qui concerne php qui rejoint un peu le sujet de mon post

Dans une page xxx.php3, j'ai un
<? include('bandeau.php3'); ?>

Je voudrais maintenant éviter, par exemple, si Google indexe le fichier bandeau.php3, que le visiteur ait accès à ce fichier.
En fait, je voudrais que si l'on appelle le fichier bandeau php3, que ce soit la page xxx.php3 qui s'ouvre
On peut aussi penser à un Disallow dans un fichier ROBOTS.TXT ?
Quelle est la solution la plus simple à ton avis ?

mayavega
WRInaute discret
WRInaute discret
 
Messages: 59
Inscription: 31 Oct 2003

vachement bien

Message le Mar Nov 04, 2003 11:15

vachement interessante cette discussion, pour mon site, que je n'ai pas encore référencé, il va surement falloir que je le fasse de la même manière puisse qu'il possèe aussi une iframe principale de navigation, et que je veux la même chose...

cela dit... (shame on me) j'ai pas tout compris...
surtout au i=contenu ("i" c quoi, "contenu" ça correspond à koi ?)et le document.lenght...

oui oki je sort...
:roll:
et je vais sur un site de php et de javascript... :idea:
bon ça va... j'aurais bien aimé que ça soit tou maché précuit et que ça tombe du ciel... qui ne tente rien n'a rien.


George Abitbol
WRInaute passionné
WRInaute passionné
 
Messages: 1923
Inscription: 6 Juin 2003

Message le Mar Nov 04, 2003 11:17

Ben déjà, comment Google ou un internaute pourrait-il connaître ton fichier bandeau.php3 ?
Si tu n'as aucun lien direct vers ce fichier, il ne pourra pas être indexé. Et à moins d'être devin, aucun internaute ne pourra deviner que tu as un fichier qui s'appelle bandeau.php3.

Mais bon, au cas où, ce que tu peux faire, c'est avant de faire ton include(), tu définis une variable (genre $inc_bandeau) et dans bandeau.php3, tu testes l'existence et la valeur de cette variable. Si elle n'existe pas ou si elle n'a pas la bonne valeur, tu fais un header() vers le fichier global.

Fred


George Abitbol
WRInaute passionné
WRInaute passionné
 
Messages: 1923
Inscription: 6 Juin 2003

Re: vachement bien

Message le Mar Nov 04, 2003 11:33

mayavega a écrit:cela dit... (shame on me) j'ai pas tout compris...
surtout au i=contenu ("i" c quoi, "contenu" ça correspond à koi ?)et le document.lenght...


Alors, dans l'ordre :

- i c'est le nom que je décide arbitrairement de donner au paramètre. J'aurais pu choisir zgru ou pouf, mais j'ai pris i comme iframe.
- contenu, c'est la valeur du paramètre. Ici, c'est tout simplement le nom du fichier à inclure, mais sans l'extension. Ce n'est pas la seule façon de faire. On pourrait envisager de donner une valeur numérique à ce paramètre, et ensuite de faire la correspondance entre le nombre et le fichier à inclure (genre 1 c'est pour le fichier contenu.html, 2 ce serait pour le fichier trucbidule.html, etc.)
- document.length... ben ça y est nulle part ;) Tu dois vouloir parler de parent.frames.length. Explications : parent est une propriété de l' objet window, elle désigne la fenêtre parente de la fenêtre à laquelle on l'applique (parente = celle hierarchiquement supérieure). Si tu es dans une frame d'un jeu de frames, parent désigne le frameset situé juste au-dessus dans la hierarchie
frames est un sous-objet de l'objet window. C'est un tableau qui contient toutes les frames de l'objet window auquel tu l'appliques (parent.frames : toutes les frames de la fenêtre parente ; trucbidule.frames : toutes les frames de la fenêtre nommée trucbidule, self.frames : les frames de la fenêtre en cours, etc.).
Et enfin length est une propriété qui donne la longueur du tableau auquel elle est appliquée.
Donc pour résumer, parent.frames.length signifie la longueur (le nombre d'éléments, donc) du tableau de frames de la fenêtre parente. Si cette longueur est est inférieure à 1, c'est que la page n'est pas contenue dans un jeu de frames, et il faut donc faire le traitement (redirection).

Ce sont des explications sommaires, je te conseille effectivement de consulter les docs Javascript et PHP pour en savoir plus.

Docs JS :

http://devedge.netscape.com/central/javascript/
http://selfhtml.selfhtml.com.fr/javascript/index.htm
http://www.devguru.com/Technologies/ecm ... intro.html

Doc officielle PHP en français :

http://www.php.net/manual/fr/

Fred

Phoenix35
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 6
Inscription: 4 Nov 2003

Message le Mar Nov 04, 2003 14:36

Bon !! Avec toute la meilleure volonté du monde, je ne réussis pas a ouvrir la page dans l'iframe....
Pourtant il me semble avoir bien suivi tes instructions juge par toi meme !
-Fichier Index.php
<html>
<head>
<title>Page d'index</title>
</head>
<script type="text/javascript" language="javascript">
<!-- Début
i = ParamValeur("html");
window.principal.location.href = i + '.html';
// End -->
</script>
<body>
<p>Page d'index</p>
<p<iframe width="99%" height="1300" src="mon_fichier_defaut" frameborder="0" vspace=0 scrolling=no name=principal></iframe></p>
</body>
</html>

Eensuite j'ai ma page qui souvre dans mon iframe par défaut indexdroit.php3 (Fichier par défaut)
<html>

<head>
<title>Page d</title>
</head>
<body>
<p>page index droit</p>
<p>&</p>
</body>
</html>

Et enfin la page1.php
<html>

<head>
<title>Page d</title>
<script type="text/javascript">
<!--
if (parent.frames.length < 1) {
window.location.href = 'http://www.xxx.com/index.php?i=page1';
}
//-->
</script>
</head>
<body>
<p>page autre page</p>
<p>&</p>
</body>
</html>

Et bien j'ai beau appeler la page1.php directement dans la navigateur, l'url indique alors http://www.xxx.com/index.php?i=page1

Ce qui me semble correcte pourtant !!
Mais c'est toujours la page par défaut qui est lue dans l'iframe !!
Je pense que je ne dois aps être loin mais la !! Pfffff !! Mal de crane !!
Si tu peux m'aider une dernière fois George ;-)


George Abitbol
WRInaute passionné
WRInaute passionné
 
Messages: 1923
Inscription: 6 Juin 2003

Message le Mar Nov 04, 2003 14:51

Plusieurs erreurs :

- Tu as oublié la déclaration de la fonction ParamValeur(), lorsque tu as copié le code sur le site donné plus haut.
- Lorsque tu appelles le chargement du fichier, la page n'est pas complètement chargée, donc l'iframe n'existe pas encore.
- Tu utilises .html, dans le code, alors que la page a une extension .php

Tu peux faire comme ça :

Fichier index.php :

Code: Tout sélectionner
<html>
<head>
<title>Page d'index</title>
</head>
<body onload="window.principal.location.href = '<?php echo $_GET['i']; ?>.php';">
<p>Page d'index</p>
<iframe width="99%" height="1300" src="indexdroit.php" frameborder="0" vspace=0 scrolling=no name=principal></iframe>
</body>
</html>


J'ai zappé la fonction Javascript, puisque tu as la possibilté de récupérer le paramètre en PHP.
Si tu utilises une version de PHP antérieure à la 4.1.0, utilise $HTTP_GET_VARS['i'] à la plage de $_GET['i']. Ou alors passe à une version plus récente ;)

Fred

Phoenix35
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 6
Inscription: 4 Nov 2003

Message le Mar Nov 04, 2003 15:45

Et ca marche nickel en plus !!
Et bien je te remercie beaucoup George
Ton aide a été très précieuse !!

Bonne contnuation à toi et merci ;-)

mayavega
WRInaute discret
WRInaute discret
 
Messages: 59
Inscription: 31 Oct 2003

Message le Mar Nov 04, 2003 17:15

merci george ! :oops:


Si vous avez aimé cette discussion, partagez-la sur vos réseaux sociaux préférés :

Formation recommandée sur ce thème :

Formation REFERENCEMENT naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 1 invité