Skip to main content

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

More
14 years 3 months ago - 14 years 3 months ago #52777 by toffffe
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: 14 years 3 months ago by toffffe.

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

More
14 years 3 months ago #52813 by Xavier
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.

More
14 years 3 months ago #52815 by toffffe
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.

More
14 years 3 months ago #52828 by toffffe
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.

More
14 years 3 months ago #52833 by toffffe
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.

More
14 years 3 months ago #52924 by nicolas
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.

More
14 years 3 months ago #52981 by toffffe
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
Code:
<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.488 seconds
Powered by Kunena Forum