i7 920 | 12GB DDR3 | GTX 480 | GA-X58A-UD7 | 160GB SSD X25-M G2 | 1TB F3 HD103SJ | W7 64-bit | Mac Mini
Webb: bluekitestudios.com
automatisk nyhetssida (rss-läsare)
Det går att åstadkomma relativt enkelt med hjälp av lite php och en parser tex http://lastrss.oslab.net/
Då kan du cacha materialet under låt säga 1 minut och sedan göra en refresh av listan med hjälp av javascript. Enklast är att lägga de olika feedsen som egna block varpå du kan välja det du vill parsa in (tidsstämplar, bilder, rubriker, brödtexter etc).
Här har du ett hobbyprojekt jag haft tidigare som är en väldigt god start på det du söker. Den parsar arrayen $user_rss som du anger i index.php och renderar sedan ut i html5. Spara ned varje php-fil och lägg dem enligt strukturen som anges ovanför varje kodblock. Med reservationer för eventuella små missar eftersom tiden har varit knapp då jag helt gått in i utvecklingen av http://threadgame.com/
Börja med att skapa en mapp i roten som heter cache.
Förslag på strukturen:
index.php
[ cache ]
[ content ]
- functions.php
- lastRSS.php
- settings.php
- [ css ]
- reset.css
- style.css (som inte finns med här)
index.php
<?php
// INCLUDE FILES
require_once('content/settings.php');
require_once('content/functions.php');
require_once('content/lastRSS.php'); //Hämta här -> http://lastrss.oslab.net/
// VARIABLES
// rendertime
$starttime = explode(' ', microtime());
$starttime = $starttime[1] + $starttime[0];
$mtime = '';
// RENDER OUTPUT
renderHTMLHead($sitename, 'Nyheter');
renderHTMLHeader($siteurl, $sitename);
// rss output
$rss = new lastRSS;
$rss->cache_dir = './cache';
$rss->cache_time = 60; // (1 min)
$rss->cp = 'UTF-8';
$rss->items_limit = 10;
$rss->rsscp = '';
$user_rss = array(
'http://www.dn.se/m/rss/toppnyheter',
'http://www.aftonbladet.se/nojesbladet/klick/rss.xml',
'http://www.sweclockers.com/forum/external.php?type=RSS2&forum...',
'http://www.unt.se/rss/senaste',
'http://gdata.youtube.com/feeds/base/standardfeeds/SE/most_vie...'
);
// make an array of the feeds
$feedarray = array();
foreach ($user_rss as $url) {
ShowOneRSS($url, $show_image, $show_description);
$feedarray[] = $feedout;
}
// display the feeds from the array
$i=0;
foreach ($feedarray as $user_rss) {
echo $feedarray[$i];
$i++;
}
renderHTMLEnd($mtime, $starttime);
?>
content/functions.php
<?php
// RENDER HTML HEAD
function renderHTMLHead($sitename, $pagetitle) {
echo '<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>' . $sitename . ' - ' . $pagetitle . '</title>
<link href="content/css/reset.css" rel="stylesheet" type="text/css" />
<link href="content/css/style.css" rel="stylesheet" type="text/css" />
<script type="text/javascript" src="content/js/jquery.js"></script>
<!--[if lt IE 9]>
<script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>';
}
// RENDER HTML HEADER (GRAPHICAL)
function renderHTMLHeader($siteurl, $sitename) {
echo '
<header><h1><a href="'.$siteurl.'"><img src="content/img/headerimage.png" alt="'.$sitename.'" /></a></h1></header>
<div id="content">
';
}
// RENDER HTML END
function renderHTMLEnd($mtime, $starttime) {
$mtime = explode(' ', microtime());
echo '
</div>
<p id="footnote">Loaded in '.round($mtime[0] + $mtime[1] - $starttime, 3).' seconds.</p>
</body>
</html>';
}
// DEALING WITH THE RSS
function ShowOneRSS($url, $show_image, $show_description) {
global $rss;
global $feedout;
if ($rs = $rss->get($url)) {
$feedout = '<div class="feeditem">';
$feedout .= '<div class="feedhead">';
if ($show_image == 1){
if ($rs[image_url] != '') {
$feedout .= "<a href=\"$rs[image_link]\"><img src=\"$rs[image_url]\" alt=\"$rs[image_title]\" vspace=\"1\" border=\"0\" /></a>\n";
}
}
$feedout .= '<h2><a href="'.$rs['link'].'">'.$rs['title']."</a></h2>\n";
//echo '<small>Language/Encoding: <font color="red"><b>'.$rs['language'].'/'.$rs['encoding']."</b></font><br></small>\n";
$feedout .= '</div>';
if ($show_description == 1){
$feedout .= $rs['description']."\n";
}
$feedout .= "<ul>\n";
foreach ($rs['items'] as $item) {
$feedout .= '<li><a href="'.$item['link'].'" title="'.$item['description'].'">'.$item['title'].'</a> '.$item['pubDate'].'</li>';
}
if ($rs['items_count'] <= 0) { $feedout .= '<li>No items could be found in the RSS-feed: '.$url.'</li><a href="#">Remove feed</a>'; }
$feedout .= "</ul>\n";
$feedout .= '</div>';
}
}
// DATEFUNCTION (HOW LONG AGO WAS THE DATESTAMP)
function returnDate($querydate){
$minusdate = date('ymdHi') - $querydate;
if($minusdate > 88697640 && $minusdate < 100000000){
$minusdate = $minusdate - 88697640;
}
switch ($minusdate) {
case ($minusdate < 99):
if($minusdate == 1){
$date_string = '1 minute';
}
elseif($minusdate > 59){
$date_string = ($minusdate - 40).' minutes';
}
elseif($minusdate > 1 && $minusdate < 59){
$date_string = $minusdate.' minutes';
}
break;
case ($minusdate > 99 && $minusdate < 2359):
$flr = floor($minusdate * .01);
if($flr == 1){
$date_string = '1 hour';
}
else{
$date_string = $flr.' hours';
}
break;
case ($minusdate > 2359 && $minusdate < 310000):
$flr = floor($minusdate * .0001);
if($flr == 1){
$date_string = 'yesterday';
}
else{
if ($flr == 0) {
$date_string = 'today';
}else{
$date_string = $flr.' days';
}
}
break;
case ($minusdate > 310001 && $minusdate < 12320000):
$flr = floor($minusdate * .000001);
if($flr == 1){
$date_string = "1 month";
}
else{
$date_string = $flr.' months';
}
break;
case ($minusdate > 100000000):
$flr = floor($minusdate * .00000001);
if($flr == 1){
$date_string = '1 year.';
}
else{
$date_string = $flr.' years';
}
}
return $date_string;
}
?>
content/settings.php
<?php
// SETTINGS FOR THE SITE
$sitename = 'Feeds';
$siteurl = 'http://localhost/';
$db = ''; //Not used at the moment
$dbuser = ''; //Neither is this
$dbpass = ''; //Or this .. but database the hell out of this later!
// INDIVIDUAL SETTINGS FOR USER
$show_image = 1;
$show_description = 0;
?>
content/lastRSS.php
Hämta här: http://lastrss.oslab.net/
Sedan är det bara gå loss med css på det här, glöm inte en reset först tex:
content/css/reset.css
html, body, div, span, applet, object, iframe,
h1, h2, h3, h4, h5, h6, p, blockquote, pre,
a, abbr, acronym, address, big, cite, code,
del, dfn, em, font, img, ins, kbd, q, s, samp,
small, strike, strong, sub, sup, tt, var,
b, u, i, center,
dl, dt, dd, ol, ul, li,
fieldset, form, label, legend,
table, caption, tbody, tfoot, thead, tr, th, td {
margin: 0;
padding: 0;
border: 0;
outline: 0;
font-size: 100%;
vertical-align: baseline;
background: transparent;
}
body {
line-height: 1;
}
ol, ul {
list-style: none;
}
Lägg sedan till en refresh med hjälp av javascript i funktionen renderHTMLHead i functions.php som är större än cache-tiden du valt för LastRSS.
Ställ gärna frågor här i tråden om du inte får till det som tänkt. Lycka till!
åh, tack så mycket, ska kolla på det
Om du inte har en server redan som kör PHP v5.3.0 är http://www.wampserver.com/en/download.php smidigt. Så kan det vara skönt att låta vissa saker vara lagrade i en databas senare, så du lätt kan lägga till nya / eller ta bort feeds. För att få till "Twitter" stilen på allt så får du mangla igenom hela arrayen med varje listobjekt och sortera efter RSS-datumet och sedan rendera ut den nya arrayen istället för $feedarray[] - kanske är något som någon annan som har lite mer tid kan hjälpa dig med här i tråden, om du inte själv sätter dig in i det förstås.
i7 920 | 12GB DDR3 | GTX 480 | GA-X58A-UD7 | 160GB SSD X25-M G2 | 1TB F3 HD103SJ | W7 64-bit | Mac Mini
Webb: bluekitestudios.com
- Idag Sony läcker uppgifter i rättegång – så stort är Call of Duty 16
- Igår Nvidia: "Energieffektiva RTX 4060 sparar hundralappar" 38
- Igår MSI Geforce RTX 4060 Ventus 2X OC – bra prestanda vid 1080p men medioker kylare 48
- Igår Noctua släpper monteringsram för "deliddade" Ryzen 7000-processorer 15
- Igår Nvidias nästa arkitektur för Geforce kommer år 2025 58
- Idag Youtube testar aggressiv taktik mot annonsblockerare 1
- Igår Veckans fråga: Vilket operativsystem föredrar du? 84
- Igår Bilar med smarta inslag ger fler dumma fel 64
- 27 / 6 Telekombranschen: "Smarta glasögon ersätter telefoner inom fem år" 90
- 26 / 6 Lastpass-användare rasar – kan inte logga in 59
- Veckans fråga: Vilket operativsystem föredrar du?86
- Youtube testar aggressiv taktik mot annonsblockerare4
- Sälja eller behålla, ej använd dator från 20212
- Föra över mini DV till datorn via Firewire DV - USB1
- Senaste klarade spel?398
- Vad spelar du för tillfället?725
- funderade på att köpa ett nytt system: amd eller intel?13
- Irriterande förändring Bitwarden/Chrome12
- Telekombranschen: "Smarta glasögon ersätter telefoner inom fem år"90
- Ert dyraste ” datormisstag”?404
- Säljes Intel Core i5 13400F
- Säljes Gamingdator 4080 / 13700KF / 32GB DDR5
- Säljes I5 12500
- Säljes LG 27'' UltraGear 27GP950 4K Nano IPS 160 Hz HDMI 2.1
- Säljes Star Wars Jedi AMD kod
- Säljes Trasig Xiaomi Mi Electric Scooter (M365) Svart
- Säljes 5800x3D + x570 Meg Unify + be quiet! Dark Rock Slim
- Säljes AMD ASUS DUAL RX6700XT
- Säljes Dell OptiPlex 7010
- Säljes Datordelar: i5 9600k + 1070 GTX mm.
- Youtube testar aggressiv taktik mot annonsblockerare4
- Sony läcker uppgifter i rättegång – så stort är Call of Duty16
- Nvidia: "Energieffektiva RTX 4060 sparar hundralappar"38
- MSI Geforce RTX 4060 Ventus 2X OC – bra prestanda vid 1080p men medioker kylare48
- Veckans fråga: Vilket operativsystem föredrar du?86
- Bilar med smarta inslag ger fler dumma fel64
- Noctua släpper monteringsram för "deliddade" Ryzen 7000-processorer15
- Nvidias nästa arkitektur för Geforce kommer år 202558
- Microsoft vill strömma Windows från molnet72
- Starfield utvecklas med AMD:s välsignelse154
Externa nyheter
Spelnyheter från FZ
- Över tre miljoner exemplar av Final Fantasy XVI har skeppats och sålts idag
- Sony råkar avslöja spelbudgetar och annat på grund av dålig märkpenna idag
- Alan Wake och CoD: Kallt krig snart på PS Plus igår
- Red Dead Redemption åldersmärkt igen i Korea – det spekuleras i remaster igår
- Fallout London flyttas för att slippa Starfield-konkurrensen igår