Help - Search - Member List - Calendar
Full Version: IPB Portal : Derniers Message
IPBR-FR > Entraide > Forums dédiés aux mods majeures > Portal
sticky-fingers
Bonsoir, me revoila avec mes histoires de portail

Je souhaiterais savoir comment réaliser un tel bloc pour mon portail :



La raison est simple, j'ai une version 2 blocs en cours mais mes membres souhaitent pouvoir voir les derniers messages rapidement depuis le portail et cette solution me semble la plus appropriée.

Gapman a un superbe portail pour la 2.0 mais il ne veut plus le diffuser de crainte d'avoir des soucis en raison du passage payant d'IPB sad.gif
Fantome
il suffit de mettre 3 fois le code pour afficher les derniers posts.

Vous pouvez vous inspiré de [Bloc]Mods à Tester


PS: pense a mettre ton profile à jour
sticky-fingers
Si je mets 3 fois le code, il va m'afficher 3 fois les memes X derniers messages huh.gif

Alors que je souhaiterais mettre par exemple les 18 derniers messages sur 3 colonnes.

ps: profil a jour wink.gif
Fantome
Il suffit de modifier un peut la requéte SQL pour allez chercher les messages dans un forum différent les 3 fois.
sticky-fingers
Je ne veux pas faire exactement comme Gapman.

Je veux aller chercher les x derniers messages et les repartir en 3 colonnes.

Par contre je ne vois pas comment faire ?

user posted image
sticky-fingers
Bon je viens de trifouiller 2 heures le skin_portal, j'arrive a une solution pas trop éloignée de ce que je veux faire :

[CODE=skin_portal]
//===========================================================================
// tmpl_topic_row
//===========================================================================
function tmpl_topic_row($tid="",$title="",$posts="",$views="",$mid="",$mname="",$date="") {
global $ibforums;
$IPBHTML = "";
//--starthtml--//


$IPBHTML .= <<<EOF
<div class="post1">
<table border="0">
<tr>
<td nowrap><b>
<a href="{$ibforums->base_url}showtopic=$tid&view=getnewpost">$title</a></b>&nbsp par &nbsp<a href="{$ibforums->base_url}showuser=$mid">$mname</a> le $date</b></td>
<td style="white-space:nowrap"><b>
<a href="{$ibforums->base_url}showtopic=$tid&view=getnewpost">$title</a></b>&nbsp par &nbsp<a href="{$ibforums->base_url}showuser=$mid">$mname</a> le $date</b></td>
</tr>
</table></div>


EOF;[/CODE]

Ce qui donne :

user posted image

Donc je me retrouve avec le meme contenu sur les 2 colonnes, 1er soucis (qui est normal vu que j'ai copié 2 fois le meme code mais comment faire ?!)

2nd soucis, la taille du truc comparé a celui de Gapman, je pense qu'il faut travailler sur les polices, mais pour l'espacement vertical ca doit venir du <div class="post1"> mais la encore je vois pas comment régler ca ?
sticky-fingers
Un ptit up ? Fantome ?
Youp3
le problème est qu'il faut séparer le résultat de la requête SQL en trois d'envoier ces 3 variables à ta fonction skin.
sticky-fingers
c'est tout le probleme blush.gif ... comment faire ?
Youp3
pour le moment je n'ai pas trop de temps, mais si j'en trouve un petit peu je regarde çà.
sticky-fingers
C'est très sympa wink.gif
Fantome
Code original

CODE
 /*-------------------------------------------------------------------------*/
 // Latest Posts
/*-------------------------------------------------------------------------*/
 
 function _show_latestposts()
 {
 global $ibforums, $DB, $std, $print;
 
  if ( ! $ibforums->vars['csite_discuss_on'] )
  {
   return;
  }
 
  $html  = "";
  $limit = $ibforums->vars['csite_discuss_max'] ? $ibforums->vars['csite_discuss_max'] : 5;
 
  if ( count($this->good_forum) > 0 )
    {
     $qe = "forum_id IN(".implode(',', $this->good_forum ).") AND ";
    }
 
  $DB->simple_construct( array( 'select' => 'tid, title, posts, starter_id as member_id, starter_name as member_name, start_date as post_date, views',
          'from'   => 'topics',
          'where'  => "$qe approved=1 and state != 'closed' and (moved_to is null or moved_to = '')",
          'order'  => 'start_date DESC',
          'limit'  => array( 0, $limit ) ) );
 $DB->simple_exec();
 
  while ( $row = $DB->fetch_row() )
  {
   $html .= $this->_tmpl_format_topic($row, $ibforums->vars['csite_discuss_len']);
  }
 
  return $this->html->tmpl_latestposts($html);
 }
 



code modifier en 30s et pas tester
CODE
 /*-------------------------------------------------------------------------*/
 // Latest Posts
/*-------------------------------------------------------------------------*/
 
 function _show_latestposts()
 {
 global $ibforums, $DB, $std, $print;
 
  if ( ! $ibforums->vars['csite_discuss_on'] )
  {
   return;
  }
 
  $html  = "";
  $limit = $ibforums->vars['csite_discuss_max'] ? $ibforums->vars['csite_discuss_max'] : 5;
 
/*   if ( count($this->good_forum) > 0 )
    {
     $qe = "forum_id IN(".implode(',', $this->good_forum ).") AND ";
    }*/
  //colone 1
  $html .="<table><tr><td>";
  $DB->simple_construct( array( 'select' => 'tid, title, posts, starter_id as member_id, starter_name as member_name, start_date as post_date, views',
          'from'   => 'topics',
          'where'  => "forum_id IN (1,2) AND approved=1 and state != 'closed' and (moved_to is null or moved_to = '')",
          'order'  => 'start_date DESC',
          'limit'  => array( 0, $limit ) ) );
 $DB->simple_exec();
 
  while ( $row = $DB->fetch_row() )
  {
   $html .= $this->_tmpl_format_topic($row, $ibforums->vars['csite_discuss_len']);
  }
 
  //colone 2
  $html .="</td><td>";
  $DB->simple_construct( array( 'select' => 'tid, title, posts, starter_id as member_id, starter_name as member_name, start_date as post_date, views',
          'from'   => 'topics',
          'where'  => "forum_id IN (3,4) AND approved=1 and state != 'closed' and (moved_to is null or moved_to = '')",
          'order'  => 'start_date DESC',
          'limit'  => array( 0, $limit ) ) );
 $DB->simple_exec();
 
  while ( $row = $DB->fetch_row() )
  {
   $html .= $this->_tmpl_format_topic($row, $ibforums->vars['csite_discuss_len']);
  }
 
  //colone 3
  $html .="</td><td>";
  $DB->simple_construct( array( 'select' => 'tid, title, posts, starter_id as member_id, starter_name as member_name, start_date as post_date, views',
          'from'   => 'topics',
          'where'  => "forum_id IN (5) AND approved=1 and state != 'closed' and (moved_to is null or moved_to = '')",
          'order'  => 'start_date DESC',
          'limit'  => array( 0, $limit ) ) );
 $DB->simple_exec();
 
  while ( $row = $DB->fetch_row() )
  {
   $html .= $this->_tmpl_format_topic($row, $ibforums->vars['csite_discuss_len']);
  }
  $html .= "</td></tr></table>";
  return $this->html->tmpl_latestposts($html);
 }
 


Voila ça doit étre un truc du genre qu'il faut faire.
sticky-fingers
Merci Fantome wink.gif ... mais ca ne marche pas, je pense qu'apres il faut bidouiller le skin_portal pour lui faire afficher les 3 colonnes/requetes ?
Fantome
oui c'est possible comme je l'est dit j'ai pas tester. Mais l'idée est la aprés faut fignoler.
sticky-fingers
Je ne vois pas comment faire alors closedeyes.gif

Merci quand meme bien.gif
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Invision Power Board © 2001-2012 Invision Power Services, Inc.