- Home
- Categorie
- Società, Web e Cultura
- GT Fetish Cafè
- Archivio Contest & Esperienze
- Archivio Vecchi Contest
- GlobalWarming Awareness2007
- Caso Studio 1 - Studente Tiago - Tutor Petro
-
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
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!
-
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??
Grazie!!;)
-
Puoi fare così:
header("HTTP/1.1 404 Not Found");
exit();
-
@Fra_T said:
Puoi fare così:
header("HTTP/1.1 404 Not Found");
exit();
Si.. ma in che pagina devo metterlo??
-
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.
-
@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
-
Sì, o anche fornire una pagina personalizzata e non usare l'exit... Tipo questa: http://globalwarming-awareness2007.bloster.altervista.org/index.php/fubvtrvevrebj
-
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
-
@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..
-
@Tiago said:
Allora..
-Creato un feed RSS seguendo la tua guida (complimenti, fantastica
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)?
-
Grazie Petro Adesso è ok!
-
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..