Oficjalne forum pomocy serwisu PUN.pl

Niestety, nikt nie powie Ci czym jest FluxBB - musisz go poznać sam!

Nie jesteś zalogowany na forum.

#1 2010-10-24 20:36:31

Rudik
Użytkownik
Skąd: Iława
Dołączył: 2007-06-18
Liczba postów: 5,530

Skrypt pobierający RSS z forum

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.

Demo skryptu

Ostatnio edytowany przez Rudik (2010-10-25 16:32:58)

Offline

#2 2010-10-24 21:57:06

iki
Użytkownik
Skąd: Las Asharon
Dołączył: 2008-09-13
Liczba postów: 1,721
WWW

Odp: Skrypt pobierający RSS z forum

[dblpt]o Nie wiem o co chodzi. Zbyt skomplikowane.
Przecież mogę kliknąć, rss.PNG pod stopką i jest chyba ten sam efekt.

Offline

#3 2010-10-24 22:09:26

Rudik
Użytkownik
Skąd: Iława
Dołączył: 2007-06-18
Liczba postów: 5,530

Odp: Skrypt pobierający RSS z forum

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

Użytkowników czytających ten temat: 0, gości: 1
[Bot] ClaudeBot

Stopka

Forum oparte na FluxBB

Darmowe Forum
sumh - bloods-gang - ts3siri - polskakawaleriazmechanizowana - mta-mynewworld