pallier de l'injection de contenus en JS (innerhtml) par une div secondaire masquée...

  • Auteur de la discussion Auteur de la discussion CW76
  • Date de début Date de début
Nouveau WRInaute
Bonjour à tous !

Le sujet qui m'amène va sûrement faire bondir plus d'un puriste, mais en gros voilà la situation :

J'ai été dans l'obligation de mettre beaucoup de Javascript dans la page d'accueil du site, car le client souhaite une navigation fluide, avec scrolling en douceur du menu vers le contenu choisi, sans rechargement total de la page pour assurer un effet de fluidité et sans rupture (je n'ai pas utilisé de iframe).
Du coup, au clic sur un lien, une fonction JS est appelée pour injecter le contenu (avec innerhtml) qui va bien dans la div qui va bien : du genre insereContenu('page1.php',div_contenu'). Et par la même technique je modifie également à la volée certains habillages css de la page, car chaque rubrique de menu à son propre univers graphique et ses propres codes de couleurs.
Donc en fait, j'ai bien autant de pages que de liens/catégories de menu (ces fichiers php pouvant avoir des paramètres GET), sauf que ces fichiers php sont composés uniquement du contenu de la div_contenu, et ils ne sont pas affichés directement (on ne lit pas leur url dans la barre d'adresse) mais insérés à la volée sur clic d'un lien.
C'est vrai que le résultat produit est bluffant (pas d'impression de rechargement de page, et en plus l'inclusion de contenu vraiment instantanée), sauf que le pb va se poser au niveau du référencement :
- en gros, il n'y a que la page index.php qui soit visible, tout au long de la navigation dans le site (c'est d'ailleurs la seule page toujours visible dans la barre d'adresse)
- le seul contenu référençable est l'édito de la page d'accueil, càd le contenu du fichier accueil.php injecté dans la div_contenu lors du chargement de la page index.php
- et en effet, quand on clique sur un lien de menu et que le contenu adéquat est injecté à la volée, ce contenu n'apparaît pas lorsqu'on affiche le code-source de la page dans le navigateur, et seul le contenu "édito accueil" chargé par défaut lors du chargement de la page d'accueil reste présent dans le code-source.

J'ai donc bien pensé, pour que le contenu de tout le site puisse être indexé, à insérer une div avec pour propriété css {display:none;}, qui recevrait le contenu d'une page "global.php" et qui serait lui aussi chargé/injecté dès le chargement de la page d'accueil du site. Cette page global.php serait un condensé pertinent, hiérarchisé et constamment à jour (puisque les contenus sont stockés dans une BDD Mysql) de toutes les catégories/menu du site, et aurait donc un contenu changeant et riche.

Sauf que ce genre de dissimulation de div pourrait blacklister le site, ou du moins avoir l'effet opposé à celui recherché en matière d'indexation.

Alors que pensez-vous de cette solution ? Après tout, ce n'est pas une div toute bête et figée avec une tripotée de mots-clés, c'est plutôt une div à contenu actualisé et dont les termes reflètent bien le contenu et la vocation du site, et en rapport avec les intitulés des menus hierarchisés (ul/li). Le pb, c'est où s'arrête l'optimisation et où commence le spamdexing selon les robots???

Merci beaucoup par avance pour vos retours d'expérience
@+
 
WRInaute accro
CW76 a dit:
J'ai donc bien pensé, pour que le contenu de tout le site puisse être indexé, à insérer une div avec pour propriété css {display:none;}, qui recevrait le contenu d'une page "global.php" et qui serait lui aussi chargé/injecté dès le chargement de la page d'accueil du site.

Oulala bien compliqué ... donc mauvaise idée.

spout te parle de deux version de tes contenus (en fonction de qui le demande toi via ajax ou qqun d'autre) c'est le concept le plus simple et le plus sur.

Perso j'ajouterai qu'une réécriture d'url qui renvoie tout sur ton script d'accueil avec un paramètre qui défini le contenu demandé permettrait de servir d'entré le contenu demandé et de profiter de la fonctionnalité de fluidité mise en oeuvre via javascript / ajax tout en offrant une vue différente par page donc en permettant de tout indexer.
 
Nouveau WRInaute
Merci Zeb et Spout pour vos pistes !
Je me suis documenté sur cette technique AJAX, mais celà reste assez obscur pour moi, et ça me prendrait trop de temps à maîtriser le sujet. Mais c'est super intéressant, et je garde ce concept dans un coin de ma petite tête pour l'approfondir plus tard, à mes heures perdues...
J'abandonne quand même l'idée de cette div cachée, et je vais plutôt m'orienter vers un "clonage" de mes fragments de fichiers en pages complètes et accessibles avec entête, habillage etc., lesquelles seront soumises dans le sitemap du site.
Ces pages étant dynamiques, je n'ai plus à m'occuper ni des fragments ni des pages complètes une fois qu'elles sont faites. Le seul pb sera en cas de modification de la structure du site, auquel cas il faudra penser à modifier à la fois le fichier-fragment et son clone.
Que pensez-vous de cette alternative au niveau du référencement ?

merci @+
 
WRInaute accro
C'est pourtant plus simple que de bidouiller comme tu veux faire avec 2 version différentes des contenus, j'ai fait une démo:
http://goo.gl/V0zdq
A essayer avec et sans JS activé.

Tout le code source est disponible ici (*.phps): http://goo.gl/O905q

Il y a moyen de changer l'URL avec un #hash dans l'URL avec jQuery BBQ: http://benalman.com/projects/jquery-bbq-plugin/
Afin que l'historique du navigateur fonctionne toujours et que les URL soient bookmarkables.
 
Discussions similaires
Haut