Aller au contenu
Invision Board France
  • 0

Utiliser la fonction "truncate"


Bocar

Question

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.

Lien vers le commentaire
Partager sur d’autres sites

25 réponses à cette question

Messages recommandés

  • 0
  • Administration

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.

Lien vers le commentaire
Partager sur d’autres sites

  • 0

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

Lien vers le commentaire
Partager sur d’autres sites

  • 0
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.

Modifié par Bocar
Lien vers le commentaire
Partager sur d’autres sites

  • 0

 

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 :) 

Modifié par cybero
Lien vers le commentaire
Partager sur d’autres sites

  • 0
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.

Lien vers le commentaire
Partager sur d’autres sites

  • 0

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

Lien vers le commentaire
Partager sur d’autres sites

  • 0
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.

Lien vers le commentaire
Partager sur d’autres sites

  • 0

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

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

Modifié par Bocar
Lien vers le commentaire
Partager sur d’autres sites

  • 0
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 :( 

 

 

Lien vers le commentaire
Partager sur d’autres sites

  • 0
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

Lien vers le commentaire
Partager sur d’autres sites

  • 0
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...

Lien vers le commentaire
Partager sur d’autres sites

  • 0

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)

Modifié par cybero
Lien vers le commentaire
Partager sur d’autres sites

  • 0
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é ?

Lien vers le commentaire
Partager sur d’autres sites

  • 0
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.

Lien vers le commentaire
Partager sur d’autres sites

  • 0
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.

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à cette question…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

Chargement
×
×
  • Créer...

Information importante

En utilisant ce site, vous êtes d’accords avec nos Conditions d’utilisation. Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookies, sinon nous supposerons que vous êtes d’accord pour continuer.