Вывод сообщений с картинками вне форума

Автор Олег Верещагин, 08 февраля 2007, 23:07:38

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

Олег Верещагин

Кто-нибудь реализовывал подобную функцию? А то лень копаться ;)
Как без картинок - это в SSI есть, а вот с картинками...

_cosmos


Олег Верещагин


_cosmos

чуть переделал функцию вывода последних сообщенийв  ssi
вот если поможет она еще пасрит картинки в тексте сообщения и выводит их

Цитировать
function ssi_topic_post_list($p='',$limit=1000)  {
global $db_prefix,$glob,$modSettings,$pGROUP;

$r='';

$_CODE    = addslashes(trim($p));
$ID_TOPIC = intval(ssi_postinfo($_CODE));


if($ID_TOPIC < 1)  return '';
//« <a href="http://forum.ru/index.php/topic,{ID_TOPIC}.0.html#msg{ID_MSG}" >Посмотреть на форуме</a> »
$tpl_post ='<div class="o_subblock" style="width:500px;font-size:12px">{avatar} <a href="http://forum.colesa.ru/index.php?action=viewprofile;user={pname_url}" title="Информация пользователя" target="_blank"><b>{posterName}</b></a>
             <span class="sm">«{posterTime}»</span><br>
                 {body}
                 <center>{IMG_{ID_MSG}}</center>
                 
                 <a href="http://forum.ru/index.php/topic,{ID_TOPIC}.0.html#msg{ID_MSG}" >на форум »</a></div>';


$tpl_img = '<div style="overflow:auto;width:480px;"><img src="http://forum.ru/index.php?action=dlattach;topic={ID_TOPIC};attach={ID_ATTACH};image" alt="" border="0" height="{HEIGHT}" width="{WIDTH}" ></div>';
$_DELIM  = '<hr>';
//  {{ID_ATTACH}_LINK} $tpl_lnk = '<a href="http://forum.ru/index.php?action=dlattach;topic={ID_TOPIC};attach={{ID_ATTACH}_LINK};image" target="_blank">';



// --основной цикл----------перебор постов----------
//ID_TOPIC,ID_BOARD,ID_MSG,subject,posterName,posterEmail,posterTime,ID_MEMBER,body,smileysEnabled
   $request = db_query("SELECT m.*, a.HEIGHT,a.WIDTH,a.ID_ATTACH,a.ID_THUMB,u.ID_POST_GROUP
                             FROM  {$db_prefix}messages AS m left join {$db_prefix}attachments AS a
                             ON m.ID_MSG=a.ID_MSG

                             left join {$db_prefix}members AS u
                             ON u.ID_MEMBER=m.ID_MEMBER


                             WHERE m.ID_TOPIC = '$ID_TOPIC'

                             ORDER BY m.ID_MSG", __FILE__, __LINE__);


                             //AND a.ID_THUMB = '0'  GROUP BY m.ID_MSG
        $row = array();
        $P_ARR = array();
        $i=1;
   while($row = mysql_fetch_assoc($request))
        {
            //-----------prepare data ---------------
             // echo $row['ID_MSG']."<br>";
            if(!in_array($row['ID_MSG'],$P_ARR))
             {
             // массив идент постов
              $P_ARR[] =  $row['ID_MSG'];
             //echo "<br>";
             if($i==1) {
                        unset($a);
                        //$a = explode('<hr>',str_replace('&lt;hr&gt;','<hr>',$row[body]),2);
                  $a = explode('
',$row[body],2);
                  
                        $row['body'] = (count($a) == 2)? $a[1] : $row[body];
                        $ID_MSG = $row['ID_MSG'];
                        }
                       
             $row['body'] = stripslashes(parse_bbc($row['body'], $row['smileysEnabled'], $row['ID_MSG']));
             $row['posterTime'] = date(' d.m.Y, H:i ',$row['posterTime']);
             $row['pname_url'] =rawurlencode($row['posterName']);
             $row['avatar'] = '<img src="http://forum.ru/avatars/noavatar.gif">';                     
           
           
            // $row['pgroupName'] = $pGROUP[$row[ID_POST_GROUP]];

             $r.= PARSE_TPL($tpl_post,$row);
             //убираем {img_123} если нет картинки в посте
             if(intval($row['ID_ATTACH'])== 0) $r = PARSE_TPL($r,"IMG_".$row['ID_MSG'],"");
             
             $i++;
             }

             // маленькие КАРТИНКИ
             if($row['ID_ATTACH']>0 && $row['ID_THUMB'] =='0') $IMGS_ARR[$row['ID_MSG']][] = PARSE_TPL($tpl_img,$row);
             // большие КАРТИНКИ
             if($row['ID_ATTACH']>0 && $row['ID_THUMB'] > '0') $IMGB_ARR[$row['ID_THUMB']."_LINK"] = $row['ID_ATTACH'];

             if($i>$modSettings['topicSummaryPosts']) break;
             unset($row);
             } // --основной цикл----------
             
//------------end part--------------


//---------парсинг картинок
//reset($IMGS_ARR);
//echo  var_dump($IMGS_ARR);


while(list($k,$sarr)=each($IMGS_ARR))
  {
  $id_msg = $k;
   while ( list($key, $imgs) = each($sarr) )
       {
        $IMG["IMG_".$id_msg].=$_DELIM.$imgs;
       }
   }

$r = PARSE_TPL($r,$IMG);
//$r = PARSE_TPL($r,$IMGB_ARR);
$npost = ssi_numPosts($ID_TOPIC)+1;
//-----------добавления
$ADD = ($npost > $modSettings['topicSummaryPosts'])? "<div class='block' style='text-align:center'><a href='http://forum.ru/index.php/topic,$ID_TOPIC.0.html#msg$ID_MSG' >Читать все комментарии</a> (".$npost.")</div>" : "";
$r.=$ADD;

return $r;
}

Олег Верещагин

Спасибо. Постараюсь разобраться. Уже давно не работал с форумом.

_cosmos

1 проблемма тока непонятно как однозначно определить адрес  аватара пользователя

Олег Верещагин

Мне это и не нужно. У меня статьи из газет и журналов храняться в первом сообщении темы. И вот это первое сообщение мне и нужно выводить на сайте. Аватары тут лишние.