2014-10-08 111 views
1

当CMS中没有图像时,我想显示默认图像。当没有图像时显示默认图像

到目前为止,我得到这个代码:

<li><img alt="" class="img-responsive" src=" 
         <? if($artikel[0]['images'] == ''){ ?> 
           images/defaultimg.jpg 
         <? }else{ ?> 
         cms/images/<? 

           $plaatje = $artikel[0]['images']; 
           $plaatje = explode('\/', $plaatje); 
           $plaatje = $plaatje[1]; 
           $plaatje = explode('"', $plaatje); 
           $plaatje = $plaatje[0]; 
           echo $plaatje; 

         } 
         ?>"></li> 

但这不显示图像。我知道图像在那里,所以我认为输出的html代码有些问题。

有人看到了吗?根据要求

感谢

输出代码:

<img alt="" class="img-responsive" src=" 
                   cms/images/"> 

我得到了正确的代码:

   <?php 
        $image = "images/defaultimg.jpg"; 

        $pl = $artikel[0]['images']; 
        $pl = explode('\/', $pl); 
        $pl = $pl[1]; 
        $pl = explode('"', $pl); 
        $pl = $pl[0]; 
        $pl = explode('.', $pl); 
        $pl = $pl[1]; 

        echo $pl; 

        if($pl == 'jpg'){ //Check if string is empty 
         $plaatje = $artikel[0]['images']; 
         $plaatje = explode('\/', $plaatje); 
         $plaatje = $plaatje[1]; 
         $plaatje = explode('"', $plaatje); 
         $plaatje = $plaatje[0]; 
         // If the string supplied in the if condition isn't empty i assume that there's an image 
         // so i prepend the imagefolder as source 
         $image = 'cms/images/'.$plaatje; 
        } 

        $html = '<li><img alt="" class="img-responsive" src="'.$image.'"></li>'; 

        echo $html 

       ?> 
+0

输出代码是什么? – 2014-10-08 07:37:00

+0

试着回应你默认的图像地址:echo'images/defaultimg.jpg';可能是问题因为url中的\ n字符 – mochalygin 2014-10-08 07:38:42

+0

@okio,我添加了它。 Aleksandr,不幸的是没有这样做。 – user50248 2014-10-08 07:42:49

回答

2

为什么不分开,如果从您的标记else逻辑,而不是混乱起来在该来源属性上。例如:

<?php 

$image = ''; 
if($artikel[0]['images'] == '') { 
    $image = 'images/defaultimg.jpg'; // wrap it with quotes 
} else { 
    $plaatje = $artikel[0]['images']; 
    $plaatje = explode('\/', $plaatje); 
    $plaatje = $plaatje[1]; 
    $plaatje = explode('"', $plaatje); 
    $image = 'cms/images/' . $plaatje[0]; // append the filename with that particular path 
} 

?> 

<li><img alt="" class="img-responsive" src="<?php echo $image; ?>"></li> 
+0

是啊 – user50248 2014-10-08 07:44:43

+1

'$ artikel [0] ['images']'包含什么?你有这样的样本字符串吗? – Ghost 2014-10-08 07:47:42

+0

这是一篇文章,因为它不是joomla网站添加到joomla cms 。 代码始终输出: 我不知道为什么没有图片,那么为什么它寻找在CMS目录 – user50248 2014-10-08 08:14:50

1
尝试

<li><img alt="" class="img-responsive" src=" 
         <?php if(empty($artikel[0]['images'])){ 
           echo "images/defaultimg.jpg"; 
         }else{ 


           $plaatje = $artikel[0]['images']; 
           $plaatje = explode('\/', $plaatje); 
           $plaatje = $plaatje[1]; 
           $plaatje = explode('"', $plaatje); 
           $plaatje = $plaatje[0]; 
           echo "cms/images/".$plaatje; 

         } 
         ?>"></li> 
1

AS @Ghost说,从图separe逻辑,另一种解决方案更干净:

<?php 

    if (empty($artikel[0]['images']){ 
     $artikel[0]['images'] = 'images/defaultimg.jpg'; 
    }else{ 
     $artikel[0]['images'] = 'cms/images/' . basename($artikel[0]['images']); 
    } 

?> 

<li><img alt="" class="img-responsive" src="<?php echo $artikel[0]['images']; ?>"></li> 
0

的问题似乎是在布局你的代码,正如你在输出中清楚地看到的那样,你得到了换行符,可能还有更多未知的未知数。

更好地重构它,所以像这样。这一切

<?php 
    $image = "images/defaultimg.jpg"; 
    if($artikel[0]['images'] != ''){ //Check if string is empty 
     $plaatje = $artikel[0]['images']; //Do your magic here 
     $plaatje = explode('\/', $plaatje); 
     $plaatje = $plaatje[1]; 
     $plaatje = explode('"', $plaatje); 
     $plaatje = $plaatje[0]; 
     // If the string supplied in the if condition isn't empty i assume that there's an image 
     // so i prepend the imagefolder as source 
     $image = 'cms/images/'.$plaatje; 
    } 

    $html = '<li><img alt="" class="img-responsive" src="$image"></li>'; 

    echo $html 

?> 

首先将提高你的代码的所有你能不头痛你想在那里做什么看的可读性和第二。

这样你不必关心2个案例,你有一个案例需要照顾,其余部分由默认变量处理。

但是请注意,在您的$ artikel [0] ['images']中也可能存在一些错误,所以最终您会添加一个错误字符串到您的imagesource中,而这并不是你想要的。

无论何时向用户显示某些内容,都应检查该文件是否存在。你再一次得到了你未知的未知数。

您的变量的赋值会再看看这样

if(file_exists('cms/images/'.$plaatje)){ 
    $image = 'cms/images/'.$plaatje; 
} 

这将防止上述问题,既然你有退出的一个点,该代码工作的人之后,你会很感激。

+0

感谢您的回答,当我使用您的代码时,它使用cms/images作为源代码。当没有找到图像时,这不是我想要的。 – user50248 2014-10-08 08:08:23

+0

@ user50248如果您的字符串不为空,请在编辑答案中查看我的评论,我假设这是一张图片。如果它是空的,条件就不是真的,因此它不会通过这些语句,这就是为什么我初始化变量在顶部,所以你只需要关心你希望发生的情况 – Jeredepp 2014-10-08 08:13:23

0

我得到了正确的代码。

     <?php 
          $image = "images/defaultimg.jpg"; 

          $pl = $artikel[0]['images']; 
          $pl = explode('\/', $pl); 
          $pl = $pl[1]; 
          $pl = explode('"', $pl); 
          $pl = $pl[0]; 
          $pl = explode('.', $pl); 
          $pl = $pl[1]; 

          echo $pl; 

          if($pl == 'jpg'){ //Check if string is empty 
           $plaatje = $artikel[0]['images']; 
           $plaatje = explode('\/', $plaatje); 
           $plaatje = $plaatje[1]; 
           $plaatje = explode('"', $plaatje); 
           $plaatje = $plaatje[0]; 
           // If the string supplied in the if condition isn't empty i assume that there's an image 
           // so i prepend the imagefolder as source 
           $image = 'cms/images/'.$plaatje; 
          } 

          $html = '<li><img alt="" class="img-responsive" src="'.$image.'"></li>'; 

          echo $html 

         ?> 
+0

好,无论工作你,无论如何,这应该是一个编辑问题,另一个旁注:我认为你试图获得该json_string这不是很好,我现在可以看到为什么你试图爆炸该字符串'\ \ /'。最有可能的是从该url路径中跳出反斜杠。我建议用'json_decode()'来解析它们。但不管怎么说。如果它工作,它的工作原理 – Ghost 2014-10-08 08:36:45

+0

我在哪里标记为已解决? – user50248 2014-10-08 08:48:33