Indlæs andet indhold på denne side:
Når vi snakker om news feeds, er det en sag med to sider:
Siden er opdateret 15. 6. 2006
Dette script er afprøvet på flere forskellige rss'er og virker upåklageligt, hvis rss-filen er fejlfri (hvilket jeg af gode grunde ikke kan garantere for).
Du starter med at lave en tom side (ikke noget indhold i body) og gemmer den som eks. hss.php.
Over sidens header-sektion indsætter du denne kode:
<!--#include file="feedreader.inc"-->
Derefter indsætter du denne kode i sidens body:
<% visRSS("http://hjemmesideskolen.net/feed/hss-feed.xml") %>
Url'en i parentesen viser det feed, som skal vises på siden. Indsæt selv det rss, som du vil læse. Lav et antal kopier af siden med hver sit rss indlæst efter dit eget behov.
Nu mangler du bare at lave det asp-script, som læser xml-filen og oversætter den til html. Gem dette script som feedreader.inc:
<%
session.LCID = 1030
function printImage(imgItem)
Dim item, strReturnImage
strReturnImage = ""
If imgItem.hasChildNodes Then
Dim strLink, strURL, strDescription, strTitle, strWidth, strHeight
For each Item in imgItem.childNodes
Select Case lcase(Item.tagName)
case "link"
strLink = Item.text
case "url"
strURL = Item.Text
case "title"
strTitle = Item.Text
case "description"
strDescription = Item.Text
case "width"
strWidth = Item.Text
case "height"
strHeight = Item.Text
}
Next
If strURL <> "" Then
strReturnImage = "<img src=""" & Server.HTMLencode(strURL) & """"
IF strWidth <> "" and strHeight <> "" Then
strReturnImage = strReturnImage & " width=""" & strWidth & """ height=""" & strHeight & """"
End If
IF strDescription <> "" Then
strReturnImage = strReturnImage & " alt=""" & strDescription & """ title=""" & strDescription & """"
Else
strReturnImage = strReturnImage & " alt="""""
End IF
IF strLink <> "" Then
strReturnImage = "<a href=""" & Server.HTMlencode(strLink) & """>" & strReturnImage & " /></a>"
Else
strReturnImage = strReturnImage & ">"
End IF
End IF
End IF
printImage = strReturnImage
end function
function formatXMLdate(xmlDate)
end function
sub visRSS(extURL)
//' Erklær variable
Dim xmlDoc, channelNodes, entry, strChannelTitle, strChannelDescription, strChannelLink, strChannelImage
Dim itemNodes, item, ItemPubdate, PubDate, arrTmp(), arrTime()
Dim strItemTitle, strItemLink, strItemDescription, strItemPubdate, strItemImage
Dim arrItemTitle, arrItemLink, arrItemDescription, arrItemPubdate, arrItemImage, arrPubDate
//' Sæt defaultværdier
strItemTitle = ""
strItemLink = ""
strItemDescription = ""
strItemPubdate = ""
strItemImage = ""
strChannelImage = ""
//' RSS-feedet loades
set xmlDoc = createObject("Msxml.DOMDocument")
xmlDoc.async = false
xmlDoc.setProperty "ServerHTTPRequest", true
xmlDoc.load(extURL)
//' Check at RSS-feedet er loadet korrekt
If (xmlDoc.parseError.errorCode <> 0) then
' Udskriv eventuelle fejl (for nem fejlretning)
echo $"XML error: " & xmlDoc.parseError.reason
//' Fortsæt hvis alt er ok
Else
' Åbn elementet <channel>
set channelNodes = xmlDoc.selectNodes("//channel/*")
for each entry in channelNodes
' De tre obligatoriske elementer i channel lægges i variable
if entry.tagName = "title" then
strChannelTitle = entry.text
elseif entry.tagName = "description" then
strChannelDescription = entry.text
elseif entry.tagName = "link" then
strChannelLink = entry.text
elseif entry.tagName = "image" then
strChannelImage = printImage(entry)
end if
next
' De tre obligatoriske elementer i channel udskrives
echo $"<h2>" & strChannelTitle & "</h2>" & vbCrLf & vbCrLf
echo $"<p>" & strChannelDescription & "</p>" & vbCrLf & vbCrLf
echo $"<p><a href='" & strChannelLink & "'>Besøg " & strChannelTitle & "</a></p>"
If strChannelImage <> "" Then
echo $"<p>" & strChannelImage & "</p>" & vbCrLf & vbCrLf
End IF
echo $"<hr />" & vbCrLf & vbCrLf
' Åbn elementerne <item>
set itemNodes = xmlDoc.selectNodes("//item/*")
For each item in itemNodes
' Elementerne i channel lægges i variable med #%# som adskillelse
if item.tagName = "title" then
strItemTitle = strItemTitle & item.text & "#%#"
elseif item.tagName = "link" then
strItemLink = strItemLink & item.text & "#%#"
elseif item.tagName = "description" then
strItemDescription = strItemDescription & item.text & "#%#"
elseif item.tagName = "pubDate" or item.tagName = "dc:date" then
strItemPubdate = strItemPubdate & item.text & "#%#"
elseif item.tagName = "image" then
strItemImage = strItemImage & item.text & "#%#"
end if
next
' Elementerne i channel splittes i arrays
arrItemTitle = split(strItemTitle,"#%#")
arrItemLink = split(strItemLink,"#%#")
arrItemDescription = split(strItemDescription,"#%#")
arrItemPubdate = split(strItemPubdate,"#%#")
arrItemImage = split(strItemImage,"#%#")
' Elementerne i channel udskrives
Dim i
echo $"<ul>" & vbCrLf & vbCrLf
for i = 0 to UBound(arrItemTitle) - 1
echo $"<li>"
echo $"<a href='" & arrItemLink(i) & "'>" & arrItemTitle(i) & "</a> "
'Pubdate udskrives hvis den eksisterer
If strItemPubdate <> "" Then
echo $"<span><br />" & (arrItemPubdate(i)) & "</span>"
End If
' Description udskrives hvis den eksisterer
if strItemDescription <> "" then
echo $"<br />" & arrItemDescription(i)
elseif strItemImage <> "" then
echo $arrItemImage(i)
end if
echo $"</li>" & vbCrLf & vbCrLf
next
echo $"</ul>"
' Vi rydder op
set channelNodes = nothing
set itemNodes = nothing
End If
End Sub
%>
Du skulle hermed være køreklar. I din asp-sides body kan du indsætte et nyt feed og give din side et nyt navn, så du har en asp-side for hvert feed, du ønsker at abonnere på.
Hvis du vil være en smule doven, kan du downloade et køreklar script.