Visa ett inlägg
Oläst 2008-06-13, 21:48 #12
Drew Drew är inte uppkopplad
Medlem
 
Reg.datum: May 2007
Inlägg: 132
Drew Drew är inte uppkopplad
Medlem
 
Reg.datum: May 2007
Inlägg: 132
Ojsan. Här är hela skriptet. Jag har bytt ut
Kod:
$rss->items = array_merge($rss->items, array('class' => $class));
till
Kod:
 $class_arr = array('class' => $class);
 foreach($rss->items as $key => $value)
 {
 	$rss->items[$key] = array_merge($rss->items[$key], $class_arr);
 }
$rss innehåller flera arrays och värdet måste sättas för varje. Det är inte snyggt, men det fungerar (den här gången har jag testat).

Kod:
<?php

define('MAX_ITEMS', 25);

require_once('rss_fetch.inc');

$urls = array(
   'nyheter' => 'http://www.mortfiles.se/kundcenter/announcements.xml',
'blog' => 'http://www.mortfiles.se/blog/feed',
'forum' => 'http://www.mortfiles.se/diskussion/index.php?act=rssout&id=5',
'lankar' => 'http://www.mortfiles.se/lankar/rss.php?c=3&s=P&p=1',
'itnyheter' => 'http://www.mortfiles.se/nyheter/rss'
);


$items = array();

// loop thru all urls & merge feeds into master array
foreach ( $urls as $class => $url ) {
 $rss = fetch_rss($url);
 if (!$rss) continue;
 $class_arr = array('class' => $class);
 foreach($rss->items as $key => $value)
 {
 	$rss->items[$key] = array_merge($rss->items[$key], $class_arr);
 }
 $items = array_merge($items, $rss->items);
}

// sort all items in array by date
usort($items, 'date_cmp');

// generate ouput array
$out = array();

foreach ($items as $item) {
 $href  = $item['link'];
 $title  = $item['title'];
$class = $item['class'];
 $out[] = '<li class="' . $class . '"><a href="'.$href.'" title="'.$title.'">'.$title.'</a></li>';
}

if (count($out) > MAX_ITEMS)
 $out = array_slice($out,0,MAX_ITEMS);

echo ($out)
 ? "<ul>\n".join("\n",$out)."\n</ul>"
 : '';


// sorts feed array based on published date (used with usort)
// -------------------------------------------------------------
 function date_cmp($a, $b)
 {
   $atime = (empty($a['date_timestamp']))
     ? strtotime($a['dc']['date'])
     : $a['date_timestamp'];

   $btime = (empty($b['date_timestamp']))
     ? strtotime($b['dc']['date'])
     : $b['date_timestamp'];

   if ($atime == $btime)
     return 0;
 
   return ($atime > $btime) ? -1 : 1;
 }

?>
Drew är inte uppkopplad   Svara med citatSvara med citat