Seite 2 von 10

Verfasst: 19.10.2007 21:53
von Kewwwin
Scotty hat geschrieben:Einfach via Include einfügen, deine HTML Datei muss dann natürlich die Endung .php haben. Sonnst kannst du nur mit Frames arbeiten und wirst mit jedem Script Probleme bekommen.
Die Endung .phtml sollte auch funktionieren, oder?

Verfasst: 19.10.2007 22:36
von nickvergessen
Man könnte es auch gleich in .html machen einfach im <body> <?php ... ?> benutzen.

Verfasst: 20.10.2007 22:30
von Kendoo
Scotty hat geschrieben:Oder nutze diesen MOD (siehe Anhang):

http://www.stubentiger-forum.de/viewtopic.php?t=181

Das ist eine Modifikation des MODs vom phpBB2 für das phpBB3, welchen ich auch nutze.
Ich habe dazu mal eine Frage, ich habe mir diesbezüglich selber was ausgedacht, weil ich meine eigentliche HP nicht auf dem gleichen Server habe wie das Forum und ein externer DB Zugriff natürlich nicht möglich ist.
Ich hab mir eine Datenbankabfrage gebastelt, die immer die relevanten Daten der letzten 5 Posts in eine xml Datei schreibt. Diese lese ich dann auf meiner Homepage mit simplexml_load_file aus und gebe die Daten per for Schleife aus. Das klappt auch alles wunderbar. meine Frage ist eigentlich, wo kann man die Datei, die das xml File schreibt am besten includen im Board. Also ich will im Grunde, dass nach jedem Post egal ob neus Topic oder Reply oder nach einem Löschen eines Beitrages oder ganzen Threads oder auch Verschieben usw. diese xml Datei geschrieben wird. Nur wo ist da die günstigste Stelle wo man diese Datei includen kann? Oder muss man sie dann an mehrern Stellen includieren?

Ich hoffe es weiß jemand ne AW darauf

Verfasst: 21.10.2007 00:16
von nickvergessen
Also wegen posten, editieren udn einfachen post löschen würde ich die posting.php empfehlen, allerdings sind davon moderative Eingriffe soweit ich weiß nicht betroffen. Dazu müsste man noch die mcp.php editieren.

Verfasst: 21.10.2007 03:41
von Kendoo
Danke für Deine Antwort aber das war mir schon klar soweit. In der posting.php aber wo genau, ich dachte das weiß vllt. jemand. Ich hab daraus jetzt ne Funktion gemacht makeXML(), die habe ich in der functions_posting.php untergebracht. Wenn ich jetzt eine Aktion ausführe also reply, post, edit oder delete soll nach erfolgter Aktion meine Funktion aufgerufen werden.

Ich habs bisher nur so hinbekommen, dass meine Funktion aufgerufen wird, bevor der eigentlich Update Prozess stattfindet. Das bringt mir dann natürlich nie die letzten 5 Posts sondern immer die letzten 5 ohne den gerade gemachten.

Ich könnts natürlich in der index.php einbinden, dann wird bei jedem Forumaufruf diese Datei aktuell geschrieben aber das ist ja nicht die feine englische Art. :grin:

Verfasst: 21.10.2007 09:23
von nickvergessen
Ich würds mal versuchen in genannten Dateien vor ;)

Verfasst: 21.10.2007 13:27
von andy3000
Eine Frage zu diesem Mod hier (wenn ich hier richtig bin):

http://www.stubentiger-forum.de/viewtopic.php?t=181

Wie kann man da eine Forum-ID aussließen? Ich wollte alle Foren berücksichtigen, außer einem. Und alle Foren-IDs reinzuschreiben ist etwas aufwendig.

Da steht nur:

Code: Alles auswählen

$topic_length = '50'; // length of topic title
$topic_limit = '5';	// limit of displayed topics
$special_forums = '0'; // specify forums ('0' = no; '1' = yes)
$forum_ids = ''; // IDs of forums; separate them with a comma
Könnte vielleicht jemand sagen, was man hinzufügen muss um eine Forum-IDauszuschließen?
Vielen Dank im Vorraus.

Verfasst: 21.10.2007 16:18
von Kendoo
nickvergessen hat geschrieben:Ich würds mal versuchen in genannten Dateien vor ;)
:grin: das bringts auch nicht, weil dann schon beim bloßen aufrufen der posting.php die Funktion aufgerufen wird.

Ich hab aber die Lösung gefunden, es muss in die functions_posting.php, dann klappt es ausgezeichnet. Wenn ich das Ganze komplett fertig habe veröffentliche ich das hier mal, vllt. braucht es noch jemand.

Best Reagrds

Verfasst: 03.11.2007 15:46
von Kendoo
So, wie versprochen werde ich nun mal meinen Lösungsansatz dazu hier veröffentlichen.
Problematik:
man möchte die letzten 5 oder auch mehr Topics/Posts auf seiner Homepage anzeigen lassen, diese ist jedoch auf einem anderen Server und man hat keinen Datenbankzugriff auf den MySQL Server des Forums.

Dazu erstellt man sich zunächst eine neue Funktion und packt diese in eine Datei mit dem Namen functions_last_posts_extern.php

Code: Alles auswählen

<?php
/**
* Make xml File
*/
function makeXML(){
  global $db;
$xml_sql = 'SELECT t.topic_id, t.forum_id, t.icon_id, t.topic_title, t.topic_views, t.topic_replies, t.topic_type, t.topic_first_poster_name, t.topic_last_post_id, t.topic_last_poster_name, t.topic_last_poster_colour, t.topic_last_post_time, p.post_id 
		FROM ' . TOPICS_TABLE . ' t LEFT JOIN ' . POSTS_TABLE . " p ON t.topic_last_post_id = p.post_id
		WHERE p.post_id <> ''
		ORDER BY t.topic_last_post_time DESC LIMIT 5";
		$xml_res = $db->sql_query($xml_sql);
		
$fh = fopen( "../forum.xml", "w" );
fputs( $fh, "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
fputs( $fh, "<ResultSet>\n");
while ($data = $db->sql_fetchrow($xml_res)){
fputs( $fh, "<topic>\n<icon>".$data['icon_id']."</icon>\n<typ>".$data['topic_type']."</typ>\n<subject>".$data['topic_title']."</subject>\n<zeit>".$data['topic_last_post_time']."</zeit>\n<starter>".$data['topic_first_poster_name']."</starter>\n<poster>".$data['topic_last_poster_name']."</poster>\n<colour>".$data['topic_last_poster_colour']."</colour>\n<p_id>".$data['topic_last_post_id']."</p_id>\n<t_id>".$data['topic_id']."</t_id>\n<f_id>".$data['forum_id']."</f_id>\n<views>".$data['topic_views']."</views>\n<replies>".$data['topic_replies']."</replies>\n</topic>\n" );
}
fputs( $fh, "</ResultSet>");
fclose( $fh );
}
?>
Die Pfadangabe in fopen sollte zum Rootverzeichnis verweisen. Diese Datei abspeichern und in den includes Ordner kopieren.
Als nächstes öffnen wir die Datei functions_posting.php ebenfalls im Verzeichnis includes zu finden.

Dort fügen wir an folgenden Stellen folgendes ein:
Suche:

Code: Alles auswählen

if (!defined('IN_PHPBB'))
{
	exit;
}
Füge danach in einer neuen Zeile ein:

Code: Alles auswählen

include_once("functions_last_posts_extern.php");
Suche:

Code: Alles auswählen

//	$sql_data[USERS_TABLE] = ($data['post_postcount']) ? 'user_posts = user_posts - 1' : '';
Füge danach in einer neuen Zeile ein:

Code: Alles auswählen

makeXML();
Suche:

Code: Alles auswählen

return $url;
Füge in der Zeile davor ein:

Code: Alles auswählen

makeXML();
Das war alles in der Datei functions_posting.php, will man nun auch Moderatorenaktionen berücksichtigen, öffnet man die Datei includes/mcp/mcp_main.php
Suche:

Code: Alles auswählen

/**
* @ignore
*/
if (!defined('IN_PHPBB'))
{
	exit;
}
Füge danach in einer neuen Zeile ein:

Code: Alles auswählen

include_once("includes/functions_last_posts_extern.php");
Suche:

Code: Alles auswählen

if (sizeof($post_ids) == 1)
In diesen Code Block fügt man dann makeXML(); ein, das Ganze sieht dann so aus:

Code: Alles auswählen

		if (sizeof($post_ids) == 1)
		{
			if ($deleted_topics)
			{
				// We deleted the only post of a topic, which in turn has
				// been removed from the database
				$success_msg = $user->lang['TOPIC_DELETED_SUCCESS'];
			    makeXML();
			}
			else
			{
				$success_msg = $user->lang['POST_DELETED_SUCCESS'];
			    makeXML();
			}
		}
		else
		{
			if ($deleted_topics)
			{
				// Some of topics disappeared
				$success_msg = $user->lang['POSTS_DELETED_SUCCESS'] . '<br /><br />' . $user->lang['EMPTY_TOPICS_REMOVED_WARNING'];
			    makeXML();
			}
			else
			{
				$success_msg = $user->lang['POSTS_DELETED_SUCCESS'];
			    makeXML();
			}
		}
Das war es dann auch in dieser Datei. Als nächstes braucht man dann noch die Datei, die auf dem Server der Homepage die Daten der erstellten Datei forum.xml ausliest und ausgibt an einer Stelle Eurer Wahl auf Eurer HP. Ich habe die Datei last_topics.php genannt

Code: Alles auswählen

<div style="padding:3px;background-color:transparent;">
<?php
function object2array($object){
$return = NULL;
if(is_array($object)) {
foreach($object as $key => $value) $return[$key] = object2array($value);
}
else{
$var = get_object_vars($object);
if($var) {
foreach($var as $key => $value)
$return[$key] = object2array($value);
}
else
return strval($object);
}
return $return;
}

$xml_filename="Pfad zur/forum.xml";
if(!$xml_content = @simplexml_load_file($xml_filename)) {
echo "Keine Daten verfügbar";
}
else {
$inhalt = object2array($xml_content);

for($i=0;$i<5;$i++){
switch ($inhalt['topic'][$i]['typ']){
case 3: $icon = "announce_unread.gif"; $title = "Announcement"; break;
case 2: $icon = "announce_unread.gif"; $title = "Global Announcement"; break;
case 1: $icon = "sticky_unread.gif"; $title = "Sticky"; break;
default: $icon = "topic_unread.gif"; $title = "Topic";
}

echo "<img src=\"images/".$icon."\" width=\"14\" height=\"15\" alt=\"".$title."\" />&nbsp;<a style=\"color:#0B4A70;\" href=\"http://tortisoft.uttx.net/board/viewtopic.php?f=".$inhalt['topic'][$i]['f_id']."&t=".$inhalt['topic'][$i]['t_id']."&p=".$inhalt['topic'][$i]['p_id']."#p".$inhalt['topic'][$i]['p_id']."\" title=\"".$inhalt['topic'][$i]['subject']."\" onclick=\"window.open(this.href); return false;\">".((strlen($inhalt['topic'][$i]['subject'])>40)?utf8_substr($inhalt['topic'][$i]['subject'],0 , 40)."...":$inhalt['topic'][$i]['subject'])."<img src=\"images/pfeil.gif\" width=\"16\" height=\"7\" alt=\"zum Beitrag\" /></a><br />\n<span style=\"font-size:x-small;\">by: <strong><span style=\"color:".(($inhalt['topic'][$i]['colour'])?"#".$inhalt['topic'][$i]['colour']:"black").";\">".$inhalt['topic'][$i]['poster']."</span></strong> started by: ".$inhalt['topic'][$i]['starter']." (Replies: ".$inhalt['topic'][$i]['replies'].", Views: ".$inhalt['topic'][$i]['views'].")<br />\n".date("D d.M Y, H:i a", $inhalt['topic'][$i]['zeit'])."</span><br />\n\n";
}
}
?>
</div>
Diese Datei bindet man dann mittels der PHP Funktion include("last_topics.php"); an beliebiger Stelle in die HP ein.

Sollte es noch Fragen geben bitte hier dann posten.

Man könnte daraus vllt.auch einen Mod machen aber dazu fehlt mir momentan die Zeit, sollte jemand Lust haben daraus was zu machen, so bitte ich zumindest darüber informiert zu werden, da der Code von mir stammt!
PS: die fertigen Dateien werde ich auf Wunsch auch zum Download bereitstellen

mfg Kendoo

Verfasst: 04.11.2007 14:33
von andy3000
Ähm,

Wo findet man die forum.xml?
Muss man diese selbst erstellen und wenn ja, wie sieht die denn aus?
Danke!

Edit: Hat sich erledigt. Hat funktioniert.
Vielen Dank!