Questa modifica fa generare a FlatNuke un feed RSS con i commenti più recenti, le nuove discussioni del forum più recenti e le nuove risposte alle discussioni del forum.
Viene utilizzata una funzione centralizzata per ognuna di queste operazioni.
1) Aprite il file functions.php, e scorrete fino a
/**
* Restituisce il livello di una sezione
2) Sopra queste linee, sotto la partentesi graffa (}), inserite il seguente codice:
// genera un feed rss generico --jackoverfull
function crea_RSS($lRSS, $maxRSS, $ilTitolo, $ilLink, $laDescr, $laPubDate, $ilTitoloFeed, $laDescrFeed) {
//ottiene l'indirizzo del sito.
$url = "http://".$_SERVER['SERVER_NAME']."/".$_SERVER['SCRIPT_NAME'];
$url = str_replace("index.php", "", $url);
$url = str_replace("verify.php", "", $url);
$linee = count(explode("\n",(parse_RSS($url.$lRSS."1.xml"))));
// sposta il file rss 1 in posizione 2, sovrascrivendo quello vecchio
// non proprio il metodo ideale per eliminare i vecchi post dalle RSS, ma funzionante...
if ( $linee > $maxRSS/2 ){
if(file_exists($lRSS."2.xml")){
unlink($lRSS."2.xml");
}
rename($lRSS."1.xml",$lRSS."2.xml");
}
// carica gli ultimi post, se presenti
if(!file_exists($lRSS."1.xml")){
$recPost="";
}
else{
$recPost=get_file($lRSS."1.xml");
}
// carica i penultimi post, se presenti
if(!file_exists($lRSS."2.xml")){
$recPost2="";
}
else{
$recPost2=get_file($lRSS."2.xml");
}
fnwrite($lRSS."1.xml", "
".$ilTitolo."
".$ilLink."
".$laDescr."".$laPubDate."".$recPost, "w", array("nonull"));
$header=<<
DATA;
$header=$header."
".$ilTitoloFeed."".$laDescrFeed."
".$url."";
$recPost=get_file($lRSS."1.xml");
fnwrite($lRSS.".xml", $header."".date('r')."".$recPost.$recPost2."
", "w", array("nonull"));
}
// END feed rss.
3) Aprite il file functions.php e scorrete fino a
fnlog("News", $ip."||".$myforum."||Comment added to the news $id.");
e sotto questa linea aggiungete
// "post recenti". -jackoverfull
// ottiene il titolo della news
$fd = get_file("news/$id.xml");
$title = get_xml_element("fn:title",$fd);
crea_RSS("recCom", $maxCom, $title." - ".$myname, $url."index.php?mod=comment&id=".$id."#".time(), $mybody, date('r'), $sitename." - Commenti Recenti", $sitename." - Commenti Recenti" );
//END post recenti
4) aprite il file forum/include/ff_functions.php e scorrete fino a
fflogf("Created topic \"".strip_tags($subj)."\" -> file ".strip_tags("$root/$group/$argument/$time.ff.php"));
5) prima di questa linea aggiungete
// crea un feed rss relativo alle sole nuove discussioni e si integra con quello dei post -jackoverfull
global $maxDisc, $maxPost, $sitename;
crea_RSS("recPost", $maxPost, $data['properties']['topictitle']." - ".$data['posts'][0]['poster'], $url."index.php?mod=".$mod."&group=".$group."&argument=".$argument."&topic=".$time.".ff.php&page=last", $data['posts'][0]['postbody'], date('r'), $sitename." - Post Recenti", $sitename." - Post Recenti" );
crea_RSS("recDisc", $maxDisc, $data['properties']['topictitle']." - ".$data['posts'][0]['poster'], $url."index.php?mod=".$mod."&group=".$group."&argument=".$argument."&topic=".$time.".ff.php&page=last", $data['posts'][0]['postbody'], date('r'), $sitename." - Discussioni Recenti", $sitename." - Discussioni Recenti" );
// END feed rss
6) nello stesso file (forum/include/ff_functions.php) scorrete fino a
email_alert($group,$argument,$topic);
7) aggiungete sotto questa linea
// genera un feed rss con i post --jackoverfull
global $maxPost, $sitename;
crea_RSS("recPost", $maxPost, $newpost['postsubj']." - ".$newpost['poster'], $url."index.php?mod=".$mod."&group=".$group."&argument=".$argument."&topic=".$topic."&page=last#".$newpost['time'], $newpost['postbody'], date('r'), $sitename." - Post Recenti", $sitename." - Post Recenti" );
// END feed rss.
8) Aprite il file config.php e aggiungete
$maxCom=30;
$maxPost=30;
$maxDisc=30;
sopra il "?>" finale.
9) Questo è tutto. I file RSS verranno generat automaticamente al momneto dell'aggiunta di un nuovo commento/post/discussione agli indirizzi http://vostrosito/recCom.xml, http://vostrosito/recPost.xml, http://vostrosito/recDisc.xml .
Potete variare il numero massimo di elementi per feed modificando il valore delle variabili aggiunte al punto 9.
2009/01/21,
Jack Overfull
www.jackoverfull.com
======DIARIO DI MODIFICA
======2010/02/19
-Corretta una dimenticanza relativa al precedente aggiornamento (grazie, ZEBDEMON).
======2009/05/06
-Aggiornato a flatnuke 2.7.2 (modifiche al punto 3).