[TypoScript] Ajouter automatiquement un lien ancre #top sous chaque contenu d’une page TYPO3

Le 20 septembre 2011, par François | Catégorie(s) : Astuces diverses, Non classé, TYPO3, Typoscript

Imprimer ce post Imprimer ce post

Pour améliorer la navigation à l’intérieur d’une page contenant des contenus en grand nombre (et donc une page assez longue), vous pouvez avoir besoin d’ajouter automatiquement un lien « Remonter en haut de page » (ou un autre type de contenu) sous chacun des contenus de la page.

Le code TypoScript ci-dessous présume que vous avez fait une configuration de base pour que typo3 aille chercher votre template, dans lequel vous avez placé un marqueur ###monmarqueur### et un <a name= »#top »></a> à ce qui correspond à votre haut de page (ou haut de contenu).

La particularité de ce code est qu’il va tester le nombre de contenus dans la page.

  • Si il n’y aucun contenu ou un seul contenu, le lien « Remonter en haut de page » ne s’affichera pas (car pas vraiment utile et pas très esthétique dans ce cas).
  • Si il y a deux contenus ou plus, le lien « Remonter en haut de page » sera affiché sous chacun des contenus de la page.

Code TypoScript

//le marqueur &quot;monmarqueur&quot; va aller chercher le contenu de la colonne de contenu &quot;normal&quot;
marks.monmarqueur = CONTENT
marks.monmarqueur < styles.content.get
marks.monmarqueur{
   stdWrap.required = 1

   //on prepare un tableau d objet (au cas ou ca n est pas deja cree ailleurs)
   renderObj.stdWrap.append=COA

   //on cree un objet qui sera ajoute apres le contenu normal
   renderObj.stdWrap.append.30=TEXT

   //on y met le code HTML qui sera utilise
   renderObj.stdWrap.append.30.value= <a href="#top" title="Revenir en haut de page">Revenir en haut de page</a>

   //on parametre le .stdWrap.if qui va du coup agir uniquement sur l objet .append.30
   //on met en place la valeur maximal pour le if
   renderObj.stdWrap.append.30.stdWrap.if.value = 1

   //on met en place le isGreaterThan qui teste si il y a + d'un contenu dans la page
   renderObj.stdWrap.append.30.stdWrap.if{
      isGreaterThan.numRows.table = tt_content
      isGreaterThan.numRows.select.pidInList = this
      isGreaterThan.numRows.select.where = colPos = 0
   }
}

Exemple

http://eduscol.education.fr/histoire-geographie/enseigner/ressources-par-niveau-et-programmes/college/sixieme/histoire.html

Remerciements

Tout le mérite de ce script TS revient à « OlivierSC  », développeur/intégrateur TYPO3 certifié, et membre fidèle du Forum FR Typo3.

Relire la discussion à l’origine de cet article.

Bookmark and Share


2 réponses à l'article "[TypoScript] Ajouter automatiquement un lien ancre #top sous chaque contenu d’une page TYPO3"

Avatar

OlivierSC

21 septembre 2011 at 14 h 09 min

Bonjour,

Il ne faut pas hésiter à proposer un lien vers le forum quand il a été utile :)

http://forum.typo3-fr.org/topic/17798-condition-renderobj/

A bientôt pour d’autres aventures avec le typoscript :)

OlivierSC

Avatar

François

21 septembre 2011 at 15 h 12 min

Oups… oui pardon. A la base, j’avais prévu de remercier un certain « OlivierSC » en rédigeant mon article (sans pour autant mettre un lien vers le forum), mais j’ai zappé ensuite. Je corrige l’article et y ajoute un lien vers la discussion que l’on a eu. C’est vrai qu’en plus le forum me permet de répondre à pas mal de mes questions donc faire un lien vers celui-ci est la moindre des choses. Encore merci « OlivierSC » et comme tu le dis… « A bientôt pour de nouvelles aventures TypoScript ! ».

Laissez un commentaire...