Navigation
Supportsider
Senest Online
helmuth 2 Dage
makronen 2 Uger
gittedl 2 Uger
flj 2 Uger
ejvindh 3 Uger
afoster 3 Uger
HenningS 5 Uger
Niller 5 Uger
wholle11 Uger
Henrik Bendtsen13 Uger
Besøgende
Gæster online: 4

Brugere online: 0

Antal brugere: 182
Nyeste bruger: Michael Mogensen
Se indlæg
PHP-Fusion - Danmark » PHP-Fusion version 6 » Elementer v6
 Udskriv debat
Element: Nyheder udefra via RSS feeds
Martin-M
Jeg har nu hurtigt set tråden igennem og kan ikke finde et sted hvor der henvises til det jeg søger. Altså at få datoen og antal visninger under nyhedsoverskrifterne. Ligesom herinde: www.footballworld.dk
 
flj
Det med visningerne kan du ikke lige få med - den oplysning gemmes pt slet ikke. Men datoen - prøv at skifte til:


echo("".$item["title"]."
".$item["date"]."
");



 
Martin-M
Mange tak. Kan ugedagene ikke laves om til dansk samt fjerne CEST ?
 
flj
Hvis ugedagene ikke er på dansk, så er nok en server-indstilling. Du kan rette denne linie (læs mere på http://dk.php.net/strftime):


$date_format = "%a, %Y-%m-%d %T %Z"; // Format used to create date


hvis du vil ændre formatet.
 
deuce
Hej flj,
Endelig virker det på siden :-) - måske efter skiftet til vers. 7.

1) Der er dog to feeds jeg ikke kan få med i visningen:
http://blog.nola.com/saints_impact/atom.xml
http://www.nfl.com/rss/rsslanding?searchString=team&id=3300&name=New Orleans Saints&abbr=NO

2) Er det muligt at tilføje noget tekst efter linket?
Så man kreditere det pågældende site. Teksten kunne fx. være "fra nola.com" eller ligende.



openside("Nyheder fra nettet");
/////////////////////////////////////////////////
// RSS reader v3 2008-03-23
// by Flemming Jensen, Copyright 2008
/////////////////////////////////////////////////

// Compare function
function rss_cmp($a, $b)
{
return $b["timestamp"] - $a["timestamp"];
}

// Function to retrieve, extract on age and pattern, limit by max_no and sort
function rss_feeds($rss_feeds, $max_age_hours, $pattern, $max_no)
{

$max_age = $max_age_hours*3600; // in seconds
$now = time();

$date_format = "%a, %Y-%m-%d %T %Z"; // Format used to create date

// Looping for every rss feed to read
$rss = NULL;
$n = 0;

foreach($rss_feeds as $rss_feed)
{
// Load the RSS file
$err_level = error_reporting(E_ALL ^ E_WARNING);
$rss_file = simplexml_load_file($rss_feed);
error_reporting($err_level);

// Looping for every item returned
if ($rss_file)
{
if ($rss_file['version'] == "2.0")
{
$rss_ver = 2;
$items = $rss_file->channel;
}
else
{
$rss_ver = 1;
$items = $rss_file;
}

foreach($items->item as $item)
{
if ($rss_ver == 1)
{
$dc_namespace = $item->children('http://purl.org/dc/elements/1.1/');
$timestamp = strtotime(utf8_decode("{$dc_namespace->date}"));
}
else
{
$timestamp = strtotime(utf8_decode("{$item->pubDate}"));
}

// Only if not too old and matching pattern
if ($now - $timestamp <= $max_age && preg_match($pattern, $item->description) == 1)
{
// Using utf8_decode(...) to get danish chars right
$rss[$n]["link"] = utf8_decode($item->link);
$rss[$n]["title"] = utf8_decode($item->title);
$rss[$n]["date"] = strftime($date_format, $timestamp);
$rss[$n]["timestamp"] = $timestamp;
$rss[$n]["description"] = utf8_decode($item->description);
$n++;
}
}
}
}


if ($n>0)
{
// Sort all to get the newest ones first
usort($rss, "rss_cmp");

// Limiting the array to max_no
while(count($rss)>$max_no)
array_pop($rss);
}

return $rss;
}

// List of RSS-feeds to check
$rss_feeds = array(
"http://tv2sport.dk/rss/news/*/*/6333/*/*",
"http://blog.nola.com/saints_impact/atom.xml",
"http://www.nfl.com/rss/rsslanding?searchString=team&id=3300&name=New Orleans Saints&abbr=NO"
);

// Max age in hours
$max_age_hours = 1000;

// Pattern to match - see preg_match(...)
$pattern = "//i"; // Matches everything

// Max no of news to return
$max_no = 30;

$rss = rss_feeds($rss_feeds, $max_age_hours, $pattern, $max_no);

if ($rss)
{
foreach($rss as $item)
{
echo("".$item["title"]."
");
}
}

closeside();

 
http://www.neworleanssaints.dk
flj
At du ikke kan se de to amerikanske feeds skyldes, at de er skrevet i Atom standarden, som mit element ikke supporterer.

Hvis du skifter atom ud med rss i nola-feedet, så kommer der noget ud, men jeg tror ikke de overholder standarden, eller også er der en flaw i min kode, for der kommer en masse ud, inkl. billeder, film-klip og hvad ved jeg.

Jeg skal overvee, at opgradere readeren, så den også supporterer Atom. Men har lige gang i et andet støre projekt, så jeg lover ikke noget.
 
deuce
OK. Tak for supporten.
 
http://www.neworleanssaints.dk
deuce

Citer

flj skrev:
Det med visningerne kan du ikke lige få med - den oplysning gemmes pt slet ikke. Men datoen - prøv at skifte til:


echo("".$item["title"]."
".$item["date"]."
");




Er det muligt at få datoen først, derefter linket? Jeg har forsøgt mig men kan ikke helt få det til at fungere.

Yderligere kan man navngive de forskellige feed og få dem på efter linket? Så det fx. ender således:
03.02.2010 Saints vinder SuperBowl Kilde: TV2sport

NB! Jeg syntes dette element bliver mere og mere fantastisk!
 
http://www.neworleanssaints.dk
flj
Det er godt, du er glad for det. Det er også en af mine egne favoritter ;)

Kan du ikke bruge:


echo($item["date"]."
".$item["title"]."
");


for datoen?

Det med kilden kræver, at du har et felt i dit feed, hvor kilden står. Har du et bud?
 
deuce
Det jeg tænkte på var, om der kunne stå hvilket feed linket var taget fra efter selve linket.
Jeg benytter pt. TV2Sport og en side som hedder Firstdown.

Hvad er der galt med dette... jeg forsøger at give datoen kursiv.

echo($item["date"]." ".$item["title"]."
");

 
http://www.neworleanssaints.dk
flj
Du mangler anførselstegn om det første :


echo("".$item["date"]." ".$item["title"]."
");


Jeg er med på det. Udfordringen er, at du angiver:

http://tv2sport.dk/rss/news/*/*/6333/*/*

og det ser jo dumt ud som kilde. Man kunne godt ekstrahere den tekst, der står efter // og frem til punktum, men for dit næste link, som er:

http://blog.nola.com/saints_impact/atom.xml

giver det blog, og på nummer 3 www. Så det svære er at finde en fast "regel" så man kan tage dte fra linket eller at finde et sted i feedet at tage det. Hvis du forstår...
 
deuce
Aha! Det hjalp...

I forbindelse med klide delen. Så tænkte jeg at det måske kunne være muligt at navngive de forskellige feeds. Så mit RSS feed - http://tv2sport.dk/rss/news/*/*/6333/*/* - på en eller anden måde kunne navngives et eller andet sted i elementet.
 
http://www.neworleanssaints.dk
deuce
Jeg vil gerne benytte dette element til at fremvise twitter feeds, og har prøvet at sætte det op ganske som mit forgående RSS element. Af en eller anden går det galt ( Siden ikke normalt ).
Kan man kun have et RSS element? Er det for mange feed jeg har tilføjet?

RSS Twitter feeds

openside("Saints spillere på Twitter");
/////////////////////////////////////////////////
// RSS reader v3 2008-03-23
// by Flemming Jensen, Copyright 2008
/////////////////////////////////////////////////

// Compare function
function rss_cmp($a, $b)
{
return $b["timestamp"] - $a["timestamp"];
}

// Function to retrieve, extract on age and pattern, limit by max_no and sort
function rss_feeds($rss_feeds, $max_age_hours, $pattern, $max_no)
{

$max_age = $max_age_hours*3600; // in seconds
$now = time();

$date_format = "%d.%m.%Y"; // Format used to create date

// Looping for every rss feed to read
$rss = NULL;
$n = 0;

foreach($rss_feeds as $rss_feed)
{
// Load the RSS file
$err_level = error_reporting(E_ALL ^ E_WARNING);
$rss_file = simplexml_load_file($rss_feed);
error_reporting($err_level);

// Looping for every item returned
if ($rss_file)
{
if ($rss_file['version'] == "2.0")
{
$rss_ver = 2;
$items = $rss_file->channel;
}
else
{
$rss_ver = 1;
$items = $rss_file;
}

foreach($items->item as $item)
{
if ($rss_ver == 1)
{
$dc_namespace = $item->children('http://purl.org/dc/elements/1.1/');
$timestamp = strtotime(utf8_decode("{$dc_namespace->date}"));
}
else
{
$timestamp = strtotime(utf8_decode("{$item->pubDate}"));
}

// Only if not too old and matching pattern
if ($now - $timestamp <= $max_age && preg_match($pattern, $item->description) == 1)
{
// Using utf8_decode(...) to get danish chars right
$rss[$n]["link"] = utf8_decode($item->link);
$rss[$n]["title"] = utf8_decode($item->title);
$rss[$n]["date"] = strftime($date_format, $timestamp);
$rss[$n]["timestamp"] = $timestamp;
$rss[$n]["description"] = utf8_decode($item->description);
$n++;
}
}
}
}


if ($n>0)
{
// Sort all to get the newest ones first
usort($rss, "rss_cmp");

// Limiting the array to max_no
while(count($rss)>$max_no)
array_pop($rss);
}

return $rss;
}

// List of RSS-feeds to check
$rss_feeds = array(
"http://twitter.com/statuses/user_timeline/83985926.rss",
"http://twitter.com/statuses/user_timeline/49769770.rss",
"http://twitter.com/statuses/user_timeline/44754198.rss",
"http://twitter.com/statuses/user_timeline/62137790.rss",
"http://twitter.com/statuses/user_timeline/62902439.rss",
"http://twitter.com/statuses/user_timeline/59927418.rss",
"http://twitter.com/statuses/user_timeline/26754563.rss",
"http://twitter.com/statuses/user_timeline/32509689.rss",
"http://twitter.com/statuses/user_timeline/42916356.rss",
"http://twitter.com/statuses/user_timeline/35884327.rss",
"http://twitter.com/statuses/user_timeline/21454322.rss",
"http://twitter.com/statuses/user_timeline/40000787.rss",
"http://twitter.com/statuses/user_timeline/34714015.rss",
"http://twitter.com/statuses/user_timeline/34085078.rss",
"http://twitter.com/statuses/user_timeline/35575327.rss"
);

// Max age in hours
$max_age_hours = 1000;

// Pattern to match - see preg_match(...)
$pattern = "//i"; // Matches everything

// Max no of news to return
$max_no = 10;

$rss = rss_feeds($rss_feeds, $max_age_hours, $pattern, $max_no);

if ($rss)
{
foreach($rss as $item)
{
echo("".$item["date"]."  ".$item["title"]."
");
}
}

closeside();

Redigeret af deuce d. 15-11-2009 18:57
 
http://www.neworleanssaints.dk
- Tony -
Man kan godt have to feeds elementer, du skal bare sørge for at den der bliver indlæst først skal indeholde hele koden og den anden tror jeg du kan nøjes med

PS. to af feedsene gav fejl hos mig, er i test på test6 siden (URL-TESTSITE i min signatur, nederst til højre)


openside("Name");
// List of RSS-feeds to check
$rss_feeds = array(
"http://twitter.com/statuses/user_timeline/83985926.rss",
"http://twitter.com/statuses/user_timeline/49769770.rss",
"http://twitter.com/statuses/user_timeline/44754198.rss",
"http://twitter.com/statuses/user_timeline/62137790.rss",
"http://twitter.com/statuses/user_timeline/62902439.rss",
"http://twitter.com/statuses/user_timeline/59927418.rss",
"http://twitter.com/statuses/user_timeline/26754563.rss",
"http://twitter.com/statuses/user_timeline/32509689.rss",
"http://twitter.com/statuses/user_timeline/42916356.rss",
"http://twitter.com/statuses/user_timeline/35884327.rss",
"http://twitter.com/statuses/user_timeline/21454322.rss",
"http://twitter.com/statuses/user_timeline/40000787.rss",
"http://twitter.com/statuses/user_timeline/34714015.rss",
"http://twitter.com/statuses/user_timeline/34085078.rss",
"http://twitter.com/statuses/user_timeline/35575327.rss"
);

// Max age in hours
$max_age_hours = 1000;

// Pattern to match - see preg_match(...)
$pattern = "//i"; // Matches everything

// Max no of news to return
$max_no = 10;

$rss = rss_feeds($rss_feeds, $max_age_hours, $pattern, $max_no);

if ($rss)
{
foreach($rss as $item)
{
echo("".$item["date"]."  ".$item["title"]."
");
}
}

closeside();



www.lemviginfo.dk/platuglerne_ikon2.gif www.lemviginfo.dk/images/lemviginfo_dk.gif [url=http://www.lemvig.info][img]http://www.lemviginfo.dk/image
 
http://www.lemvig.info/redirect.php
flj
Tony har ret mht det med flere elementer.

Desuden har jeg selv oplevet et problem med timeout eller for lang load-tid, hvis der er mange feeds. Jeg har også oplevet feeds, der var så langsomme, at jeg ikke ville lade mine brugere vente på det.

Der findes en infusion, som vist ligger på mods, der henter feeds og lagrer dem i en cache. Det må være vejen frem, hvis der er (for) mange feeds. Men jeg har ikke prøvet den - kun kigget i koden.
 
- Tony -
Kan også se at resten af feedsene giver fejlmelding idag og ikke kun de to som jeg sorterede fra igår ved testen.





www.lemviginfo.dk/platuglerne_ikon2.gif www.lemviginfo.dk/images/lemviginfo_dk.gif [url=http://www.lemvig.info][img]http://www.lemviginfo.dk/image
 
http://www.lemvig.info/redirect.php
Shearer

Citer

flj skrev:
Tony har ret mht det med flere elementer.

Desuden har jeg selv oplevet et problem med timeout eller for lang load-tid, hvis der er mange feeds. Jeg har også oplevet feeds, der var så langsomme, at jeg ikke ville lade mine brugere vente på det.

Der findes en infusion, som vist ligger på mods, der henter feeds og lagrer dem i en cache. Det må være vejen frem, hvis der er (for) mange feeds. Men jeg har ikke prøvet den - kun kigget i koden.


den virker langt fra optimalt og slet ikke panel funktionen. har testet det flere gang.

Der er faktisk ret mange der efterlyser en god rss løsning til fusion. også på flere udlandske sider.
 
http://www.112-aarhus.dk
flj
Måske kunne du uddybe "virker langt fra optimalt...".

Jeg mener det virker godt forstået derhen at feeds kan læses (dog ikke i Atom).

Det virker ikke godt, hvis der er mange og/eller langsomme feeds.

Men er der andre "dårligdomme" du har bemærket. Når jeg spørger, er det fordi jeg har fornemmet det samme som du, og pusler med en infusion.

Jeg er også interesseret i evt. tanker vedrørende funktionalitet (hvad skal den kunne?).
 
- Tony -
Godt nok kører jeg med den version til v6 med cache på min hovedside, men har da nu fire forskellige feeds bygget på FLJ's kode på testsiden og kan godt li a den kan styles lidt nemmere end den infusion jeg har på hovedsiden, den er nu heller ikke fejlfri, det sker da at den siger den ikke kan læse fra cachen.


PS. lige i dette øjeblik duer feedsene fra twitter igen Wink

www.lemviginfo.dk/platuglerne_ikon2.gif www.lemviginfo.dk/images/lemviginfo_dk.gif [url=http://www.lemvig.info][img]http://www.lemviginfo.dk/image
 
http://www.lemvig.info/redirect.php
deuce
hmmm. Jeg kan ikke få dem til at spille.

Hvis elementet er slået til æder den hele siden (og elementet vises ikke).

Jeg har endda kun to styk twitter feed i elementet.
 
http://www.neworleanssaints.dk
- Tony -
HMMM jeg har lige flyttet den til center element, sakser lige koden direkte som den er i mit element, hvis ikke det virker kører vi måske ikke helt samme grundkode til at kalde feedet, FLJ har vist lave nogle små tilpasninger hen ad vejen


openside("
Test FLJ RSS Feeds #3 Twitter
");

/////////////////////////////////////////////////

// RSS reader

// by Flemming Jensen, Copyright 2008

/////////////////////////////////////////////////


// List of RSS-feeds to check
$rss_feeds = array(
"http://twitter.com/statuses/user_timeline/83985926.rss",
"http://twitter.com/statuses/user_timeline/44754198.rss",
"http://twitter.com/statuses/user_timeline/62137790.rss",
"http://twitter.com/statuses/user_timeline/62902439.rss",
"http://twitter.com/statuses/user_timeline/59927418.rss",
"http://twitter.com/statuses/user_timeline/26754563.rss",
"http://twitter.com/statuses/user_timeline/42916356.rss",
"http://twitter.com/statuses/user_timeline/35884327.rss",
"http://twitter.com/statuses/user_timeline/21454322.rss",
"http://twitter.com/statuses/user_timeline/40000787.rss",
"http://twitter.com/statuses/user_timeline/34714015.rss",
"http://twitter.com/statuses/user_timeline/34085078.rss",
"http://twitter.com/statuses/user_timeline/35575327.rss"
);

// Max age in hours

$max_age_hours = 1000;



// Pattern to match - see preg_match(...)

$pattern = "//i"; // Matches everything



// Max no of news to return

$max_no = 10;





$rss = rss_feeds($rss_feeds, $max_age_hours, $pattern, $max_no);

if ($rss)

{

foreach($rss as $item)

{
echo "";
echo("");
echo "
target='_blank'>".$item["title"]."
";
}

}
closeside();

www.lemviginfo.dk/platuglerne_ikon2.gif www.lemviginfo.dk/images/lemviginfo_dk.gif [url=http://www.lemvig.info][img]http://www.lemviginfo.dk/image
 
http://www.lemvig.info/redirect.php
Spring til debat: