afficher que les 200 premiers caractères d'une vue

  • Posts: 318
  • Thank you received: 1
11 years 10 months ago #52777

Bonjour,
Avec Hikashop j'ai modifié la vue produit / listing_img_desc
pour afficher que les 240 premiers caractères et ensuite mettre un [...]
Le problème c'est que mon code tient compte du code html et donc des fois m'affiche des balises html du style < [...]
voici mon code :

<div class="hikashop_product_desc" style="text-align:<?php echo $this->align; ?>">
<?php
$descr = mb_substr($this->row->product_description, 0,240);
$len = mb_strlen( $this->row->product_description ) ;
if ( $len >= 240 ){ $descr .= ' [...]' ;
}
echo preg_replace('#<hr *id="system-readmore" */>.*#is','',$descr);
?>


savez vous où est mon erreur ou connaissez-vous une autre solution ?
Merci


Agence web e-commerce spécialiste Hikashop
Last edit: 11 years 10 months ago by toffffe.

Please Log in or Create an account to join the conversation.

  • Posts: 13201
  • Thank you received: 2322
11 years 10 months ago #52813

Bonjour toffffe,

Vous devriez essayer avec : mb_strcut().
Cette fonction permet de couper une chaine de caractères en bytes et non en caractères.
Ce qui fais qu'elle doit prendre en compte les balises et non pas seulement les caractères spéciaux.

A voir.

Please Log in or Create an account to join the conversation.

  • Posts: 318
  • Thank you received: 1
11 years 10 months ago #52815

Non pour moi ça ne fonctionne pas :-(
Mais merci quand même je ne dis pas que le problème vient de vous mais peut être de mon code


Agence web e-commerce spécialiste Hikashop

Please Log in or Create an account to join the conversation.

  • Posts: 318
  • Thank you received: 1
11 years 10 months ago #52828

En fait pour être clair ce qui se passe c'est que mon code compte bien les caractères, mais le problème c'est que lorsque le 240ème caractère est une balise de fermeture <p> et bien il affiche :
la fin de la phrase<[...]


Agence web e-commerce spécialiste Hikashop

Please Log in or Create an account to join the conversation.

  • Posts: 318
  • Thank you received: 1
11 years 10 months ago #52833

J'ai modifié mon code en métant

<div class="hikashop_product_desc" style="text-align:<?php echo $this->align; ?>">
<?php

$descr2 = strip_tags(mb_substr($this->row->product_description, 0,240));
$len = mb_strlen( $this->row->product_description ) ;
if ($len >= 240 ){ $descr2 .= ' [...]' ;
}
$descr = $descr2;
echo preg_replace('#<hr *id="system-readmore" */>.*#is','',$descr);
?>
</div>

Mais le problème c'est que la il affiche plus le texte avec la mis en forme :(


Agence web e-commerce spécialiste Hikashop

Please Log in or Create an account to join the conversation.

  • Posts: 81597
  • Thank you received: 13081
  • MODERATOR
11 years 10 months ago #52924

Je ne vois pas de solution pour couper du texte "intélligement"... Il faudrait pouvoir analyser le code HTML pour faire cela et ca serait beaucoup beaucoup plus compliqué...

Please Log in or Create an account to join the conversation.

  • Posts: 318
  • Thank you received: 1
11 years 10 months ago #52981

Merci donc à tous les 2
J'ai donc fait une adaptation d'un code php trouvé ici mikinfo.free.fr/index.php/quelques-fonctions-pratiques-en-php/
Ce code est bien pratique malgré quelques défauts : il compte qu'approximativement les caractères puisque le html est compté aussi
Mais au moins il a le mérite de répondre à mon besoin
Voici le code modifié ci il intéresse quelqu'un d'autre je m'en suis servi dans la vue product/ listing image description de Hikashop

<div class="hikashop_product_desc" style="text-align:<?php echo $this->align; ?>">
          <?php
          $length= 240;
          $text = ($this->row->product_description);
          
          if (mb_strlen($text, 'UTF-8') > $length)
          {      
          $text  = mb_substr($text, 0, $length, 'UTF-8');
          $text  = mb_substr($text, 0, mb_strrpos($text, ' ', -1, 'UTF-8'), 'UTF-8');
          $text .= '&nbsp;[&hellip;]';
          
          echo $text;
          }
          else {echo $this->row->product_description;}
          ?>
        </div>

Encore merci à vous pour votre aide


Agence web e-commerce spécialiste Hikashop

Please Log in or Create an account to join the conversation.

Time to create page: 0.081 seconds
Powered by Kunena Forum