Welcome!

By registering with us, you'll be able to discuss, share and private message with other members of our community.

SignUp Now!

Wordpress / Kommentare auf eigener Seite

DoktorSpritz

New member
Registriert
02. Jan. 2010
Beiträge
50
Reaktionspunkte
0
Hallo Domainer-Freunde,

wie schon öfters erwähnt betreibe ich ja den Boxsport-Blog Boxsport News.
Ich habe da mal eine Frage an die Wordpress Spezialisten hier im Forum :hmmmm:

Ist es möglich, dass ich eine eigene Seite mit allen abgegeben Kommentaren
erstellen kann? Also praktisch eine statische Seite, die alle Kommentare
artikelübergreifend auflistet... Wenn ja, wie kriege ich das hin?

Beste Grüße, Marijan P. aus Bremen ;)
 
Super SEO Comment dürfte das passende Plugin für dich sein.

Das kommt dem ganzen doch schon viel näher. Mein Ziel ist es aber, wenn die Besucher dann auf den zukünftigen Link "Kommentare" klicken, dass dort alle Kommentare chronologisch geordnet sind, wie z.B. bei dieser Seite Kommentare für Dana´s Fashion Blog

So eine Art Feed, diesmal aber nicht für die einzelnen Artikel sondern für die Kommentare.
 
Den Feed aller Kommentare erreichst du unter feed://www.boxsport-news.de/comments/feed/
 
Danke an papo und McDot!!! :adore:

Nun meine nächste Frage... kann man den Feed nach seinen Wünschen gestalten, um diesen bestmöglich ins Projekt integrieren zu können? Gibt es dafür ein Plug In?
 
hmm... wenn du mit PHP fit bist dann würde ich eine neue (eigene) wordpress seite basteln, den eigenen feed auslesen und dann kannst du machen was du willst. Sortieren, Ausgeben, Adsense zwischen basteln, Verlinken, oder was auch immer ;-)
 
hmm... wenn du mit PHP fit bist dann würde ich eine neue (eigene) wordpress seite basteln, den eigenen feed auslesen und dann kannst du machen was du willst. Sortieren, Ausgeben, Adsense zwischen basteln, Verlinken, oder was auch immer ;-)

Weltenbummler du bringst es auf den Punkt! (leider habe ich nur geringe PHP Kenntnise, sodass ich das alleine schlecht realisieren kann)

Hast du da mehr Ahnung von? Könntest du mir dafür 'ne kurze Anleitung geben? :adore:

Beste Grüße aus Bremen, Marijan P.
 
Hallo Marijan,

hier mal meine Bastelei... Gebrauch auf eigene Gefahr :-)

Erstelle einfach eine neue Datei. z.B. "rss.php" und kopiere den folgenden code rein. Danach lade die datei in den template ordner deines blogs. Erstelle eine neue seite und wähle als template einfach "Meine RSS" aus. Keinen Content in die seite eingeben, das macht das script ja selbst.
Sollte funktionieren... probieren geht über studieren ;)

PHP:
<?php
/*
Template Name: Meine RSS
*/

//URL Auslesen
function http_get($url){
	$url_stuff = parse_url($url);
	$port = isset($url_stuff['port']) ? $url_stuff['port'] : 80;
	$fp = fsockopen($url_stuff['host'], $port);

	if($fp){
		if(!empty($url_stuff['query'])) $query = 'GET ' . $url_stuff['path'].'?'.$url_stuff['query'] . " HTTP/1.0\n";
		else  $query = 'GET ' . $url_stuff['path'] . " HTTP/1.0\n";
		$query .= 'Host: ' . $url_stuff['host'];
		$query .= "\n\n";
		fwrite($fp, $query);

		while ($tmp = fread($fp, 1024)) {
			$buffer .= $tmp;
		}
	}else{
		$buffer=""; //if connection is impossible
	}

	return $buffer;
}

//Werte Sortieren
function vergleich($wert_a, $wert_b) {
	// Sortierung nach dem zweiten Wert des Array (Index: 1)
	$a = $wert_a["date"];
	$b = $wert_b["date"];

	if ($a == $b) {
		return 0;
	}

	return ($a > $b) ? -1 : +1;
}

//RSS Feed Parsen
function getRssfeed($rssfeed, $cssclass="", $encode="auto", $anzahl=10, $mode=0)
{
	// $encode e[".*"; "no"; "auto"]

	// $mode e[0; 1; 2; 3]:
	// 0 = nur Titel und Link der Items weden ausgegeben
	// 1 = Titel und Link zum Channel werden ausgegeben
	// 2 = Titel, Link und Beschreibung der Items werden ausgegeben
	// 3 = 1 & 2
	
	// Zugriff auf den RSS Feed
	//$data = file($rssfeed);
	$data = http_get($rssfeed);

	if(strpos($data,"</item>") > 0)
	{
		preg_match_all("/<item.*>(.+)<\/item>/Uism", $data, $items);
		$atom = 0;
	}
	elseif(strpos($data,"</entry>") > 0)
	{
		preg_match_all("/<entry.*>(.+)<\/entry>/Uism", $data, $items);
		$atom = 1;
	}
	
	// Encodierung
	if($encode == "auto")
	{
		preg_match("/<?xml.*encoding=\"(.+)\".*?>/Uism", $data, $encodingarray);
		$encoding = $encodingarray[1];
	}
	else
	{$encoding = $encode;}

	// Titel, Link und Beschreibung der Items
	if(is_array($items[1])) {
		foreach ($items[1] as $item) {
			preg_match("/<title.*>(.+)<\/title>/Uism", $item, $title);
			if(empty($title)) preg_match("/<media:title.*>(.+)<\/media:title>/Uism", $item, $title);
			
			preg_match("/<pubDate.*>(.+)<\/pubDate>/Uism", $item, $date);
			$date = strip_tags($date);
			
			if($atom == 0) {
				preg_match("/<link>(.+)<\/link>/Uism", $item, $link);
			}
			elseif($atom == 1) {
				preg_match("/<link.*alternate.*text\/html.*href=[\"\'](.+)[\"\'].*\/>/Uism", $item, $link);
			}
			
			if($atom == 0) {
				preg_match("/<description>(.*)<\/description>/Uism", $item, $description);
			}
			elseif($atom == 1) {
				preg_match("/<summary.*>(.*)<\/summary>/Uism", $item, $description);
			}
		
			$title = preg_replace('/<!\[CDATA\[(.+)\]\]>/Uism', '$1', $title);
			$description = preg_replace('/<!\[CDATA\[(.+)\]\]>/Uism', '$1', $description);
			$link = preg_replace('/<!\[CDATA\[(.+)\]\]>/Uism', '$1', $link);
			
			$RSSAc = count($RSSA);
			if($encode != "no")
				$RSSA[$RSSAc]["title"] = "<h2>".htmlentities($title[1],ENT_QUOTES,$encoding)."</h2>";
			else
				$RSSA[$RSSAc]["title"] = "<h2>".$title[1]."</h2>";
	
			//$RSS .= $title[1];
			if(!empty($date[1])) {
				if(strtotime($date[1]) < (mktime()-604800)) break;
				$RSSA[$RSSAc]["date"] = "<small><em>".date("d-m-Y H:i", strtotime($date[1]))."</em></small><br>";
			}
			
			$description[1] = str_replace("\n", "", $description[1]);
			$A1 = array("<br>", "<br />", "<p");
			$A2 = array("\n","\n","\n<p");
			$RSSA[$RSSAc]["desc"] = nl2br(strip_tags(str_replace($A1, $A2, html_entity_decode($description[1]))));
			if(strlen($RSSA[$RSSAc]["desc"]) > 500) $RSSA[$RSSAc]["desc"] = substr($RSSA[$RSSAc]["desc"],0,500)." [...]";
			$RSSA[$RSSAc]["link"] = "<div style=\"text-align:right; width:100%;\"><a href=\"".$link[1]."\" title=\"".$title[1]."\" target=\"_blank\">...read more about it</a></div>";
	
			if ($anzahl-- <= 1) break;
		}
	}
	
	return $RSSA;
}

//Hier deine Feed Url Eingeben... bei mehreren URLs einfach eine neue Zeile machen
$RSSA[] = "DEINE_RSS_FEED_URL";
//$RSSA[] = "DEINE_RSS_FEED_URL2";
	
//Wordpress Header
get_header();
	
//RSS FEED
$RSSData = array();
foreach($RSSA AS $key => $value) {
	$RSSData = array_merge($RSSData ,getRssfeed($value,"","no",10,3));
}
//Sortieren
usort($RSSData, 'vergleich');
	
$RSS="";
foreach ($RSSData AS $key => $value) {
	echo "<div style=\"padding:5px; border-bottom:2px solid #999;\">\n";
	echo $value["title"];
	echo $value["date"];
	echo "<p>\n";
		echo $value["desc"];
	echo "</p>\n";			
	echo $value["link"];
	echo "</div>\n";
}

//Wordpress Sidebar
get_sidebar();
//Wordpress Footer
get_footer();

?>

Die Ausgabe kannst/solltest du natürlich nach deinen bedürfnissen anpassen (da wo "echo" steht).

Bei Fragen oder Problemen trage bitte deinen Arzt zum Apotheker oder frag hier noch mal.

Macht 10 Mark :burnout:
 
Ich würde da sganze nach wie vor mit einer Pluginlösung versuchen. Get recent Comments beispielweise lässt sich auch in den normalen Blogbereich einbinden und dort kann mana uch einstellen wi viele Kommenatre angezeigt werden sollen.
 
Ich werde heute mal beide Varianten ausprobieren und gucken welche mir vorteilhafter erscheint.
 
Bevor man jetzt anfängt bei jedem Aufruf der Seite den eigenen Feed einzulesen, lohnt sich auch ein Blick auf
Function Reference/get comments « WordPress Codex .
Das ist nicht nur einfacher sondern sollte auch die internen Caching Hooks nutzen.

Ohne es probiert zu haben, würde ich sagen das wäre die beste Lösung! Nur bin ich nicht so fit in PHP :bawling: Wie kann ich zum Beispiel eine selbstständig erstellte Seite kommentare.php über Wordpress aufrufen lassen?
 
@DoktorSpritz
Wie schon geschrieben. Lade die Datei in deinen Template Ordner. Dann gehst du in dein wordpress admin und erstellst eine normale seite. Rechts hast du die auswahl "Template". Hier sollte jetzt dein eigenes Template erscheinen. Wobei der Template name nicht der dateiname ist, sondern was du in der datei unter

/*
Template Name: Meine RSS
*/

geschrieben hast.

@papo
Sicher ist ein plugin für "nicht programmierer" immer die einfachste lösung. Ich persönlich nutze für gewisse dinge lieber eigene lösungen da sie flexibel sind, plugins nicht. ;-) Und mit dem caching kann man sich auch was einfallen lassen. Kommt auf die zugriffszahlen an.
 
Lade die Datei in deinen Template Ordner. Dann gehst du in dein wordpress admin und erstellst eine normale seite. Rechts hast du die auswahl "Template". Hier sollte jetzt dein eigenes Template erscheinen.

Rechts hab ich die Auswahlt "Template" ? Komisch, bei mir ist das nicht zu finden :hmmmm:
 
@papo
Sicher ist ein plugin für "nicht programmierer" immer die einfachste lösung. Ich persönlich nutze für gewisse dinge lieber eigene lösungen da sie flexibel sind, plugins nicht. ;-)
Ich kann dir nicht ganz folgen, da ich ja gar kein Plugin verlinkt habe...

Aber da du schon so nett warst ganzen Quellcode hier zu posten, dachte ich dich interessiert auch ein Hinweis auf eine entsprechende Funktion die von Wordpress zur Verfügung gestellt wird.

Viele Grüße,
Paul
 
Zurück
Oben