[TypoScript] Ajouter automatiquement un sommaire ancré en haut de page
Le 20 septembre 2011, par François | Catégorie(s) : Astuces diverses, TYPO3, Typoscript
Imprimer ce post
Lorsqu’une page TYPO3 contient énormément de contenus, il peut être utile de générer automatiquement un sommaire ancré en haut de 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 ###monsommaire### et que le champ « Titre » de chacun des contenus de votre page TYPO3 est rempli
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 sommaire 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 sommaire sera affiché à l’endroit où vous avez placé votre marqueur dans votre template.
Code TypoScript
marks.monsommaire = CONTENT
marks.monsommaire {
//je récupère le titre et l'id de chacun des contenus de la colonne "normal" de ma page TYPO3
table = tt_content
select {
pidInList = this
orderBy = sorting
selectFields = header,uid
where = colPos = 0
languageField=sys_language_uid
}
//je teste le nombre de contenus de ma colonne normal
stdWrap.if.value = 1
stdWrap.if.isGreaterThan.numRows.table = tt_content
stdWrap.if.isGreaterThan.numRows.select {
pidInList = this
where = colPos = 0
languageField=sys_language_uid
}
//si le nombre de contenus de ma page est supérieur à 1, j'affiche le sommaire ancré sous forme de listes à puces
stdWrap.wrap = <ul class="ss_menu_page"><a name="sommaire_page"></a>|</ul>
stdWrap.required = 1
renderObj = TEXT
renderObj {
field = header
required = 1
dataWrap= <li><a href="#c{field:uid}" title="#c{field:uid}" target="_self">|</a></li>
}
}
Exemple
Et aussi…
Toujours dans le cas d’une page longue, il peut être utile de rajouter un lien ancré « Retour en haut de page » sous chacun des contenus typo3 de la page.
Pour ce faire, voir l’article [TypoScript] Ajouter automatiquement un lien ancre #top sous chaque contenu d’une page TYPO3
