Page 1 sur 1

Afficher une image uniquement si elle existe

Posté : 06 juil. 2010, 14:00
par Catalarem
Bonjour,
Je suis en train de concevoir un site web sous wordpress et ai créé sur l'une des pages un slideshow à l'aide du cycle plugin pour jquery : Les miniatures de projets défilent quand on passe la souris dessus. Tout fonctionne, sauf que l'on est obligé d'avoir un nombre égal et bien défini d'images par article, ce que j'aimerai c'est une fonction qui dirait : si cette miniature existe, alors affiche la, sinon n'affiche rien.

J'ai bien cherché de ce coté ci http://fr2.php.net/file_exists mais je n'y arrive pas vraiment.

Voilà le code :

Code : Tout sélectionner

<!-- Génération de la miniature pour chaque article début --> <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"> <div id="right" class="slideshow"> <image src="<?php echo p75GetThumbnail($post->ID, null, null); ?>"/> <?php $image = get_post_meta($post->ID, 'miniature2', true); ?> <img src="<?php echo $image; ?>" alt="" /> <?php $image = get_post_meta($post->ID, 'miniature3', true); ?> <img src="<?php echo $image; ?>" alt="" /> <?php $image = get_post_meta($post->ID, 'miniature4', true); ?> <img src="<?php echo $image; ?>" alt="" /> </div> </a> <!-- Génération de la miniature pour chaque article fin -->

(la miniature 1 : <image src="<?php echo p75GetThumbnail($post->ID, null, null); ?>"/> est obligatoire et affiche une miniature par défaut s'il n'y a aucune image.)

Et voilà le site : http://primitive-animation.com/site/films

Merci d'avance pour votre aide.
Rémy.

Re: Afficher une image uniquement si elle existe

Posté : 06 juil. 2010, 15:34
par ouckileou
Quel est le problème exactement ?

Re: Afficher une image uniquement si elle existe

Posté : 06 juil. 2010, 15:52
par Catalarem
J'ai défini pour chacun de mes posts Wordpress plusieurs miniatures (on peut en mettre jusque 6) ces miniatures sont incluses dans un cycle en jquery et défilent au passage de la souris > Tout cela fonctionne.

Le seul problème c'est que je suis obligé (par exemple) de mettre 6 images pour chaque article, puisque dans ma boucle wordpress il n'y a pas d'élément conditionnel qui dirait "N'affiche la miniature n° 4 que si elle existe".
Ce que je veux en fait c'est de pouvoir mettre le nombre de miniature que je souhaite pour chaque article au lieu de devoir mettre obligatoirement un nombre bien défini de miniature par article.

Voilà l'Index.php :
<div class="main">
<div class="fix">
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<div class="post" id="post-<?php the_ID(); ?>">

<!-- thumbnail wrapper -->
<div class="thumb main">


<!-- Génération de la miniature pour chaque article début -->	

<a href="<?php the_permalink() ?>" title="<?php the_title(); ?>">
<div id="right" class="slideshow">
<image src="<?php echo p75GetThumbnail($post->ID, null, null); ?>"/>
<?php $image = get_post_meta($post->ID, 'miniature2', true); ?>
<img src="<?php echo $image; ?>" alt="" />
<?php $image = get_post_meta($post->ID, 'miniature3', true); ?>
<img src="<?php echo $image; ?>" alt="" />
<?php $image = get_post_meta($post->ID, 'miniature4', true); ?>
<img src="<?php echo $image; ?>" alt="" />
</div>
</a>
<!-- Génération de la miniature pour chaque article fin -->

<!-- thumbnail title -->
<div class="thumb-title">
<h2><a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"><?php the_title() ?>
</a></h2>
</div>
<!-- thumbnail title end -->

</div>
</div>

Le header :

Code : Tout sélectionner

<!-- include jQuery library --> <script type="text/javascript" src="http://primitive-animation.com/site/images/js/jquery-1.4.2.min.js"></script> <!-- include Cycle plugin --> <script type="text/javascript" src="http://primitive-animation.com/site/images/js/jquery.cycle.all.2.74.js"></script> <script type="text/javascript"> $(document).ready(function() { $('div.slideshow').cycle({ fx: 'scrollLeft', speed: 400, timeout: 800 }); $("div.slideshow").cycle('pause'); //we pause the animation by default $("div.slideshow").mouseover(function(){ $(this).cycle('resume'); }) .mouseout(function(){ $(this).cycle('pause'); }); }); </script> <style type="text/css"> .slideshow { height: 130px; width: 314px; background: url('http://primitive-animation.com/site/images/thumb2.png') } </style>


Les images se trouvent quand à elles postées grâce à des champs personnalisés Wordpress.

Image

Re: Afficher une image uniquement si elle existe

Posté : 06 juil. 2010, 17:28
par ouckileou
Ok ça c'est ce que tu veux faire c'était plutôt bien expliqué au début mais ma question se rapportait à ça :
J'ai bien cherché de ce coté ci http://fr2.php.net/file_exists mais je n'y arrive pas vraiment.
Qu'est-ce que tu as essayé et qu'est-ce qui te fait dire que ça ne fonctionne pas ?

Cette partie là ne peut pas devenir une boucle qui n'affichera que les miniatures trouvées ?
<div id="right" class="slideshow">
<image src="<?php echo p75GetThumbnail($post->ID, null, null); ?>"/>
<?php $image = get_post_meta($post->ID, 'miniature2', true); ?>
<img src="<?php echo $image; ?>" alt="" />
<?php $image = get_post_meta($post->ID, 'miniature3', true); ?>
<img src="<?php echo $image; ?>" alt="" />
<?php $image = get_post_meta($post->ID, 'miniature4', true); ?>
<img src="<?php echo $image; ?>" alt="" />
</div>
J'ai aussi remplacé les balises

Code : Tout sélectionner

par [php], utilise plutôt celles là à l'avenir.

Re: Afficher une image uniquement si elle existe

Posté : 06 juil. 2010, 17:53
par Castor Gaspard
Bonjour,

je suis "meilleur" avec WordPress que sur Php.

Cependant, pourquoi ne comptes-tu pas plutôt les miniatures avec un compteur ? A chaque cycle, la boucle (Loop) incrémente une valeur, et ensuite tu agis sur la valeur. Désolé pour le propos très théorique. :oops:

Cordialement,

Gaspard

Re: Afficher une image uniquement si elle existe

Posté : 07 juil. 2010, 11:57
par Catalarem
Cette partie là ne peut pas devenir une boucle qui n'affichera que les miniatures trouvées ?
<div id="right" class="slideshow">
<image src="<?php echo p75GetThumbnail($post->ID, null, null); ?>"/>
<?php $image = get_post_meta($post->ID, 'miniature2', true); ?>
<img src="<?php echo $image; ?>" alt="" />
<?php $image = get_post_meta($post->ID, 'miniature3', true); ?>
<img src="<?php echo $image; ?>" alt="" />
<?php $image = get_post_meta($post->ID, 'miniature4', true); ?>
<img src="<?php echo $image; ?>" alt="" />
</div>
Si, bien sur que cela peut devenir une boucle (enfin j'espère), mais je ne sais pas comment faire.

À partir de ça :
<image src="<?php echo p75GetThumbnail($post->ID, null, null); ?>"/>

<?php $image = get_post_meta($post->ID, 'miniature2', true); ?>
<img src="<?php echo $image; ?>" alt="" />
<?php $image = get_post_meta($post->ID, 'miniature3', true); ?>
<img src="<?php echo $image; ?>" alt="" />
<?php $image = get_post_meta($post->ID, 'miniature4', true); ?>
<img src="<?php echo $image; ?>" alt="" />
</div>
j'ai essayé ça :

<?php $filename = 'miniature2';
if (file_exists($<?php echo $image; ?>)) {
    echo "<img src="<?php echo $image; ?>" alt="" />; } 
else {
    echo ""; } ?>
ou encore ça :
<?php
$filename = '$image = get_post_meta($post->ID, 'miniature2', true)';

if (file_exists($miniature2)) {
    echo "<img src="<?php echo $image; ?>" alt="" />";
} else {
    echo "";
}
?>

Mais bien sur ça ne marche pas.
Cependant, pourquoi ne comptes-tu pas plutôt les miniatures avec un compteur ? A chaque cycle, la boucle (Loop) incrémente une valeur, et ensuite tu agis sur la valeur. Désolé pour le propos très théorique. :oops:
Je suis un jeune graphiste de 20 ans qui n'ai jamais eu de formation en programmation, et je me "contente" pour l'instant d'aller chercher des codes de ci de là et de les adapter, alors oui c'est purement théorique pour moi et si tu me montre je veux bien te croire mais je n'arriverai jamais de la vie à faire ça tout seul.

Merci pour votre aide en tout cas.

Re: Afficher une image uniquement si elle existe

Posté : 07 juil. 2010, 15:00
par telnes
hello

<?php
for ($i=2;$i<5;$i++){

$filename = get_post_meta($post->ID, 'miniature'.$i, true)';
echo 'debug filename : '.$filename.'!';

if (file_exists($miniature2)) {
    echo '<img src="'.$image.'" alt="" />';
} 

}
?>
plus un truc comme ca

Re: Afficher une image uniquement si elle existe

Posté : 07 juil. 2010, 15:12
par Catalarem
<?php
for ($i=2;$i<5;$i++){

$filename = get_post_meta($post->ID, 'miniature'.$i, true)';
echo 'debug filename : '.$filename.'!';

if (file_exists($miniature2)) {
    echo '<img src="'.$image.'" alt="" />';
} 

}
?>
Erreur :

Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /homez.358/primitiv/www/site/wp-content/themes/Infinity-theme/theme/index.php on line 24

Je suis en PHP 5 .

Re: Afficher une image uniquement si elle existe

Posté : 07 juil. 2010, 16:33
par telnes
problème de quote
<?php
for ($i=2;$i<5;$i++){

$filename = get_post_meta($post->ID, 'miniature'.$i, true);
echo 'debug filename :'.$filename.'!';

if (file_exists($miniature2)) {
    echo '<img src="'.$image.'" alt="" />';
} 

}
?>
mais il faut comprendre un peut ce que tu fait :) c'est mieux quand meme

++

Re: Afficher une image uniquement si elle existe

Posté : 07 juil. 2010, 18:04
par Catalarem
Je ne comprends pas, ça ne fonctionne pas, j'utilise le cycle plugin pour jquery et ça ne fonctionne pas, peut être les images ne sont pas reconnu comme telle et que du coup rien n'est affiché.

Re: Afficher une image uniquement si elle existe

Posté : 08 juil. 2010, 09:37
par telnes
hello

echo 'debug filename :'.$filename.'!';

te retourne quoi ? si il y a une image et si il y a pas d'image

++