Gå til innhold

"Siste fra forumet" - hvordan?


Anbefalte innlegg

På hw.no (og de andre sidene) har dere de siste diskusjonene fra forumet i menyen til høyre, feks "Blabbedi blabla dublibbediblibb... (5)" osv.

 

Hvordan gjør dere dette? Er det noe funksjoner integrert i IPB, eller er det en nedlastbar mod noenplass, eller har dere laget mod selv?

 

Jeg hadde slik funsksjon selv på min side, men etter at jeg gikk over fra phpbb til IPB (jada, med lisens! - kosta meg 185 dollar :p), så har jeg ikke funnet noen mod som gjorde det samme.

Lenke til kommentar
Videoannonse
Annonse

Vi henter ut X antall tråder fra databasen, og sorterer etter lastpost-feltet i tabellen. Deretter forkortes strengen til X antall tegn om nødvendig, og voila.

 

Her er pseudokode for vår metode:

 

Hent ut alle tråder, sorter etter lastpost med limit 0,10 f.eks.
Loop gjennom alle trådene.
- if (tittel på tråd > max_length)
  -- Forkort tittel, og legg til "..." på slutten.
- Print ut. Eks: <li>$title ($replycount)</li>
Ferdig loop.

Lenke til kommentar
Vi henter ut X antall tråder fra databasen, og sorterer etter lastpost-feltet i tabellen. Deretter forkortes strengen til X antall tegn om nødvendig, og voila.

 

Her er pseudokode for vår metode:

 

Hent ut alle tråder, sorter etter lastpost med limit 0,10 f.eks.
Loop gjennom alle trådene.
- if (tittel på tråd > max_length)
  -- Forkort tittel, og legg til "..." på slutten.
- Print ut. Eks: <li>$title ($replycount)</li>
Ferdig loop.

5412012[/snapback]

 

Tusen takk, får prøve å friske opp mine php-kunnskaper, men det virket enkelt i allefall :whistle:

 

Du kan jo oppdatere til SMF (http://www.simplemachines.org).

SMF har denne funksjonen integrert (SSI-kall).

 

Og Forresten, med SMF trenger du ikke betale lisens, fordi det er gratis software ;)

 

Men du finner sikkert en gratis mod for IPB som gjør det samme også...

5412090[/snapback]

 

Har allerede betalt for en livsvarig lisens ;)

Lenke til kommentar
Vi henter ut X antall tråder fra databasen, og sorterer etter lastpost-feltet i tabellen. Deretter forkortes strengen til X antall tegn om nødvendig, og voila.

 

Her er pseudokode for vår metode:

 

Hent ut alle tråder, sorter etter lastpost med limit 0,10 f.eks.
Loop gjennom alle trådene.
- if (tittel på tråd > max_length)
  -- Forkort tittel, og legg til "..." på slutten.
- Print ut. Eks: <li>$title ($replycount)</li>
Ferdig loop.

5412012[/snapback]

 

 

Når dere først snakker om algoritmen deres kan jeg kanskje påpeke at dere leifer litt i forkortelseskoden ders. Dere forkorter sånn at html escapes blir partsielle og vi ender opp med å få tittler som dette: "Easynote A8500, 13,3&q... (0)"

 

Burde kanskje postet dette på tilbakemeldinger til forumet, men men.

Lenke til kommentar

Du bruker en WHERE i SQL-spørringen for å filtrere ut de forumene du vil ha og ikke vil ha.

 

F.eks hvis "Staff Forum" har forumid 3:

SELECT * FROM blabla WHERE forumid != 3

 

Edit: Flytter denne til PHP-forumet istedenfor.

Lenke til kommentar
Du bruker en WHERE i SQL-spørringen for å filtrere ut de forumene du vil ha og ikke vil ha.

 

F.eks hvis "Staff Forum" har forumid 3:

SELECT * FROM blabla WHERE forumid != 3

 

Edit: Flytter denne til PHP-forumet istedenfor.

5413555[/snapback]

 

Ah, takker :) Gjorde noe lignende etterhvert, funker fint nå :)

Lenke til kommentar

Nei, dette gjøres ikke automatisk, i allefall ikke i 2.1.x. Man kan få de siste postene opp fra et spesielt forum (news export), men ikke bare topics og replies.

 

Dette er de tre tingene man kan bruke ssi.php til:

 

+--------------------------------------------------------------------------
|   To show the last 10 topics and posts in the news forums...
+--------------------------------------------------------------------------

include("http://domain.com/forums/ssi.php?a=news&show=10");

You can adjust the "show" attribute to display a different amount of topics.

+--------------------------------------------------------------------------
|   To show the board statistics
+--------------------------------------------------------------------------

include("http://domain.com/forums/ssi.php?a=stats");

+--------------------------------------------------------------------------
|   To show the active users stats (x Members, X Guests, etc)
+--------------------------------------------------------------------------

include("http://domain.com/forums/ssi.php?a=active");

 

Førstnevnte gir hele første posten i tråden, ikke bare topic title.

 

Anyways, spørsmål - hvordan får jeg spesialtegn som feks ' til å vises riktig, og ikke som #&; eller i den duren?

Endret av KriFos
Lenke til kommentar
Gjest Slettet+6132
Du kan jo oppdatere til SMF (http://www.simplemachines.org).

SMF har denne funksjonen integrert (SSI-kall).

 

Og Forresten, med SMF trenger du ikke betale lisens, fordi det er gratis software ;)

 

Men du finner sikkert en gratis mod for IPB som gjør det samme også...

5412090[/snapback]

 

Hva er det med alle disse "Bytt til SMF"-postene i det siste? Han sier jo at han har betalt en særdeles dyr lisens, så hvorfor bytte nå?

 

Trådstarter: Du kjører en spørring mot din database som henter ut alle public forums og sorterer etter den siste post. :)

 

Anyways, spørsmål - hvordan får jeg spesialtegn som feks ' til å vises riktig, og ikke som #&; eller i den duren?

 

Kjør en str_replace() på alle html-spesialtegn før forkortingen av strengen.

Endret av Slettet+6132
Lenke til kommentar

Hmm, hvordan gjør jeg det da? Her er forresten den ferdige koden:

 

<?PHP

// Connection to database
$db_user = "dbusername";
 $db_passwd = "dbpassword";
 $db_name = "dbname";

 $db = mysql_connect("localhost", $db_user, $db_passwd);
 mysql_select_db($db_name, $db);

// Fetch info from DB

$result = mysql_query(

"SELECT * 
FROM `ibf_topics` 
WHERE `forum_id` NOT IN (#,#,#,#,#)
ORDER BY `last_post` DESC
LIMIT 0, 10", $db

);

// Draw table
echo "<table>";


while ($myrow = mysql_fetch_array($result))

{

// Fetch topic title and link id

$title=$myrow["title"];
$tid=$myrow["tid"];
$posts=$myrow["posts"];
$max_lenght = "23";

// Shorten topic title
if (strlen($title) > $max_lenght)
$title = substr_replace($title, '...', $max_lenght);




// Print topic title

echo "

<tr><td><a href=\"http://www.yourboardurl.com/index.php?showtopic=$tid \" target=\"_blank\">$title ($posts)</a></td></tr>

";

}

echo "</table>";

?>

Endret av KriFos
Lenke til kommentar

altså... med koden du postet her, når den skriver ut, skriver den med ting som dette: #&;. Hvis den gjør det, bare legg inn

// Print topic title

$title = html_entity_decode($title);

echo "

<tr><td><a href=\"http://www.yourboardurl.com/index.php?showtopic=$tid \" target=\"_blank\">".$title." "(".$posts." )</a></td></tr>

";

 

EDIT: liten syntax feil, fikset.

Endret av MC2
Lenke til kommentar

Ser ikke ut til å fikse problemet, men oppdaget en ting - har kun dette problemet når jeg har forkortet meldingen til et visst antall tegn...

 

F.eks. når jeg har $max_lenght = "21"; altså til 21 tegn (som jeg bruker i koden på sida mi), så vises den aktuelle setningen slik:

 

Help with Montalban... (7)

 

Mens når jeg bruker $max_lenght = "23"; altså 23 tegn, vises setningen slik:

 

Help with Montalban'... (7)

 

Virker som at en spesialkarakter ikke teller ' som 1 tegn, men som 3 tegn. Derfor, når koden min forkorter en setning som gjør at ' blir forkortet, så viser den begynnelsen på html-koden for ', her altså .

 

Håper det made sense ... :p

Lenke til kommentar

Hjalp ikke... :/

 

Må på en eller annen måte få ' til å telles som ett tegn og ikke flere før den blir forkortet, men hjalp ikke med det som ble nevnt.

 

 

edit: eller omvendt, hva om jeg teller antall tegn i spesialkarakterene, og så legger dette resultatet til max_lenght med if? Hmm...

 

edit2: feks om det er to spesialtegn: "It's nice to see you're fine" - denne setningen er egentlig 28 tegn, men pga at ' telles som 5 (& # 3 9 ; ). blir det da 26 tegn + 2 spesialtegn (2x5=10) = 26 + 10 = 36 tegn istedet for 28 tegn.

 

(Måtte skrive koden med mellomrom ellers hadde forumet laget en ' ut av det... :p)

 

Dette burde virke - men jeg vet ikke hvordan jeg skal få det til:

 

1. Finne antall spesial-tegn ($scharnumber) i $string

2. Finne antall tegn ($scharvalue) som spesial-tegnene "koster" (feks ' to ganger = 10)

3. Legge til $scharvalue, minus $scharnumber til $max_lenght, før forkortingen foregår.

Endret av KriFos
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...