Utilisation des Liens et Ancres Intrapage

Contribution des utilisateurs
Avatar de l’utilisateur
F2lt
Membre
Messages : 164
Inscription : 26 Mai 2011 09:24
Localisation : L'Isle sur Sorgue - Vaucluse (84)

Utilisation des Liens et Ancres Intrapage

Messagepar F2lt » 15 Août 2011 10:45

Bonjour,

Tous les liens de généré par Contao s'appuie sur la balise <base> ce qui a pour effet de "perturber" la façon classique de définir des liens dans une même page : :o

Code : Tout sélectionner

<a href="#ancre"> ...</a>
  => URIdeBase + #ancre
  =>  lien vers la "page d'accueil"

On peut envisager d'affiner les recommandations du W3C en précisant que dans le cas d'une URI relative constituée seulement d'un ancre il ne faut pas ajouter l'URI de base si elle existe et attendre les modifications des navigateurs ce qui peut prendre un "certain temps". :lol:

On peut aussi choisir de modifier le système de génération des liens de Contao pour ne plus utiliser la balise <base> ce qui va aussi demander un "certain temps". :?

La solution la plus raisonnable est d'utiliser les possibilités offertes par les balises d'insertion de Contao et plus particulièrement la balise {{env::request}} :

Code : Tout sélectionner

<a href="{{env::request}}#ancre"> ...</a>
  => URIdeBase + URIRelativePage + #ancre
  => Positionnement sur l'ancre dans la page actuelle


Bon ancrage :)
Je soutiens Mira Europe qui éduque et remet gratuitement des chiens guides d'aveugles aux enfants aveugles : http://www.miraeurope.org/

FiX'
Membre
Messages : 399
Inscription : 02 Jan 2009 01:04

Re: Utilisation des Liens et Ancres Intrapage

Messagepar FiX' » 06 Oct 2011 16:57

C'est vrai que cela est un problème.

J'ai un bug sur un site d'un de mes clients.

Il y a un carrousel en .js (mootools) qui fonctionne sur le principe de liens avec des ancres vides :

Code : Tout sélectionner

<div class="control">
<a class="prev" title="Previous" href="#">prev</a>
<a class="next" title="Next" href="#">next</a>
</div>

Le soucis, c'est que lorsque le visiteur clique trop de fois sur le lien, Contao le redirige vers la racine du site.

Avec ta solution, cela a l'avantage d'au moins laisser le surfeur sur la page en cours de visite... mais fait redémarrer le carrousel au début. Il n'a pas moyen de désactiver l'utilisation de la balise Base ?

Il est pas possible non plus de modifier le contenu de la balise Base dans la configuration de Contao... par exemple pour y ajouter les www. ?


Merci d'avance pour tes infos

A+

Avatar de l’utilisateur
F2lt
Membre
Messages : 164
Inscription : 26 Mai 2011 09:24
Localisation : L'Isle sur Sorgue - Vaucluse (84)

Re: Utilisation des Liens et Ancres Intrapage

Messagepar F2lt » 07 Oct 2011 10:02

Le contenu de la balise <base> est généré par Contao dans :
- system/librairies/Environnement.php : protected function base()
et est utilisé dans le modèle de page :
- fe_page.tpl : <base href="<?php echo $this->base; ?>"></base>

On peut donc la modifier ou supprimer directement :) , mais toutes les "références" à des fichiers, pages, etc... sont générées de manière relative à cette base par Contao :arrow: il ne faut pas y toucher sous peine de catastrophe. :cry:

Pour ton carrousel, est-ce que tu l'as essayer sur une page statique pour voir s'il redémarre aussi au début :?: ; si c'est le cas c'est un problème de programmation du carrousel qui n'a rien à voir avec Contao.

Contaoment :)
F2lt
Je soutiens Mira Europe qui éduque et remet gratuitement des chiens guides d'aveugles aux enfants aveugles : http://www.miraeurope.org/

FiX'
Membre
Messages : 399
Inscription : 02 Jan 2009 01:04

Re: Utilisation des Liens et Ancres Intrapage

Messagepar FiX' » 07 Oct 2011 10:12

Re,

Merci pour cette réponse.

Pour info, c'est bien un bug de Contao qui faisait déconner le carrousel. Sur une page de dev classique (pas sur Contao, mais dans Dreamweaver... je veux dire : pas de soucis)

En fait, l'avantage de ta solution, c'est que le bug faisait juste redémarrer le carroussel au départ. J'ai réglé complétement le souci en fait cela :

Code : Tout sélectionner

<div class="control">
<a class="prev" title="Previous" href="{{env::request}}#previous">prev</a>
<a class="next" title="Next" href="{{env::request}}#next">next</a>
</div>


En effet, le fait de mettre juste le "#"...

Code : Tout sélectionner

[code]
<div class="control">
<a class="prev" title="Previous" href="{{env::request}}#">prev</a>
<a class="next" title="Next" href="{{env::request}}#">next</a>
</div>
[/code]


... ne fonctionnait pas, car Contao semble supprimer les "# sans nom" de manière automatique. Ce qui fait que le carrousel redémarrait au début.

A+

Avatar de l’utilisateur
cyril
Site Admin
Messages : 171
Inscription : 14 Avr 2008 20:20
Localisation : Valence (Drôme)

Re: Utilisation des Liens et Ancres Intrapage

Messagepar cyril » 07 Oct 2011 10:48

Pour info, c'est bien un bug de Contao qui faisait déconner le carrousel. Sur une page de dev classique (pas sur Contao, mais dans Dreamweaver... je veux dire : pas de soucis)


Je tiens à préciser que ce n'est pas un bug de Contao, c'est plutôt une mauvaise utilisation de la balise <a> de la part du développeur du caroussel. En terme d'accessibilité, <a href="#"> c'est complètement débile et malheureusement trop souvent utilisé.
Cordialement,

Cyril

Avatar de l’utilisateur
iankoOol
Membre
Messages : 160
Inscription : 04 Août 2008 10:07
Localisation : Bretagne

Re: Utilisation des Liens et Ancres Intrapage

Messagepar iankoOol » 07 Oct 2011 11:46

Hello,

c un problème qui vient du js, doit manquer un "return false" qq part afin qu'il ne prenne pas en compte le lien...

à tester le rajout d'un

Code : Tout sélectionner

OnClick="return false"

dans tes balises <a href...

Edit : et oki avec Cyril niveau accessibilité pas terrible, bien sûr :wink:
Graphiste / Dév - Xhtml/css/javascript/php - Faîtes-vous du bien !


Revenir vers « Tutoriels utilisateurs »

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 19 invités