Jump to content
Invision Board France
  • 0
Bocar

4.5 Utiliser la fonction "truncate"

Question

Bocar

Bonjour.

 

Je veux faire un "truncate" du nombre de caractères des dates des derniers posts à l'index (à droite).

 

@cybero, @Youp3, comment utiliser la fonction "truncate" avec IPB s'il vous plaît ?

 

Merci.

Share this post


Link to post
Share on other sites

25 answers to this question

Recommended Posts

  • 0
Bocar

J'ajoute une précision, je ne veux utiliser le truncate que sur mobile.

 

Merci.

Share this post


Link to post
Share on other sites
  • 0
Youp3

Bonsoir,

 

Alors là je ne suis pas certain que ce soit possible en fonction du périphérique. Mais je n’ai plus trop l’occasion de coder en php depuis un moment, donc je me trompe peut-être.

Share this post


Link to post
Share on other sites
  • 0
Bocar

Bonsoir @Youp3.

 

Au pire, pour tous les périphériques.

Sais-tu comment faire ?

 

Merci.

Edited by Bocar

Share this post


Link to post
Share on other sites
  • 0
cybero

Hello,

 

+1 Je ne fais plus beaucoup de PHP

 

Je ne crois pas qu'il y ait une fonction truncate en php.

Pour couper une chaîne de caractères tu la fonction substr qui retourne une partie d'une chaîne de caractères.

Documentation & exemples: https://www.php.net/manual/fr/function.substr.php

 

Le plus compliqué va être de trouver où dans le code IPS faire ce que tu veux faire, à quel endroit ajouter cette "découpe".

Cela peut-êre fait dans le code source (php) ou dans le thème directement.

 

Quelle dates veux-tu tronquer exactement ? Celles-ci ?

J'y pense avec ma capture, l'utilisation du format "dates relatives" (Il y a xxxx) va surement t'ennuyer.

 

 

image.png.9ff5e6eeb52314a36e78c3667030c512.png

Share this post


Link to post
Share on other sites
  • 0
Bocar
Le 02/06/2021 à 09:29, cybero a dit :

Quelle dates veux-tu tronquer exactement ? Celles-ci ?

Oui.

 

Comment utiliser substr sur IPB ?

 

Une autre idée svp pour faire un truncate ?

 

Merci.

Edited by Bocar

Share this post


Link to post
Share on other sites
  • 0
cybero

 

Il y a 10 heures, Bocar a dit :

Comment utiliser substr sur IPB ?

 

Aller dans le code, trouver le bon endroit et modifier...

Là c'est du pur développement, ça ne s'explique pas comme cela d'un coup.

 

 

De quelle façon souhaites-tu tronquer exactement ?

On doit pouvoir t'aider à arriver au résultat :) 

Edited by cybero

Share this post


Link to post
Share on other sites
  • 0
Bocar
Il y a 22 heures, cybero a dit :

Aller dans le code, trouver le bon endroit et modifier...

Là c'est du pur développement, ça ne s'explique pas comme cela d'un coup.

Je ne sais plus coder en PHP. Ça fait très longtemps que j'avais appris ça.

 

Il y a 22 heures, cybero a dit :

De quelle façon souhaites-tu tronquer exactement ?

On doit pouvoir t'aider à arriver au résultat :) 

Raccourcir le nombre de caractères des dates (jeudi à 12:25 ou il y a 7 heures)  à 10 par exemple.

Vous sauriez le faire ?

 

Merci.

Share this post


Link to post
Share on other sites
  • 0
cybero

Alors déjà mea-culpa j'ai dit une sottise, il y a bien une fonction truncate mais ce n'est pas une fonction PHP c'est quelque chose développé par IPS afin d'être utilisé dans les templates (Et uniquement là).

Pour info les différentes fonctions sont documentées là : https://invisioncommunity.com/4guides/themes-and-customizations/template-syntax/template-plugins-r143/

 

Par exemple pour tronquer sur 10 caractères le titre d'un sujet on utilisera, dans le thème donc : 

{truncate="$lastPost['topic_title']" length="10"}

 

Pour les dates, IPS utilise une autre fonction : datetime qui va s'occuper de formater bien les dates

Exemple:

{datetime="$lastPost['date']"}

 

Par contre je suis ennuyé car il faudrait faire les 2 en même temps.

Toi tu voudrais truncate le résultat de datetime et je n'y suis pas arrivé :( 

Je re regarderai un peu plus tard mais sans garantie.

 

Pour info la partie du thème que tu cherches (index des forums) et d'où sont tirés mes exemples est : forums => front => index => forumRow

On voit le truncate au-dessus du datetime

 

image.png.cb02931a6c500cc029dd130acb5ab7ca.png

Share this post


Link to post
Share on other sites
  • 0
Bocar
il y a une heure, cybero a dit :

Toi tu voudrais truncate le résultat de datetime et je n'y suis pas arrivé :( 

Je re regarderai un peu plus tard mais sans garantie.

OK cybero.

 

Merci.

Share this post


Link to post
Share on other sites
  • 0
Bocar

Est-ce que "ipsTruncate" et "ipsTruncate_line" peuvent te servir @cybero ?

À quoi servent-ils ? Ils sont dans le code source HTML du thème.

Edited by Bocar

Share this post


Link to post
Share on other sites
  • 0
cybero

Ah certainement vu leur nom !

Je jetterai un oeil

 

Désolé je manque de temps en ce moment :arg:

Share this post


Link to post
Share on other sites
  • 0
Bocar

OK @cybero.

Tu me diras stp.

 

Merci.

Share this post


Link to post
Share on other sites
  • 0
cybero
Le 14/06/2021 à 02:46, Bocar a dit :

Est-ce que "ipsTruncate" et "ipsTruncate_line" peuvent te servir @cybero ?

À quoi servent-ils ? Ils sont dans le code source HTML du thème.

 

Après petite étude, ces classes tronquent elles-mêmes le texte.

Cependant elles tronquent si le texte le rentre pas dans zone indiquée (Genre un grand texte dans un petit div).

Ceci grâce à la propriété text-overflow: ellipsis;

Plus d'infos https://developer.mozilla.org/fr/docs/Web/CSS/text-overflow

 

Cela ne permet cependant pas de tronquer à x caractères comme désiré.

J'ai cherché, pas trouvé comment faire, ni avec du code IPS, ni avec du CSS :( 

 

 

Share this post


Link to post
Share on other sites
  • 0
Bocar

Si je mets un width à la balise pour régler la zone en question, tu penses que cette fonction truncate peut faire le nécessaire ?

 

Merci @cybero.

Share this post


Link to post
Share on other sites
  • 0
cybero

Ca devrait oui, après faut voir si ça répond à ce que tu veux faire.

Le mieux est de tester par toi même.

Share this post


Link to post
Share on other sites
  • 0
Bocar

OK.

 

Afin de tester, comment utilise-t-on les fonctions "ipsTruncate" et "ipsTruncate_line" de IPB; et comment mettre une taille à une <div> s'il te plaît ?

 

Merci @cybero.

Share this post


Link to post
Share on other sites
  • 0
cybero
Il y a 22 heures, Bocar a dit :

Afin de tester, comment utilise-t-on les fonctions "ipsTruncate" et "ipsTruncate_line" de IPB; et comment mettre une taille à une <div> s'il te plaît ?

 

 

Tu peux soit créer un classe dédiée, ou bien ajouter un attribut style à la balise en question

Par exemple :

<div style="width:500px;">xxxxx</div>

Et pour utiliser les 2 classes IPS, il faut les ajouter (A priori les 2 pour ce que tu veux faire) aux classes déjà déclarées dans le div.

MAIS 😛 
Par contre là en l'occurrence en relisant le sujet c'est une balise li, pas un div (voir ma capture plus haut) mais c'est le même principe :)

 

Si je me trompe pas, ça doit donner quelque chose dans le genre (Ligne que j'ai surlignée en jaune, toujours dans ma capture plus haut)

<li style="width:100px;" class="ipsType_light ipsTruncate ipsTruncate_line"><a href='{$lastPost['topic_url']->setQueryString( 'do', 'getLastComment' )}' title='{lang="get_last_post"}' class='ipsType_blendLinks'>{datetime="$lastPost['date']"}</a></li>

 

Par rapport au code original j'ai ajouté le style avec une largeur de 100 (Tu mettras ce que tu veux pour tester) et les 2 fameuses classes.

Testé de mon côté, ça fait ce que ça doit faire, si ça te convient tant mieux :drop:

On voit que la date a bien été tronquée :

 

image.thumb.png.a84163ade18bf9caf273f8cd4560a4bf.png

Share this post


Link to post
Share on other sites
  • 0
Bocar
Le 06/07/2021 à 19:35, cybero a dit :

 

Tu peux soit créer un classe dédiée, ou bien ajouter un attribut style à la balise en question

Par exemple :


<div style="width:500px;">xxxxx</div>

Et pour utiliser les 2 classes IPS, il faut les ajouter (A priori les 2 pour ce que tu veux faire) aux classes déjà déclarées dans le div.

MAIS 😛 
Par contre là en l'occurrence en relisant le sujet c'est une balise li, pas un div (voir ma capture plus haut) mais c'est le même principe :)

 

Si je me trompe pas, ça doit donner quelque chose dans le genre (Ligne que j'ai surlignée en jaune, toujours dans ma capture plus haut)


<li style="width:100px;" class="ipsType_light ipsTruncate ipsTruncate_line"><a href='{$lastPost['topic_url']->setQueryString( 'do', 'getLastComment' )}' title='{lang="get_last_post"}' class='ipsType_blendLinks'>{datetime="$lastPost['date']"}</a></li>

 

Par rapport au code original j'ai ajouté le style avec une largeur de 100 (Tu mettras ce que tu veux pour tester) et les 2 fameuses classes.

Testé de mon côté, ça fait ce que ça doit faire, si ça te convient tant mieux :drop:

On voit que la date a bien été tronquée :

 

image.thumb.png.a84163ade18bf9caf273f8cd4560a4bf.png

 

Hello.

 

J'ai mis ça et ça ne fait rien :

<li style="width:8px;" class='ipsType_light ipsTruncate ipsTruncate_line'>{lang="byline_nodate" htmlsprintf="$lastPost['author']->link()"}, <a href='{$lastPost['topic_url']->setQueryString( 'do', 'getLastComment' )}' title='{lang="get_last_post"}' class='ipsType_blendLinks'>{datetime="$lastPost['date']"}</a></li>

Je ne vois pas pourquoi...

Share this post


Link to post
Share on other sites
  • 0
cybero

J'ai essayé de mon côté ça fait bien ce que ça devrait faire.

 

Peut-être que ce n'est pas compatible avec une version plus récente que la mienne (Je suis toujours en 4.4)

Edited by cybero

Share this post


Link to post
Share on other sites
  • 0
Bocar
Le 02/08/2021 à 12:23, cybero a dit :

J'ai essayé de mon côté ça fait bien ce que ça devrait faire.

Tu as essayé le code que j'ai posté ?

Share this post


Link to post
Share on other sites
  • 0
cybero

Avec ton code ça me donne ceci, ça tronque bien même si la ligne est différente

 

image.png.ead2854e2e51fb995aae0edb29ba6402.png

Share this post


Link to post
Share on other sites
  • 0
Bocar
Le 06/08/2021 à 09:11, cybero a dit :

Avec ton code ça me donne ceci, ça tronque bien même si la ligne est différente

 

image.png.ead2854e2e51fb995aae0edb29ba6402.png

On est en 4.5.

Je ne vois pas ce qui pourrait empêcher le truncate de fonctionner.

Share this post


Link to post
Share on other sites
  • 0
Bocar
Le 06/08/2021 à 09:11, cybero a dit :

Avec ton code ça me donne ceci, ça tronque bien même si la ligne est différente

 

 

As-tu un code différent pour 4.5 s'il te plaît @cybero ?

 

Merci.

Share this post


Link to post
Share on other sites
  • 0
cybero

N'ayant pas la version 4.5 je n'ai aucune idée des adaptations nécessaires pour que ça fonctionne :( 

  • Like 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.