Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    Generare Feed Rss in automatico

    Buon giorno a tutti, ho scaricato feedcreator-1.8.0-dev l'ho installato,configurato e genera il file xml con le info che estrapolo da DB.

    Sappiamo che i feed rss vengono letti attraverso l'uso di feed reader o di apposite applicazioni come google reader.
    Si clicca sul link del feed rss, che rimanda al file rss.xml cosi ad ogni accesso, si avranno le ultime news aggiornate senza dover accedere al sito.

    domanda: questo rss.xml, "dovrebbe" aggiornarsi in modo automatico?
    Se si, come?
    Come faccio ad estrapolare informazioni dal db senza cliccare su una pagina che mi generi il file rss.xml?

    al momento faccio cosi:

    Codice PHP:
    //questa è la pagina official_demo.php, cliccando su un link vado ad estrapolare le info dal //db e creo il file rss.xml.

    include("../include/feedcreator.class.php");
    include(
    "../../../../include/connect.php");

    $rss = new UniversalFeedCreator();
    $rss->useCached();
    $rss->title "MIO SITO news";
    $rss->description "daily news from the MIO SITO";
    $rss->link "http://www.miosito.it/news";
    $rss->syndicationURL "http://www.miosito.it/".$PHP_SELF;

    $image = new FeedImage();
    $image->title "miosito.it logo";
    $image->url "http://www.miosito.it/images/loghi/miosito.png";
    $image->link "http://www.miosito.it";
    $image->description "Feed provided by miosito.it. Click to visit.";
    $rss->image $image;

    // get your news items from somewhere, e.g. your database:
    //mysql_select_db($dbHost, $dbUser, $dbPass);
    $res mysql_query("SELECT * FROM ".trim($DB).".TBNEWS ORDER BY nIdNews DESC LIMIT 10") or die(mysql_error());
    while (
    $data mysql_fetch_object($res)) {
        
    $item = new FeedItem();
        
    $item->title $data->cTitolo;
       
    // $item->link = $data->url;
        //$item->description = $data->short;
        
    $item->description $data->cTesto;
        
    //$item->date = $data->newsdate;
        
    $item->source "http://www.miosito.it";
        
    $item->author "John Doe";
        
        
    $rss->addItem($item);
    }

    $rss->saveFeed("RSS1.0""../news/rss.xml"); 
    Grazie mille.
    Buona giornata.

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Puoi puntare su due approcci:

    1. E' la pagina stessa php ad "essere" il file xml. Magari potresti usare mod_rewrite per camuffare l'url : es www.miosito.com/rss/rss.xml => www.miosito.com/rss/rss.php
    Codice PHP:
    header("Content-type: application/xml");

    include(
    "../include/feedcreator.class.php"); 
    include(
    "../../../../include/connect.php"); 

    $rss = new UniversalFeedCreator(); 
    ....
    //$rss->saveFeed("RSS1.0", "../news/rss.xml");
    //Chiaramente questa non vale più, ma devi sostituirla con una "echo" 
    2. Visto che sai qual'è la tabella che genera il file xml, ogni qualvolta modifichi tale tabella richiami la funzione che rigenera l'xml (quindi il codice che hai scritto va a finire in una funzione/classe)

  3. #3
    buon giorno...ti ringrazio
    Quindi volendo seguire il secondo punto, nel caso in cui dovessi eseguire una insert nella tabella di una nuova news, subito dopo l'esecuzione vado a ri-generare il file xml,avendo cosi la nuova news nel rss?

    Il primo punto non so come fare,perchè mod_rewrite non l'ho mai usato.

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Esatto, ogni volta che fai una modifica (inserimento, modifica, cancellazione) rigeneri il file xml.

    Per il punto 1, mod_rewrite non è fondamentale... è solo per avere un url più conforme e nascondere il fatto che è generato da php. Non credo ci siano problemi se l'url del feed porti ad una pagina php.

  5. #5
    ok adesso faccio una prova e poi ti dico...
    grazie ancora

  6. #6
    ciao Buon giorno...
    allora ho un grave problema, sto facendo 2 mila prove, ma non ne esco vivo.
    Il problema è questo se includo la pagina official_demo.php che genera il feed.xml, nella stessa pagina dove vado a fare le operazioni di insert, delete o update:
    Codice PHP:
    $insert "insert into............";
    $rsd mysql_query($insert) or die("Errore nella insert: " mysql_error());

    include 
    "feedcreator-1.8.0-dev/feedcreator/example/official_demo.php"

    genera questo errore:
    codice:
    This page contains the following errors:
    error on line 78 at column 9: Comment not terminated 
    error on line 78 at column 57: Encoding error
    Below is a rendering of the page up to the first error.

    se invece, richiamo la pagina da un semplice link:
    codice:
    FEED RSS
    genera l'xml senza problemi..

    Dov'è che sbaglio?
    grazie ancora...

  7. #7
    praticamente ho risolto...
    nella pagina feedcreator.class.php c'è questa funzione:
    Codice PHP:
    function saveFeed($format="RSS0.91"$filename=""$displayContents=false) {
            
    $this->_setFormat($format);
            
    $this->_feed->saveFeed($filename$displayContents);
        } 
    Ho sostituito il true con false, e funziona tutto correttamente.
    Vi ringrazio come sempre..

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2013
    Messaggi
    23

    Possibile soluzione

    Salve,

    Io ho trovato una soluzione molto carina per non dover stare a creare tutte le volte il file xml, ma generandolo in automatico in PHP.

    http://www.mediacreation.it/analisi-...d-rss-189.html

    Praticamente basta definire tramite un header, che la pagina in realtà è un file xml, e poi si recuperano i dati necessari dalle tabelle sql e si creare l'apposito file feed.

    Ovviamente questo funziona solo se si usa un creatore di pagine dinamico, come un CMS.

    Spero vi sia utile...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.