[Résolu] Teaser d'un champ CCK avec contemplate et lien read more

Information importante

En raison d'un grand nombre d'inscriptions de spammers sur notre site, polluant sans relache notre forum, nous suspendons la création de compte via le formulaire de "sign up".

Il est néanmoins toujours possible de devenir adhérent•e en faisant la demande sur cette page, rubrique "Inscription" : https://www.drupal.fr/contact


De plus, le forum est désormais "interdit en écriture". Il n'est plus autorisé d'y écrire un sujet/billet/commentaire.

Pour contacter la communauté, merci de rejoindre le slack "drupalfrance".

Si vous voulez contacter le bureau de l'association, utilisez le formulaire disponible ici, ou envoyez-nous un DM sur twitter.

Bonjour,

dans mes teasers dont l'affichage est géré par contemplate, j'ai un champ description qui a tendance à être assez long. J'aimerais en limiter la taille et je ne sais pas comment faire. Si je vais dans admin/content/node-settings et spécifie 200 caractères, cela ne change rien, étant donné que l'affichage repasse par contemplate...
Il y a une solution?

merci

Forum : 
Version de Drupal : 

Hello
remplace la variable $node->teaser ci dessous par celle qui t'intéresse et remplace 100 par le nombre de caractère que tu veux afficher.
Le check_plain est là par sécurité, si la variable que utilise est déjà sécurisée par contemplate tu n'en as pas besoin.

<?php
print check_plain(substr($node->teaser,0,100));
?>

c'est parfait!
juste à bien le positionner et l'afficher seulement si la chaîne fait plus de x caractères.

Je te remercie!

edit: pour ceux que ça interesse:

<?php
if (strlen($node->teaser)>=300)
{
print
l('Lire plus', "node/$node->nid");
}
?>

en conservant la fonction l() ça donnerait ça :

<?php
  $options
= array('attributes' => array('target'=>'_blank'));
  print
l('Lire plus', "node/$node->nid", $options);
?>

Tu peux rajouter autant d'attributs que tu le souhaites, par ex :

<?php
 $options
= array(
   
'attributes' => array(
     
'class' => 'mon lien',
     
'id'    => 'coucou',
     
'target'=>'_blank',
     
'title' =>'mon titre de lien',
     )
  );
  print
l('Lire plus', "node/$node->nid", $options);
?>

voir la fonction l() ici
http://api.drupal.org/api/function/l/6