• User Attivo

    "quasi" dimenticavo: aggiungi un feed RSS 🙂


  • User Attivo

    @petro said:

    "quasi" dimenticavo: aggiungi un feed RSS 🙂
    Mi spieghi come si fà? :fumato:
    RSS e Flash, sono le mie due più grandi lacune.. 😞


  • User Attivo

    @Tiago said:

    Mi spieghi come si fà? :fumato:
    RSS e Flash, sono le mie due più grandi lacune.. 😞

    In quanto a Flash sto a zero anch'io :fumato:

    Sugli RSS invece scrissi una [url=http://forum.html.it/forum/showthread.php?threadid=914026]pillola sul forum di html.it, lì dovresti trovare tutto quello che ti serve.
    Quando hai creato l'RSS, non dimenticarti il [url=http://www.google.it/search?hl=it&q=rss+autodiscovery]link di autodiscovery!

    Riguardo al resto invece, il come ed il perché sono sufficientemente chiari (e condivisibili)?


  • User Attivo

    Allora..
    -Modificato l'header, mettendo più keyword legate al contest all'inizio.
    -Tolte le keyword dai div e dalle class e cambiato il nome del file css.
    -Messo qualche <strong> anche su altre keyword.
    -Tolto l'intero script di phpmyvisites, link compreso.
    -Creato un feed RSS seguendo la tua guida (complimenti, fantastica :2:
    Non ho ancora messo un link al feed perchè c'è un problema con la data.. non riesco a capire perchè.. ho messo il campo della tabella come TIMESTAMP, ma non funge.. ecco il file:
    [php]
    <?
    header("Content-type: application/xml");
    //Con questa riga mandiamo al browser un header compatibile col formato XML

    //Il blocco seguente fa la connessione al database...
    $dbhost = "";
    $dbname = "
    ";
    $dbuser = "";
    $dbpass = "
    ";
    $query=mysql_connect($dbhost, $dbuser, $dbpass);
    if ($query==FALSE)
    die("Errore durante la connessione a MYSQL ".mysql_error());
    mysql_select_db($dbname ,$query);
    //E quest'altro seleziona le ultime 7 notizie
    $query2 = "SELECT * FROM a_articoli ORDER BY id DESC LIMIT 7";
    $risultato=mysql_query($query2,$query);

    //Ora iniziamo a occuparci del feed vero e proprio
    require_once("feedcreator.class.php");
    //includiamo la classe col nome che le abbiamo assegnato

    //e inizializziamo l'oggetto con parametri personalizzati (descrizione, titolo e link)
    $rss = new UniversalFeedCreator();
    $rss->useCached();
    $rss->title = "Globalwarming Awareness2007";
    $rss->description = "Feed about globalwarming awareness2007";
    $rss->link = "http://www.awareness2007.netsons.org"; //Questo non viene reso nel feed, sarà un bug
    $rss->feedURL = "http://www.awareness2007.netsons.org/feed/feed.php";

    //Questa funzione rimpiazza alcuni caratteri speciali con le relative entità XML
    //serve per evitare errori nell'output
    function xmlentities ( $string ) {
    $ar1 = array ( '&' , '"', ''');
    $ar2 = array ( '&', '"', "’") ;
    return str_replace ( $ar1 , $ar2, $string );
    }

    //Questo ciclo estrae le notizie dal DB e le inserisce come nuovo ITEM nel feed
    //I campi da cui estraggo le notizie si chiamano 'subject', 'content', 'cat', e 'pubdate'
    //ma nel vostro caso i nomi potrebbero essere differenti, e alcuni campi assenti
    //(come Author nel mio caso)
    while ($data=mysql_fetch_array($risultato)) {
    //Eseguo xhtmlentities() sui primi due campi, che potrebbero contenere entità non valide
    $data['titolo'] = xmlentities($data['titolo']);
    $data['testo'] = xmlentities($data['testo']);
    $data['testo'] = nl2br($data['testo']);

    //E ora comincio a inserire le informazioni di ogni item.
    $item = new FeedItem();
    //notate come a volte prendo i dati così come sono dal db, altre li costruisco al volo
    $item->title = $data['titolo'];
    $item->link = "http://www.awareness2007.netsons.org".$data['url'] ;
    $item->description = $data['testo'];
    $item->category = $data['cat'];
    //La mia PUBDATE è in formato UNIX TIMESTAMP, ma la classe la converte in formato leggibile
    $item->date = $data['date'];
    //Questa riga per me è invariabile
    $item->author = "Tiago";
    
    //Definiamo le opzioni dell'item: questo contiene tag HTML...
    $item->descriptionHtmlSyndicated = true;
    //avremmo impostato FALSE per togliere i tag HTML
    
    //...e contiene anche l'elemento <category>
    $item->categoryHtmlSyndicated = true;
    
    //decommentando la riga seguente, troncheremmo Description (anche con tag) dopo 500 caratteri
    //item->descriptionTruncSize = 500;
    
    $rss->addItem($item); //Questo lasciatelo, inserisce il nuovo item coi dati appena processati
    

    }

    //E infine l'output a video.
    echo $rss->createFeed("RSS2.0", "");
    //Ovviamente abbiamo anche la possibilità di salvare il file su disco, o di scegliere altri formati
    //Vi rimando ai commenti presenti nella classe per gli esempi del caso.
    ?>
    [/php]
    Ovviamente il campo nella tabella si chiama "date".. non riesco a capire perchè non funge..
    Grazie Petro! 🙂


  • User Attivo

    Ho messo anche i tag <code> per i codici, ho eliminato il problema delle virgolette e ho messo le iniziali del title maiuscole..
    Mi speghi anche come si fà ad inviare un header 404?? :fumato:
    Grazie!!;)


  • User Attivo

    Puoi fare così:

    header("HTTP/1.1 404 Not Found");
    exit();


  • User Attivo

    @Fra_T said:

    Puoi fare così:

    header("HTTP/1.1 404 Not Found");
    exit();
    Si.. ma in che pagina devo metterlo??


  • User Attivo

    Non so di preciso come è fatto il sito, in teoria verifichi se la pagina esiste (con una query al DB??), se non esiste usi quel codice. Teoricamente prima che sia inviato un output.


  • User Attivo

    @Fra_T said:

    Non so di preciso come è fatto il sito, in teoria verifichi se la pagina esiste (con una query al DB??), se non esiste usi quel codice. Teoricamente prima che sia inviato un output.
    Funziona, ma esce una pagina bianca.. per reindirizzare ad un altra è corretto fare un redirect prima dell'exit()??
    Grazie Fra_T 😉


  • User Attivo

    Sì, o anche fornire una pagina personalizzata e non usare l'exit... Tipo questa: http://globalwarming-awareness2007.bloster.altervista.org/index.php/fubvtrvevrebj


  • User Attivo

    Risolto così: http://www.awareness2007.netsons.org/aasjdfsad.php 😉

    Altra cosa.. per il w3c: http://validator.w3.org/check?uri=http%3A%2F%2Fwww.awareness2007.netsons.org%2F
    cosa devo fare per fare sparire questo avviso: "No Character Encoding Found! Falling back to UTF-8."
    Thanks 🙂


  • User Attivo

    @Tiago said:

    Altra cosa.. per il w3c: http://validator.w3.org/check?uri=http%3A%2F%2Fwww.awareness2007.netsons.org%2F
    cosa devo fare per fare sparire questo avviso: "No Character Encoding Found! Falling back to UTF-8."
    Thanks 🙂
    Risolto.. mancava un meta tag.. 🙂
    Ma ho ancora il problema della data nei feed..


  • User Attivo

    @Tiago said:

    Allora..

    -Creato un feed RSS seguendo la tua guida (complimenti, fantastica :2:
    Non ho ancora messo un link al feed perchè c'è un problema con la data.. non riesco a capire perchè.. ho messo il campo della tabella come TIMESTAMP, ma non funge.. ecco il file:

    Ovviamente il campo nella tabella si chiama "date".. non riesco a capire perchè non funge..
    Grazie Petro! 🙂

    Ti rispondo per ora solo a questa cosa dell'RSS, il sito lo riguarderò nei prossimi giorni 🙂

    Assumendo che tu salvi la data in formato Timestamp (non il tipo di campo del db, proprio il formato della data), prova a settare il campo "date" come INT(11), poi fai
    [php]
    $item->date = $data['date'] + 3600;
    [/php]

    Nello script, aggiungi 3600 secondi, quindi un'ora.
    A me aveva funzionato così.... a te cosa succede, ti reimposta tutte le date al 1/1/1970 (anno zero Unix Epoc)?


  • User Attivo

    Grazie Petro 🙂 Adesso è ok! 😉


  • User Attivo

    Ho un problema.. google mi ha messo metà delle pagine indicizzate tra i risultati omessi.. credo sia colpa del fatto che il contenuto di ogni pagina è anche in home page.. è per quello??

    EDIT: ho cambiato.. adesso lascio solo i link agli altri articoli in home page..