"Siste fra forum" i sidebar, phpBB3

"Siste fra forum" i sidebar, phpBB3

Innleggav iAndrew » fre 14.01.2011 16:12

Til dem som har utviklet Mac1.no og andre med riktig peiling.

Jeg ønsker å vise liste over sist aktive forumsemner, siste ubesvarte og gjerne siste emner man selv har vært aktiv i. Jeg vil ikke ha listene kun på separate sider, men i en sidebar overalt i forumet. Altså på samme måte som dere har det her med "Siste fra forum" og "Ubesvarte".

Hvordan oppnår jeg dette? Supert med detaljert forklaring eller link til fremgangsmåte, men noen tips i riktig retning er også veldig nyttig.

Brukerens avatar
medlem i 197 måneder
 

Re: "Siste fra forum" i sidebar, phpBB3

Innleggav ak » lør 15.01.2011 16:22

Vi har laget sidebaren vha av en tabell som starter i overall_header.tpl.php (skriver fra hukommelse, ta alt med en klype salt) og slutter i overall footer. Så i sistnevnte fil legger vi inn den ekstra kolonnen du ser på høyre side før vi avslutter tabellen.

Deretter må du kode opp litt SQL som henter ut den informasjonen du vil vise, og gjøre den tilgjengelig i templaten via includes/functions.php , se etter $template->assign_vars , ca linje 3300.

Administrator
Brukerens avatar
medlem i 236 måneder
 

Re: "Siste fra forum" i sidebar, phpBB3

Innleggav iAndrew » lør 15.01.2011 19:28

Du kommer meg alltid til unnsetning, ak :-D

Nå har jeg kodet en løsning som gir ønsket resultat, men hvis noen som er litt drevne i PHP/SQL kan se over for å sjekke om det er noen grove feil blir jeg veldig glad. Er klar over at koden ikke tar hensyn til ulike rettigheter osv, men er mest opptatt av feil som går på sikkerhet og effektivitet.

Lagt til i functions.php

Kode: Merk alt
// Genererer liste over 10 sist aktive emner
$siste_aktive = '';

$sql = 'SELECT
           topic_id,
           topic_title
       FROM
           ' . TOPICS_TABLE . "
       ORDER BY
          topic_last_post_time DESC
       LIMIT
          0, 10";

$result = $db->sql_query($sql);
       
$siste_aktive ='<ul>';

while ($row = $db->sql_fetchrow($result))
{
   // Avkorting hentet fra /modules/phpbb/phpbb_block_recent_topics.inc.php
   if (strlen($row['topic_title']) > 26)
   {
          //Chop the end off at the last space before the specified length
        $pos = strrpos($row['topic_title'], " ", -(strlen($row['topic_title']) - 26));
           $descstr = substr($row['topic_title'],0,$pos) . " ...";
      }
      else
      {
           $descstr = $row['topic_title'];
      }
   $siste_aktive .= '<li><a href="/forum/viewtopic.php?t=' . $row[topic_id] . '" title="' . $row['topic_title'] . '">' . $descstr . '</a></li>';
   
}
$siste_aktive .= '</ul>';

$db->sql_freeresult($result);


Kode: Merk alt
'SISTE_AKTIVE'    => $siste_aktive,

Brukerens avatar
medlem i 197 måneder
 

Re: "Siste fra forum" i sidebar, phpBB3

Innleggav ak » lør 15.01.2011 20:01

Det er vel greit, sikkerhet er ikke et stort aspekt siden det er en read-only spørring uten input fra brukeren.

Du kan selvfølgelig ønske å cache resultatet, men hvis det ikke er vanvittig med trykk på siden så er MySQL sin innebygde query cache vel så bra som å styre med filer eller memcache.

Administrator
Brukerens avatar
medlem i 236 måneder
 


Returner til PHP



Hvem er i Forumene

Registrerte brukere: Google [Bot]