How to set a php condition with field value ?

More
3 years 10 months ago #81983 by bendeb
Oui je me suis penché dessus, mais cette solution est elle aussi trop fastidieuse, car j'aurai environ 3000 items à classer dans des catégories secondaires.

Je pense vraiment qu'on peut faire ce que je souhaite avec une simple condition php dans le fichier du template plutôt que de passer par des solutions complexes à mettre en place.
Avec la bonne syntaxe, ça prendrait deux secondes à appliquer et je gagnerai un temps fou, tout en étant plus propre dans l'architecture.

D'autant que mes pages qui regroupent tout ne sont pas des catégories normales, mais des liens de menu Favoris de plusieurs catégories.

 

Flexicontent 4.1.0b1
Joomla 3.9.18

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

More
3 years 10 months ago #81984 by micker
Ce que tu demandes n'est pas si simple car les valeurs des champs ne sont pas dans la même table que celles des articles il faut donc créer une requête au-dessus pour rendre tout cela possible
C'est du travail (pas en 2s)
On offre un composant du support mais on ne peut offrir du support de code custom gratuitement. On peut te guider un peu mais là il faut tout faire
Desoler

FLEXIcontent is Free but involves a very big effort on our part.
Like the our support? (for a bug-free FC, despite being huge extension) Like the features? Like the ongoing development and future commitment to FLEXIcontent?
-- Add your voice to the FLEXIcontent JED listing reviews. Thanks![/size]

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

More
3 years 10 months ago #81985 by bendeb
J'utilise déjà des requêtes dans mes fichiers templates, comme celle-ci par exemple :
Code:
<?php if ($this->fields['my_field']->display ==NULL) { ?> <link rel="stylesheet" type="text/css" href="style.css" /> <?php } else {} ?> 
>>> Si mon champ "my_field" n'est pas renseigné, ça charge style.css. Sinon, ça ne charge pas style.css

Autre exemple, dans les templates de catégorie, on a ceci :
Code:
<?php foreach ($items as $i => $item) : ?>               *** code HTML ***     <?php endforeach; ?>

Ce que je demande n'est pas si compliqué il me semble. Je souhaite juste une condition qui affiche tous les items (avec un foreach j'imagine, comme l'exemple code n°2 ci-dessus) mais qui pour chaque valeur d'un champ custom (ex : my_field) de ces items, les regroupe ensemble et affiche un bout de code HTML avant :

Comme ceci :

*** code HTML n°1 ***
>>> liste de tous les items qui ont "1" comme valeur dans my_field


*** code HTML n°2 ***
>>> liste de tous les items qui ont "2" comme valeur dans my_field


*** code HTML n°3 ***
>>> liste de tous les items qui ont "3" comme valeur dans my_field

etc.

C'est si compliqué à faire ?
Pour moi oui. Mais je ne suis pas développeur.

J'ai essayé ce genre de syntaxe mais ça ne fonctionne pas :
Code:
<?php foreach ($items as $i => $item AND $item->fields['my_field']->display === '1')     <h1>Niveau 1</h1>

foreach n'accepte apparemment pas les opérateurs logiques. Je cherche donc une syntaxe précise qui permette de reproduire l'affichage que je veux suivant la valeur du champ "my_field". Et ce pour chaque valeur de ce champ.

Flexicontent 4.1.0b1
Joomla 3.9.18

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

More
3 years 10 months ago - 3 years 10 months ago #81986 by micker
Hello déjà
1 my_field tu le remplace bien par le nom de ton champs ?
2 ton champs my_field est bien dans un position de ton template ? Sinon il faut Uil soit dans la position render
3 pour le foreach je te recommande de regarder dans la documentation de PHP
Sinon une recherche sur le web a foreach and group by value va te donner ça
stackoverflow.com/questions/49356181/php-foreach-group-by-value
Courage

FLEXIcontent is Free but involves a very big effort on our part.
Like the our support? (for a bug-free FC, despite being huge extension) Like the features? Like the ongoing development and future commitment to FLEXIcontent?
-- Add your voice to the FLEXIcontent JED listing reviews. Thanks![/size]
Last edit: 3 years 10 months ago by micker.

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

More
3 years 10 months ago #81987 by bendeb
1) oui bien sûr :)
2) dans les réglages du template, je le met dans la position table. Cela fait-il une différence avec la position renderonly ?
3) merci pour le lien, je vais regarder ça.

Flexicontent 4.1.0b1
Joomla 3.9.18

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

More
3 years 10 months ago #81988 by bendeb
Je suis allé voir ton lien, mais je n'arrive pas à reproduire le code sur mon template.

Je veux faire reproduire cette condition :
Si la valeur de mon champ 'my_field' est égale à 1, afficher 1
Si la valeur de mon champ 'my_field' est égale à 2, afficher 2
...
Quelle est la syntaxe précise stp ?

J'ai essayé ceci mais ça ne fonctionne pas :
if($item->fields->value == 1) {
echo '1';
}

Flexicontent 4.1.0b1
Joomla 3.9.18

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

More
3 years 10 months ago #81989 by bendeb
J'ai mis ceci pardon, mais ça ne fonctionne pas :
Code:
if($item->fields['my_field']->value == 1) { echo '1'; }

Flexicontent 4.1.0b1
Joomla 3.9.18

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

More
3 years 10 months ago #81991 by bendeb
Est-ce si compliqué de faire une condition sur la valeur d'un champ ?

Flexicontent 4.1.0b1
Joomla 3.9.18

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

More
3 years 10 months ago - 3 years 10 months ago #81992 by micker
Bonjour je me permet de te répondre sans réponse....
Nous offrons gratuitement un composant plus complet je pense
Nous offrons aussi un support a l'utilisation de ce composant gratuitement et nous sommes plutôt rapide à répondre...
La la question c'est de la programmation PHP non lier au composant
J'ai déjà donner des liens des solutions (certe) cela ne te convient pas totalement
Nous envoyer x message par jour en nous rappelant qu'à ton avis cela devait être simple à faire et je pense légèrement déplacer
En tout amitiés bien sûr...
Oui cela peut être complexe de faire ce que tu veus surtout avec les soucis de pagination et de performance
Je vais essayer de voir si j'ai du temps dans la semaine prochaine.... Mais sans garantie
En espérant que tu comprennes merci

FLEXIcontent is Free but involves a very big effort on our part.
Like the our support? (for a bug-free FC, despite being huge extension) Like the features? Like the ongoing development and future commitment to FLEXIcontent?
-- Add your voice to the FLEXIcontent JED listing reviews. Thanks![/size]
Last edit: 3 years 10 months ago by micker.

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

More
3 years 10 months ago #81993 by bendeb
Désolé pour toutes mes questions, mais même si c'est du php ça concerne le composant quand même car les fichiers item.php ou category.php (ou autres) dans les templates peuvent se modifier.
Pour ma question en premier message de ce topic, c'est sans doute compliqué, mais ma dernière question est pourtant simple je pense :
Quelle est la syntaxe précise pour faire une condition (avec if) suivant la valeur d'un champ ?
J'ai essayé cette syntaxe mais ça ne fonctionne pas (j'ai également essayé des tas d'autres syntaxes sans succès) :
Code:
if($item->fields['my_field']->value == 1) {echo '1'; }

Je souhaite juste savoir ça et ensuite j'essaierai de me débrouiller.

Merci pour tes réponses.
J'ai toujours trouvé Flexicontent génial, on peut faire des tas de choses simplement, c'est très complet et ultra performant. J'utilise ce composant depuis de nombreuses années. Au fil des ans, FC s'est nettement amélioré, en partie grâce aux utilisateurs qui font leurs retours, que ce soit pour reporter un bug, ou demander une amélioration.
Je m'efforce donc, à ma petite échelle, de faire évoluer ce composant en participant à ces retours.

Les fichiers php des templates sont bourrés de condition php, de boucles et autres.
Je souhaite juste connaître la syntaxe pour récupérer dans une variable la valeur d'un champ.
Y a-t-il une doc à ce sujet quelque part ? J'ai cherché dans les DOCS/TUTOS en français et en anglais mais je ne trouve rien de concluant.

Flexicontent 4.1.0b1
Joomla 3.9.18

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