[Résolu] Récupérer le nom de la catégorie principale

More
16 years 1 month ago - 16 years 4 weeks ago #1426 by kim
Bonjour,

C'est une question délicate, pas simple, mais je crois, faisable...
Mais j'ai besoin d'aide, car mes essais m'ont pas été concluant.

Grosso modo, l'idée est de récupérer le nom des catégories, grâce au champs "Type".
On obtient alors le nom des différentes catégories (ex: categorie1 categorie2 categorie3)
La catégorie1 est la catégorie principale.
Si on tronque cette chaine de caractère après le premier espace.
On obtient: categorie1.
Bingo, le tour est joué...
En théorie, c'est beau.

Mais en pratique, j'affiche mes catégories avec ça:
Code:
<?php if (isset($items[$i]->positions['titraille'])) : ?> <div class="lineinfo line1"> <?php foreach ($items[$i]->positions['titraille'] as $field) : ?> <span class="element"> <?php if ($field->label) : ?> <span class="label field_<?php echo $field->name; ?>"><?php echo $field->label; ?></span> <?php endif; ?> <span class="value field_<?php echo $field->name; ?>"><?php echo $field->display ?></span> </span> <?php endforeach; ?> </div> <?php endif; ?>

Je tronque ma chaine de caractère avec ça:
Code:
<?php $chaine = "Le texte que vous vouler tronquer !"; $lg_max = 20; //nombre de caractère autoriser if (strlen($chaine) > $lg_max) { $chaine = substr($chaine, 0, $lg_max); $last_space = strrpos($chaine, " "); $chaine = substr($chaine, 0, $last_space)."..."; } ?> <?php echo $chaine ?>

Là, où je bloque: je n'arrive pas à faire passer le <?php echo $field->display ?> dans $chaine.
C'est un problème de programmation de base.
Alors, si y'a une bonne âme charitable qui peut m'aider, je lui claquerai une bise reconnaissante :)
Ou bien, me dire que je me plante complètement dans mon raisonnement (je ne lui en voudrais pas).
Last edit: 16 years 4 weeks ago by kim.

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

More
16 years 1 month ago #1508 by vistamedia
Hello Kim,
Ce que tu as fais s'appelle une fonction :)
Code:
<?php function cutMyString($chaine, $lg_max=20) { if (strlen($chaine) > $lg_max) { $chaine = substr($chaine, 0, $lg_max); $last_space = strrpos($chaine, " "); $chaine = substr($chaine, 0, $last_space)."..."; } return $chaine; } ?>

Maintenant pour l'utiliser, tu peux tout simplement faire
Code:
<?php echo cutMyString($field->display, 20); ?>

Manu.

FLEXIcontent lead developer.
www.vistamedia.fr web agency and custom development.
www.joomla.fr co-administrator.
Please no PM for support request, use the forum for that!!!

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

More
16 years 1 month ago #1522 by kim
J'ai bien essayer dans une fonction aussi, mais ca ne fonctionne pas...
En fait j'ai l'impression que $field->display ne passe pas dans la fonction. Ma home

Code:
<?php function cutMyString($chaine, $lg_max) { if (strlen($chaine) > $lg_max) { $chaine = substr($chaine, 0, $lg_max); $last_space = strrpos($chaine, " "); $chaine = substr($chaine, 0, $last_space)."..."; } return $chaine; } ?> <?php if (isset($items[$i]->positions['titraille'])) : ?> <div class="lineinfo line1"> <?php foreach ($items[$i]->positions['titraille'] as $field) : ?> <span class="element"> <?php if ($field->label) : ?> <span class="label field_<?php echo $field->name; ?>"><?php echo $field->label; ?></span> <?php endif; ?> <span class="value field_<?php echo $field->name; ?>"><?php echo $field->display; ?><?php echo cutMyString($field->display, 20); ?></span> </span> <?php endforeach; ?> </div> <?php endif; ?>

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

More
16 years 1 month ago #1586 by kim
Manu, helpppp...

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

More
16 years 1 month ago #1625 by vistamedia
Juste deux questions:
As-tu as vérifé si ta fonction marchait?
Est-ce que echo $field->display; t'affiche bien quelque chose?

FLEXIcontent lead developer.
www.vistamedia.fr web agency and custom development.
www.joomla.fr co-administrator.
Please no PM for support request, use the forum for that!!!

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

More
16 years 1 month ago #1631 by kim
Code:
<?php echo $field->display; ?><br> <?php echo cutMyString('ma chaine de caractere', 10); ?> <?php echo cutMyString($field->display, 3); ?>

Le première echo fontionnne, le 2e aussi, et pas le trois...

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

More
16 years 4 weeks ago #2117 by yopyop001
Salut Kim

Peut-être que pour toi cette mini-fonction suffirait :
Code:
function cutMyString($string,$separator) { return substr($string,0,stripos($string,$separator)); }

En l'appelant de cette façon dans ton template :
Code:
<?php echo cutMyString($field->display,'|'); ?>
en changeant | par le séparateur de tes catégories.

D'ailleurs ce n'est peut-être pas la peine de passer par la fonction, tu peux appeller directement dans ton template :
Code:
echo substr($field->display,0,stripos($field->display,'|'));

Je n'ai pas fait beaucoup de test, mais je te laisse éprouver cette solution et nous tenir au courant.

A plus tard, et une nouvelle fois, bonne année à tous.

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

More
16 years 4 weeks ago #2119 by yopyop001
Re,

Je viens de voir ta page avec le champs Type (valeurs séparées par des espaces).

En fait, il y a un souci avec les espaces car la fonction parcourt le code html et en rencontre un juste après la balise <a .

Du coup, dans ton cas, si tu ne changes pas le séparateur, tu peux utiliser plutôt :
Code:
echo substr($field->display,0,stripos($field->display,' <a'));
Ce qui coupera la chaine juste avant de rencontrer ' <a' (= le deuxième lien).

A plus

Clément

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

More
16 years 4 weeks ago #2120 by bsky92
Clément a t'il gagné un cierge ???

Si ca marche, ca m'intéressera pour un de mes sites, pour lequel je suis encore en Beta3, j'attends la sortie de la RC pour mettre à jour :)

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

More
16 years 4 weeks ago #2123 by kim
Clément aura son cierge qui illuminera tous mes espoirs :)
Merci Merci Clément.
C'est con les espaces...

Bon, maintenant, il faut que je mette le tout dans un <img src>
la bataille continue...

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

Moderators: vistamediajoomlacornerggppdk
Cookies user preferences
We use cookies to ensure you to get the best experience on our website. If you decline the use of cookies, this website may not function as expected.
Accept all
Decline all
Essential
These cookies are needed to make the website work correctly. You can not disable them.
Display
Accept
Analytics
Tools used to analyze the data to measure the effectiveness of a website and to understand how it works.
Google Analytics
Accept
Decline
Save