Nie jesteś zalogowany na forum.
Strony: 1
Zainspirowany tym, że na forach działa AJAX postanowiłem zrobić czytnik RSS naszych forów.
O co chodzi?
Chodzi o to, że napisałem skrypt umożliwiający wyświetlanie najnowszych postów na forum (wraz z linkami do wątków, datą napisania i treścią postu).
Skrypt można umieścić w pole obsługujące HTML. Pobiera on RSS tylko z forum na którym jest obsługiwany.
Skrypt ma 2 części.
1 część (JS) - można umieścić byle gdzie na forum w polu obsługującym HTML i na podstronie gdzie mają być wyświetlone najnowsze posty.
Oto kod:
<script type="text/javascript">
//////////////////////////////////
//// AUTOR: PAWEŁ NEŚCIOR ////////
//// www.rudik.boo.pl ////////////
//////////////////////////////////
//////////////////////////////////
////// USTAWIENIA SKRYPTU ////////
//////////////////////////////////
// FORMAT WYŚWIETLANIA
// [link] - link do wątku
// [tytul] - nazwa wątku
// [data] - data publikacji
// [tresc] - treść postu
// <br /> - nowa linia
// w poniższej zmiennej przed znakami cudzysłowiu i apostrofy postaw \ (backslash)
format = "<a href=\"[link]\">[tytul]</a> <i>[data]</i><br />[tresc]";
// USTAWIENIA
// ograniczenie ilości znaków treści postu
// (wpisz "brak" (w cudzysłowie) jeśli chcesz wyłączyć ograniczenie)
ograniczenie = 500;
// ilość pokazywanych postów (sortowane wg. daty publikacji)
// (wpisz "wszystkie" (w cudzysłowie) jeśli chcesz pokazać wszystkie posty)
ilosc = 10;
// separacja następnych postów
separacja = "<br /><br />";
// ID elementu w którym mają być wyświetlane posty
// (najlepiej niech to będzie div)
id = "rss";
// Czy posty mają być wyświetlane od razu, czy dopiero po kliknięciu na przycisk
// jeśli od razu podaj wartość 1, jeśli po kliknięciu na link podaj wartość 2
load = 1;
//////////////////////////////////
///////// WŁAŚCIWY KOD ///////////
//////////////////////////////////
function polaczenie() {
try {
var pol = new XMLHttpRequest();
}
catch(err1) {
try {
var pol = new ActiveXObject("Msxml2.XMLHTTP");
}
catch(err2) {
try {
var pol = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(err3) {
var pol = false;
}
}
}
return pol;
}
http = polaczenie();
if (load == 1) {
document.getElementsByTagName("body")[0].onload = pokaz();
return false;
}
function load() {
if (load == 2) {
return pokaz();
}
else {
return false;
}
}
function pokaz() {
var adres = "rss.php";
var rand = parseInt(Math.random() * 999999999999);
var url = adres + "?rand=" + rand;
http.open("GET", url);
http.onreadystatechange = zwrotna;
http.send(null);
}
function zwrotna() {
if (http.readyState == 4) {
if (http.status == 200) {
var title = http.responseXML.getElementsByTagName("title");
var link = http.responseXML.getElementsByTagName("link");
var desc = http.responseXML.getElementsByTagName("description");
var pub = http.responseXML.getElementsByTagName("pubDate");
var text = "";
if (ilosc == "wszystkie") {
ile = title.length;
}
else {
ile = ilosc + 1;
}
for (i = 1; i < ile; i++) {
var i2 = i - 1;
var opis = desc[i].childNodes[0].nodeValue;
var opis = opis.replace(/<![CDATA[(.*?)]]>/, "$1");
if (ograniczenie !== "brak") {
if (opis.length > ograniczenie) {
var opis = opis.substr(0, ograniczenie);
var opis = opis + "<a href=\"#\" style=\"display:none;\"></a>";
var opis = opis + "<br /><a href=\"" + link[i].childNodes[0].nodeValue + "\"><i>Czytaj dalej...</i></a>";
}
}
var data = pub[i2].childNodes[0].nodeValue;
var data = data.replace("roda", "Środa");
var data = data.replace("Pištek", "Piątek");
var wyswietlanie = format.replace(/(.*?)\[link\](.*?)/, "$1" + link[i].childNodes[0].nodeValue + "$2");
var wyswietlanie = wyswietlanie.replace(/(.*?)\[tytul\](.*?)/, "$1" + title[i].childNodes[0].nodeValue + "$2");
var wyswietlanie = wyswietlanie.replace(/(.*?)\[tresc\](.*?)/, "$1" + opis + "$2");
var wyswietlanie = wyswietlanie.replace(/(.*?)\[data\](.*?)/, "$1" + data + "$2");
var text = text + wyswietlanie;
var text = text + separacja;
}
document.getElementById(id).innerHTML = text;
}
}
}
</script>
Wy (jako użytkownicy skryptu) możecie edytować tylko część pt. Ustawienia skryptu. Część Właściwy kod i Autor muszą pozostać bez zmian.
Skrypt można konfigurować do własnych potrzeb. Do tego właśnie jest część Ustawienia skryptu.
Możecie tam zrobić takie rzeczy jak:
- ustalić jak mają wyglądać wyświetlane nagłówki (format). Wstawiając odpowiednie frazy (np. [link]) konfigurujecie wyświetlanie postów. Można używać HTML, ale przed każdym znakiem cudzysłowia i apostrofą musi stać \ (backslash), z wyjątkiem cudzysłowiów (zabijcie mnie za tą odmianę, ale za licha nie wiem jak to się pisze) zaczynających i kończących zmienną format.
- ustawić czy ma być ograniczenie znaków w wyświetlaniu postów, jeśli tak to ile znaków ma być wyświetlanych
- ustawić ile postów ma być wyświetlanych
- podać separację pomiędzy kolejnymi wyświetlanymi postami
- podać ID elementu w którym mają być wyświetlane posty
- ustalić, czy posty mają być widoczne od razu czy po naciśnięciu przycisku
2 część (HTML) - zawiera DIV w którym mają być wyświetlane posty (o konkretnym ID) oraz ew. przycisk powodujący wyświetlenie postów.
Oto kod:
<a href="#" onclick="pokaz();return false;">Pokaż</a>
<div id="rss"></div>
W divie będą wyświetlane posty (musi mięć takie samo ID jak w ustawieniach skryptu).
Jeśli korzystacie z funkcji automatycznego pokazywania postów (czyli wartość 1 w ustawieniach skryptu) skasujcie link.
Ostatnio edytowany przez Rudik (2010-10-25 16:32:58)
Offline
Dzięki temu skryptowi możesz pokazać treść najnowszych postów bez użycia PHP.
Czyli tak jakby przenieść RSS na forum, jednocześnie konfigurując wygląd i inne ustawienia.
Np. chcesz pokazać w ogłoszeniu 2 najnowsze posty na forum, dzięki temu możesz to utworzyć.
Jutro jeszcze dorobię możliwość ukazywania losowych postów z forum.
Offline
Strony: 1