SSI BoardNews Fonksiyonunda, ilk resmi alma

Başlatan snrj, 18 May 2014 23:24

« önceki - sonraki »

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

snrj

SSI.php de öcelikle bunu bul
Kod [Seç]
function ssi_boardNews($board = null, $limit = null, $start = null, $length = null, $output_method = 'echo')
{

Ardından bu fonksiyon içerisindeki şu kodu bul

Kod [Seç]
        // Check that this message icon is there...
         if (empty($modSettings['messageIconChecks_disable']) && !isset($icon_sources[$row['icon']]))
             $icon_sources[$row['icon']] = file_exists($settings['theme_dir'] . '/images/post/' . $row['icon'] . '.gif') ? 'images_url' : 'default_images_url';


Altına Ekle
Kod [Seç]
            // $row['body'] içerisinde <img> kodu ara
   $secimyap = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $row['body'], $sonuc);
   // src="" içindekini al.
if(!empty($matches[0]) && !empty($matches[1]))
   $ilkresim = $sonuc [1] [0];

  else{ // Resim bulunmazsa default resim ekle
     $ilkresim = "http://www.site.com/images/default.jpg";
   }


Bul
Kod [Seç]
'subject' => $row['subject'],
Altına Ekle
Kod [Seç]
'resim' => $ilkresim,

Ve işlememiz tamamlandı. Artık bu resmi haber kısmında kullanacağız. Örneğin eğer SSI.php deki boardnews fonksiyonu değiştirmeden kullanıyorsunuz; aynı fonksiyon içerisindeki şu kısmı bulun

Kod [Seç]
    foreach ($return as $news)
     {
         echo '
             <div>
                 <a href="', $news['href'], '">', $news['icon'], '</a> <b>', $news['subject'], '</b>
                 <div class="smaller">', $news['time'], ' ', $txt['by'], ' ', $news['poster']['link'], '</div>

                 <div class="post" style="padding: 2ex 0;">', $news['body'], '</div>

                 ', $news['link'], $news['locked'] ? '' : ' | ' . $news['comment_link'], '
             </div>';

         if (!$news['is_last'])
             echo '
             <hr style="margin: 2ex 0;" width="100%" />';
     }


Şöyle değiştirin,
Kod [Seç]
foreach ($return as $news)
     {
         echo '
             <div>
                 <a href="', $news['href'], '">', $news['icon'], '</a> <b>', $news['subject'], '</b>
                 <div class="smaller">', $news['time'], ' ', $txt['by'], ' ', $news['poster']['link'], '</div>

                 <div class="post" style="padding: 2ex 0;"><div class="resim_cercevesi">
                 
                 <img src="', $news['image'], '" alt="', $news['subject'], '" class="haber_resmi" /></div>
                 
                 ', $news['body'], '</div>

                 ', $news['link'], $news['locked'] ? '' : ' | ' . $news['comment_link'], '
             </div>';

         if (!$news['is_last'])
             echo '
             <hr style="margin: 2ex 0;" width="100%" />';
     }


Tabiki resim yazılarla bitişk gibi görünecek. Bundan kurtulmak için resme stil vermemiz gerekiyor. Yukarıdaki kodda zaten resme bir class atamıştım.
Şimdiyse bu fonksiyonu kullandığınız alanın kullandığı css dosyasına şunları ekleyin;

Kod [Seç]

.resim_cercevesi
{
float:left;
background:#ddd;
border:1px solid #ccc;}

.haber_resmi{
width:150px;
height:150px;
padding:5px;
margin:3px;
}


Tamam herşey harika. Ama haber metninde resim iki kere çıkıyor. Küçük halini sol tarafa yerleştirdik ama haber metni kısmında kocaman bir resim daha var?

Bunu ben şu şekilde çözüyorum; phpnin standar strip_tags fonksiyonunu veya kendi oluşturduğum bir betikle haber metninden tüm html kodlarını temizliyorum. Böylelikle, hem haber daha düzgün görünüyor hemde resim sadece bir kere görünüyor.

Basitçe; SSI.php'nin en alt kısmına ekleyin;
Kod [Seç]
function temizle($haber) {
     $strs=explode('<',$haber);
     $res=$strs[0];
     for($i=1;$i<count($strs);$i++)
     {
         if(!strpos($strs[$i],'>'))
             $res = $res.'&lt;'.$strs[$i];
         else
             $res = $res.'<'.$strs[$i];
     }
     return strip_tags($res);   
}


Şimdiyse daha önce düzenlediğimiz alana geri dönün ve
Kod [Seç]
  ', $news['body'], '</div> kodunu bulun.

Şu şekilde değiştirin
Kod [Seç]
  ', temizle($news['body']), '</div>

kaynak http://www.simplemachines.org/community/index.php?topic=336895.0