2014-10-08 157 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

相關問題