Go to main content

Textpattern CMS support forum

You are not logged in. Register | Login | Help

#1 2006-11-22 13:11:58

patbiker
Member
From: Montpellier
Registered: 2006-10-09
Posts: 51

[fr-fr] Gérer des liens vers article internes à la page

Bonjour,

Dans une page s’affichent tous les articles d’une section. Je souhaiterais que cette page débute par un menu, cad une suite de liens vers les articles.

Il s’agit ici de liens internes, cad dans la page. Le but est de se positionner sur le début de l’article, pas d’afficher l’article ailleurs.

En HTML, cela se définit avec des ancres, je crois.


Patrick

Offline

#2 2006-11-22 15:45:17

patbiker
Member
From: Montpellier
Registered: 2006-10-09
Posts: 51

Re: [fr-fr] Gérer des liens vers article internes à la page

Hello,

Je me réponds à moi-même car j’ai trouvé la solution dans la partie anglaise du forum. En résumé, il faut :

1 – Assigner un id unique à chaque article

<h3 id="article-<txp:article_id />"><txp:title /></h3>

2- Générer une liste de liens en début de page

<ul>
<txp:article form="list" />
</ul>

avec la form “list”

<li><a href="#article-<txp:article_id />"><txp:title /></a></li>

La version originale est là.

http://forum.textpattern.com/viewtopic.php?id=18111


Patrick

Offline

#3 2006-11-22 17:42:24

Niconemo
Member
From: Rhône-Alpes, France
Registered: 2005-04-18
Posts: 557

Re: [fr-fr] Gérer des liens vers article internes à la page

Les articles ont cette ID unique dès leur création… pas la peine d’en assigner une. :-)

Last edited by Niconemo (2006-11-22 17:47:58)


Nico

Offline

#4 2006-11-22 20:52:48

patbiker
Member
From: Montpellier
Registered: 2006-10-09
Posts: 51

Re: [fr-fr] Gérer des liens vers article internes à la page

Hello,

Assigner n’est peut-être pas le terme adéquat. Bien sûr, chaque article possède un Id. Ce qui est fait ici est justement d’utiliser ce Id pour construire une ancre dans la page (au sens HTML).

Pour chaque titre d’article, on crée une ancre. Ensuite la liste contient des liens href vers ces ancres.

J’ai mis cette technique en pratique sur ce site : Tutorial TextPattern par PatBiker

Last edited by patbiker (2006-11-24 14:23:46)


Patrick

Offline

#5 2006-11-28 04:25:44

Jeremie
Member
From: Provence, France
Registered: 2004-08-11
Posts: 1,578
Website

Re: [fr-fr] Gérer des liens vers article internes à la page

Pat a raison, il ne s’agit pas de l’id interne de TXp qu’il veut, mais d’une ID (au sens HTML/CSS du terme) pour pouvoir faire des liens d’une page vers l’intérieur de cette même page. Et la méthode présentée est bonne.

Offline

#6 2008-11-10 17:46:57

sacripant
Plugin Author
From: Rhône — France
Registered: 2008-06-01
Posts: 479
Website

Re: [fr-fr] Gérer des liens vers article internes à la page

Je remonter ce post, car j’y ai trouvé un bug. Très gênant pour le site sur lequel je travail :

Mon bug

Mon code

Pour ceux qui suivent ce forum, vous savez que je suis sur une structure en 2 colonnes (texte FR à côté du texte En). Les articles s’affiches les uns au dessous des autre (d’ou le besoin des ancres). Et je diffère l’affichage du 1er article des suivants par <txp:if_first_article>

mon module d’article :

<txp:if_first_article>
	<txp:article_image class="img_entete"/>
<div class="titre_cat">
<txp:zem_ir font="eabsc.ttf" wraptag="h2" fontsize="28" height="38" color="#6C9" aa="0"><txp:title /></txp:zem_ir>
<txp:zem_ir font="eabob.ttf" wraptag="h2" fontsize="28" height="38" color="#F96" aa="0"><txp:custom_field name="titre anglais" /></txp:zem_ir>
</div>
		<div id="nav02">
		<txp:article form="presentation_nav02fr" sort="posted asc"/><br />
		<txp:article form="presentation_nav02en" sort="posted asc"/>
		</div>
<div id="article">
	<txp:else />
<div id="article">
	<h3 id="article-<txp:article_id />"><txp:title /></h3>
	<h3 class="en"><txp:custom_field name="titre anglais" /></h3>
<txp:smd_gallery category="diaporama-index" form="img_presentation" wraptag="div" class="vignette"/>
	</txp:if_first_article>
<txp:jcb_columnize mode="string" arg="+++++" class="unique" classname="lang">
<txp:body />
</txp:jcb_columnize>
	<div class="spacer"></div>
</div>

Donc,
J’affiche les articles appartenant à la même catégorie.
<txp:article_image> Le premier article possède une image, qui sert d’image d’intro à la catégorie.
<div class="titre_cat"> Ensuite, le titre du premier article sert de titre générale de page, transformé en image par zem_ir, Avec sa traduction anglaise dans un custom_field.
<div id="nav02"> Ensuite s’affiche les ancres FR, puis les ancres EN, grâce au code ci-dessus.
<div id="article"> Puis s’affiche le body du 1er article, séparer en 2 colonnes par <txp:jcb_columnize

Sinon, pour les articles suivants, j’affiche le titre et sa traduction h3,
puis les images en slimbox @<txp:smd_gallery>, en enfin le body en 2 colonnes.

Les ancres ne s’affiche donc que dans la 1er article. Cela marche à merveille…

…Mais

J’ai parfois besoin de n’avoir qu’une seule colonne, pour l’affichage de tableaux de données. J’ai donc créer un autre module ou j’ai viré le tag </txp:jcb_columnize> Et lors de l’écriture de l’article, je choisi mon module “monocolonne” dans “module de remplacement .

Et c’est là que ça bug. Lorsqu’on choisi un module de remplacement pour 1 article. Dans l’affichage des ancres, il remplace le lien de l’ancre par l’article en entier.

Je n’ai toujours pas trouvé de solutions.

Je rame…

Offline

#7 2008-11-11 12:11:08

sacripant
Plugin Author
From: Rhône — France
Registered: 2008-06-01
Posts: 479
Website

Re: [fr-fr] Gérer des liens vers article internes à la page

J’avais l’espoir qu’en sortant la navigation par ancre du module article en la mettant directement dans le gabarit, cela pourrait résoudre mon bug, quit à modifier mes CSS.

Ben non, l’effet et exactement le même.

En gros, cette méthode ne fonctionne que si la liste d’article a le même module.

Personne n’aurait une piste pour m’aider ? Un plugin magique ?

Je vais mettre le site en ligne (a priori, pour tester zem_contact, j’ai pas le choix), si quelqu’un a le temps d’y jeter un coup d’oeil.

Offline

#8 2008-11-11 13:05:30

Dragondz
Moderator
From: Algérie
Registered: 2005-06-12
Posts: 1,548
Website GitHub Twitter

Re: [fr-fr] Gérer des liens vers article internes à la page

Salut sacripant!

Déjà il m’a fallu bien 5mn pour suivre et comprendre le code de ton module (et pourtant tu as pris la peine d’expliquer) mais bon il faut croire que je suis passablement fatigué!

Bon passant:

Une solution qui me vient tout de suite serait d’utiliser un custom_field pour décider si oui ou non tu met ton contenu en colonne ou pas!

ce serait du genre:

nommer un custom field par ex: colonne et lui donner la valeur “non” si tu veux mettre ton contenu sans colonnes:

<txp:if_custm_field name="colonne" value="non">
<txp:body />
<txp:else />
<txp:jcb_columnize mode="string" arg="+++++" class="unique" classname="lang">
<txp:body />
</txp:jcb_columnize>
</txp:if_custom_field>

Et la plus besoin de mettre de module de remplacement.

J’espère ne pas être à coté de la plaque ;)

A+

Offline

#9 2008-11-11 13:58:12

sacripant
Plugin Author
From: Rhône — France
Registered: 2008-06-01
Posts: 479
Website

Re: [fr-fr] Gérer des liens vers article internes à la page

@Dragondz

Non, pas du tout, tu n’est pas à côté de la plaque. Et ta solution est une alternative vraiment interessante. Je copie colle ça dans mes truc et astuces de novice que je suis.

Mais j’ai trouvé,J’avais de la merde dans les yeux.

Il m’a fallu un moment pour comprendre que :

  • La fonction module de remplacement force le remplacement du module par défaut pour un article dans tous les “modules articles” où l’article est appelé.
  • Pour créer la navigation par ancre, on fait appelle à un mod article, qui ne retourne que le titre de l’article. Mais alors forcement, lorsque ce mod va appelé le titre le l’article-avec-un-autre-module- et ben il va afficher l-autre-module et pas le titre.

Mais alors ? C’est quoi ce bug énorme ? On peut pas créer une liste de titres d’articles avec l’impossibilité d’utiliser la fonction module de remplacement ?

Et ben si, et c’est super simple.

<txp:article> possède l’attribut allowoverride de type booleen qui nous permet d’indiquer si dans notre module article, la fonction module de remplacement est autorisée ou pas.

Donc il suffit de ne pas autoriser les modules de remplacement dans le module qui va créer les ancres :

		<div id="nav02">
		<txp:article form="presentation_nav02fr" *allowoverride="0"* sort="posted asc"/><br />
		<txp:article form="presentation_nav02en" *allowoverride="0"* sort="posted asc"/>
		</div>

PS1 C’est vrai qu’on est le 11 novembre. Mais ici, au Sénégal, pays qui a fait la guerre pour la France, on n’est pas férié.
PS2 On peut pas mettre de <strong> dans un bc. ?

Last edited by sacripant (2008-11-11 14:05:43)

Offline

#10 2008-11-11 14:52:42

Dragondz
Moderator
From: Algérie
Registered: 2005-06-12
Posts: 1,548
Website GitHub Twitter

Re: [fr-fr] Gérer des liens vers article internes à la page

Ben tant mieux pour toi.

PS: ici aussi c’est pas férié! on a aussi fait la guerre pour la France (et contre aussi)

Offline

Board footer

Powered by FluxBB