Go to main content

Textpattern CMS support forum

You are not logged in. Register | Login | Help

#1 2010-12-13 06:26:43

Niconemo
Member
From: Rhône-Alpes, France
Registered: 2005-04-18
Posts: 557

[fr-fr] contenu conditionnel si article_image horizontale ou verticale

Salut à tous ! J’ai un petit casse-tête à vous soumettre…

Je cherche à définir si l’image associée à l’article (article_image) est verticale ou horizontale pour afficher un contenu conditionnel.

N’étant pas développeur PHP, je me suis dit qu’avec la pléthore de plugins actuellement disponibles, je devrais y arriver assez facilement : ben non !

Je peux facilement récupérer les valeurs numériques de la hauteur et de la largeur :

Largeur : <txp:upm_article_image><txp:upm_img_full_width /></txp:upm_article_image>
Hauteur : <txp:upm_article_image><txp:upm_img_full_height /></txp:upm_article_image>

Et tout aussi facilement les passer dans une variable :

<txp:variable name="largeur" value="<txp:upm_article_image><txp:upm_img_full_width /></txp:upm_article_image>" />
<txp:variable name="hauteur" value="<txp:upm_article_image><txp:upm_img_full_height /></txp:upm_article_image>" />

Dans les deux cas, je confirme que ça fonctionne et que ça retourne bien la bonne valeur numérique.

Mais quand j’utilise (sans doute mal) le plugin txp:smd_if, pour vérifier si la hauetur et plus grande que la largeur, quelle que soit la valeur donnée dans value="", le résultat est toujours faux, que ça soit la variable largeur ou même une simple une valeur numérique (‘ai essayé avec 1 et 999999 et j’obtiens le même résultat, “VERTICAL” ce qui est absurde. C’est comme si txp:smd_if ne reconnaissait pas ma variable hauteur du tout :

<txp:smd_if field="txpvar:hauteur" operator="gt" value="999999">
	VERTICAL
<txp:else />
	HORIZONTAL
</txp:smd_if>

Est-ce que quelqu’un connait ou imagine une méthode possible (pas forcément en utilisant txp:smd_if qui, visiblement vole bien au dessus de mes compétences) ?

Last edited by Niconemo (2010-12-13 06:30:03)


Nico

Offline

#2 2010-12-13 08:09:18

Dragondz
Moderator
From: Algérie
Registered: 2005-06-12
Posts: 1,548
Website GitHub Twitter

Re: [fr-fr] contenu conditionnel si article_image horizontale ou verticale

Salut nico

Déjà au niveau du code:

<txp:variable name="hauteur" value="<txp:upm_article_image><txp:upm_img_full_height /></txp:upm_article_image>" />

je ne vois comment ça marche car il faut utiliser une quote simple pour faire marcher le tag dans un autre tag comme ceci :

<txp:variable name="hauteur" value='<txp:upm_article_image><txp:upm_img_full_height /></txp:upm_article_image>' />

En regardant la doc de smd_if il parle d’utliser gt:NUM pour forcer une comparaison numérique, mais je n’ai pas testé!

A+

Offline

#3 2010-12-13 09:21:35

Niconemo
Member
From: Rhône-Alpes, France
Registered: 2005-04-18
Posts: 557

Re: [fr-fr] contenu conditionnel si article_image horizontale ou verticale

OK ! Merci pour ces deux pistes !

J’avais complètement oublié le coup de la simple quote (avant que ça soit possible dans Textpattern j’utilisais un plugin pour imbriquer les tags…). Cela dit ça marche bien en apparence dans ce cas précis.

Je commence quand-même par corriger ça et puis j’explore la piste gt:NUM si ça ne suffit pas.

Et si ça ne suffit pas, je vais faire 2-3 tests avec d’autres valeur pour déterminer plus précisément où ça coince.


Nico

Offline

#4 2010-12-13 09:34:51

Niconemo
Member
From: Rhône-Alpes, France
Registered: 2005-04-18
Posts: 557

Re: [fr-fr] contenu conditionnel si article_image horizontale ou verticale

Bingo !

Merci encore, c’est bien le coup de la simple quote.

Bizarrement ça arrivait à afficher le bon résultat mais pas à inclure celui-ci dans un calcul. Et ça foirait aussi dans adi_calc (voir plus bas) du coup je me suis dit qu’effectivement il y a un truc que je faisais mal.

Du coup j’ai deux pistes possibles à mon problème :

  1. soit vérifier si la hauteur est plus grande que la largeur
  2. soit calculer (avec adi_calc) si h/l supérieur ou inférieur à 1

Ça revient au même mais je testerai les deux pour garder la plus pratique ou la plus élégante.

Edit. : ah… Non. ça ne marche pas mieux en fait… Je pousse les tests un peu plus loin.

Last edited by Niconemo (2010-12-13 09:43:50)


Nico

Offline

#5 2010-12-13 09:38:16

Dragondz
Moderator
From: Algérie
Registered: 2005-06-12
Posts: 1,548
Website GitHub Twitter

Re: [fr-fr] contenu conditionnel si article_image horizontale ou verticale

Ben je pense que la 1 est la plus simple cela t’évite d’utiliser un deuxième plugin (adi_calc) non?

Offline

#6 2010-12-13 16:18:04

sacripant
Plugin Author
From: Rhône — France
Registered: 2008-06-01
Posts: 479
Website

Re: [fr-fr] contenu conditionnel si article_image horizontale ou verticale

Si jamais tu n’a pas de solution avec smd_if.
Le plug’in “smd_gallery” permet de filter à l’aide de l’attribut aspect les images dans les différents formats :

aspect : filter images by this list of aspect ratios. Choose from any of portrait, landscape or square

Ensuite appliquer un contenu conditionnel à l’intérieur du tag ou grâce à des variables.

Last edited by sacripant (2010-12-13 16:18:38)

Offline

#7 2010-12-14 13:52:10

Niconemo
Member
From: Rhône-Alpes, France
Registered: 2005-04-18
Posts: 557

Re: [fr-fr] contenu conditionnel si article_image horizontale ou verticale

y compris avec les images associées à l’article (article_image) et dans un modèle d’article ?
Je vais jeter un oeil…


Nico

Offline

#8 2010-12-15 16:11:04

Niconemo
Member
From: Rhône-Alpes, France
Registered: 2005-04-18
Posts: 557

Re: [fr-fr] contenu conditionnel si article_image horizontale ou verticale

Bon. Après un test repris à zéro, au propre et au calme, sur un module d’article tout neuf…

Ça marche très bien.

Voici le code pour ceux que ça intéressent :

<!-- passage des variables -->

<txp:variable name="hauteur-image" value='<txp:upm_article_image><txp:upm_img_full_height /></txp:upm_article_image>' />
<txp:variable name="largeur-image" value='<txp:upm_article_image><txp:upm_img_full_width /></txp:upm_article_image>' />

<!-- comparaison -->

<txp:smd_if field="txpvar:largeur-image" operator="gt:NUM" value='<txp:variable name="hauteur-image" />'>
	<p>Largeur > Hauteur (paysage)</p>
<txp:else />
	<p>Largeur < Hauteur (portrait)</p>
</txp:smd_if>

le plus drôle, c’est que je n’en ai plus besoin, j’ai trouvé un truc bien plus élégant pour mon problème d’affichage. Mais j’aime pas rester sur un échec… Ça me servira bien un jour :-D

Pour SMD_gallery : je n’ai pas encore eu l’occasion de tester à fond ce plugin très intéressant (normal; c’est encore du SMD !). Mais pour le portfolio sur lequel je travaille (le mien, en fait, j’en ai marre d’être plus mal chaussé que mes clients), je tiens à rester en mode article, avec une image associée à l’article, pour plus de souplesse. Hors SMD_gallery travaille sur la base de la liste des images.

Last edited by Niconemo (2010-12-15 16:18:57)


Nico

Offline

#9 2010-12-16 13:51:51

Niconemo
Member
From: Rhône-Alpes, France
Registered: 2005-04-18
Posts: 557

Re: [fr-fr] contenu conditionnel si article_image horizontale ou verticale

Argh ! Bloke (alias SMD) vient juste de m’ouvrir les yeux sur un tout nouveau tag txp:image_info qui peut récupérer ce type d’info en natif (associé à un autre nouveau tag txp:images, avec un “s”). J’ai installé TXP 4.3 bêtement, sans même regarder les nouvelles fonctions…

Du coup

<txp:images>
<txp:smd_if field='<txp:image_info type="w" />' operator="gt" value='<txp:image_info type="h" />'>
	<p>Largeur > Hauteur (paysage)</p>
<txp:else />
	<p>Largeur < Hauteur (portrait)</p>
</txp:smd_if>
</txp:images>

C’est quand même plus élégant non ?

Last edited by Niconemo (2010-12-16 15:01:37)


Nico

Offline

Board footer

Powered by FluxBB