Jeden Beitrag einzeln als Webseite anzeigen und verlinken
Verfasst: 28.07.2007 20:12
Einen einzelnen Foren-Beitrag, wie beim vBulletinBoard, irgendwo verlinken können, ist meines Erachtens doch sehr wichtig. Ich habe eine Möglichkeit gefunden, die aber noch viel besser ist als die beim vBB existierende Möglichkeit. Indem man grundsätzlich ein Forenbord in verschiedenen Ordnern installiert und über dieselben Datenbanktabellen laufen lässt, kann der User durch Veränderung der Angabe des Ordnernamens in der Url in seinem Browser von einer Installation zur anderen wechseln.
Wenn ein Board so konfiguriert ist, dass jeweils ein Beitrag je Threadseite eingestellt ist, kann man sogar nicht nur einen einzelnen Beitrag je Threadseite anzeigen lassen, sondern dieser Beitrag wird komplett mit sämtlichen Forumsfunktionen angezeigt. Das sieht nicht nur viel besser aus, man kann dann sofort zum jeweils vorigen oder nachfolgenden Beitrag wechseln. Ggf. kann sogar sofort auf diesen Beitrag geantwortet werden.
Grundsätzlich müssen dabei zwei Probleme überwunden werden. Zum einen muss ein System zwei mal in verschiedenen Ordnern installiert werden und jeweils auf dieselben Datenbanktabellen zugreifen. Zum anderen muss das zweite System so eingestellt werden, dass alle oder ein Teil seiner Funktionen auf die Anzeige von einem Beitrag je Threadseite eingestellt wird.
Bei einem Forensystem, wie bspw. dem UNB, ist das am einfachsten, weil man nach der Installation einfach den Datenbankpräfix sogar nachträglich im ACP (Adminbereich) ändern kann und weil die Konfiguration über eine Datei erfolgt. Klick!
Man würde also ein Forensystem in einem Ordner installieren, es dann anschließend ein zweites mal in einem anderen Ordner installieren und dann das Datenbankpräfix der ersten Installation bei dieser zweiten Installation im ACP angeben. Die nicht benötigten neuen Datenbanktabellen kann man dann mit phpMyAdmin löschen. Dann bräuchte man nur noch für eines der beiden Forensysteme die Anzahl der Beiträge je Threadseite auf Eins stellen im ACP.
Beim phpBB3 ändert man das Datenbankpräfix einfach in der Datei config.php. Rechts neben der Variable $table_prefix die Angabe zwischen den beiden Apostrophs ' ändern! Ich weiß nicht, ob dann auch noch der Cache über den Adminbereich geleert werden muss, damit es sofort wirksam wird.
Wenn das bei einem Forensystem nicht möglich ist, das Datenbankpräfix nach der Installation zu ändern; oder man nicht weiß, wie man das machen könnte, löst man einfach so, indem man das Forenboard zuerst in einem Ordner installiert. Dann löscht man sämtliche Datenbanktabellen und installiert das Board im anderen Ordner. Dabei gibt man dasselbe Datenbankpräfix wie bei der ersten Installation an. Man sollte darauf achten, dass man bei der zweiten Installation bei jeder Option dieselben Angaben macht.
Wie man beim zweiten System die Anzahl der Beiträge je Threadseite auf '1' stellt, gehe ich später darauf ein. Das Problem ist nämlich, dass, wenn man das einfach im ACP (Adminbereich) ändern würde, dass man das damit für beide Systeme zugleich ändern würde, weil diese Einstellung von der Datenbank abgerufen wird.
Falls man aber noch eine weitere (dritte) Installation hinzufügen möchte, wenn es im Forum schon zahlreiche Beiträge und Mitglieder gibt, müsste man ein Datenbank-Backup machen, die Datenbanktabellen löschen, diese dritte Installation durchführen und dann mit der Backupdatei die Datenbanktabellen wiederherstellen.
Die Mühe, das System ein zweites mal zu installieren, kann man sich beim phpBB3 sparen, indem man einfach sämtliche Dateien einer Installation herunterlädt und in einen anderen Ordner wieder hochlädt. Falls man meinen sollte, dass das nicht funktionieren könne, weil der Scriptpfad in den Dateien falsch angegeben sei, so ist das seltsamer Weise nicht so; weil dieser, außer in der Datei cache/data_global.php, in keiner Datei angegeben ist; sondern dass sich das System den Namen des Ordners aus den bereits vorhandenen Datenbanktabellen über >[Präfix_]config - 'script_path'< holt.
Auch die Datei im Cache cache/data_global.php macht dabei kein Problem, denn die holt sich nach einer Cache-Löschung über das ACP, den Namen des Ordnernamen unmittelbar nach dem ersten Aufruf auch aus der Datenbank. Das Problem ist nur, dass es sich dabei um den alten Ordnernamen der kopierten Installation handelt. Dasselbe Problem hat man aber auch, wenn man ein System ein zweites mal normal (in einen weiteren Ordner) installiert.
Seltsamer Weise schadet das aber überhaupt nicht, was ich mir überhaupt nicht erklären kann; denn eigentlich müsste man in der Datenbank eine weitere Tabellenspalte anlegen und in den Dateien alle Verweise auch entsprechend ändern. Also überall 'script_path' durch den neu gewählten Namen ersetzen, bspw. 'script_path_1', falls man die neue Tabellenspalte in der Datenbank so benennen würde. Der Name 'script_path' ist übrigens in diesen Dateien vorhanden:
common.php
adm/index.php
cache/data_global.php
includes/functions.php
includes/functions_convert.php
includes/functions_transfer.php
includes/message_parser.php
includes/session.php
includes/acp/acp_board.php
Und dann gibt es noch ein zweites Problem, nämlich dass das Board nicht über Konfigurationsdateien konfiguriert wird, sondern über die Datenbank in der Tabelle >[Präfix_]config - posts_per_page<. Jede Veränderung der Einstellung für die Anzahl der Beiträge in einem Board würde früher oder später auch im anderen wirksam werden, weil die diesbezügliche Einstellung aus der Datenbank abgerufen wird. Bspw. beim UNB erfolgt die Einstellung der Anzahl der Seite über Konfigurationsdateien, wie ich das schon schrieb. Aber um eine Veränderung der Anzahl der Beiträge beim phpBB3 in nur einem System zu realisieren, geht man so vor:
In der Datenbank in dieser Tabelle >[Präfix_]config< eine zweite Spalte posts_per_page_1 eröffnen. Dazu klickt man links auf >[Präfix_]config<! (Präfix_ ist der bei der Installation gewählte Präfix, bspw. 1_ oder phpbb3_) Dann rechts oben auf Einfügen! Unter >config_name< gibt man posts_per_page_1 an. Unter >config_value< die Anzahl der Beiträge je Threadseite, also 1. Unter >is_dynamic< gibt man 0 an. Ich weiß zwar nicht warum, ich weiß nur, dass das bei der Tabellenspalte >posts_per_page< auch angegeben ist, wie man sieht, wenn man oben auf Anzeigen klickt und dann die Seite 6 auswählt.
Ich weiß nicht, warum ich nach jedem Einfügeversuch eine Fehlermeldung hatte; jedenfalls stellte sich dann heraus, dass schon der erste Versuch glückte, ohne dass ich das sofort bemerkte. Die hinzugefügte Tabellenspalte war als letzte auf Seite 8 vorhanden, wie ich dann später bemerkte.
Das Forensystem, dass einen Beitrag je Threadseite anzeigen soll, muss nun so modifiziert werden, dass man in sämtlichen Dateien 'posts_per_page' durch 'posts_per_page_1' ersetzt. Möglicherweise wäre das aber gar nicht so gut, weil dann auch bspw. bei den Suchergebnissen und auch im Formular für den neuen Beitrag nur ein Beitrag je Threadseite angezeigt werden würde.
Deswegen habe ich mich, als jemand, der sich mit PHP leider noch nicht auskennt, nur so vom Gefühl her für die Datei viewtopic.php (Viewtopic = Anzeigen-Beitrag) entschieden und dort alle Ersetzungen vorgenommen. Der Test zeigte, dass alles anscheinend einwandfrei so funktioniert, wie ich es haben wollte. Für Hinweise, dass man was besser anders machen sollte, bin ich natürlich dankbar.
Und auf diese Weise verfährt man, wenn man noch weitere Installationen hinzufügen möchte; bspw. eine, die 100 Beiträge je Seite anzeigen soll. Die hinzuzufügendede Datenbankzeile wäre dann 'posts_per_page_100', oder so. Eine Installation kann man so lassen, wie sie ist. Über den Adminbereich stellt man für diese wie gewohnt ein, wie viele Beiträge je Threadseite angezeigt werden sollen.
Dabei ist es egal, aus welcher Installation heraus man die Adminzentrale aufruft, es wird in jedem Fall in dieselbe Datenbankzeile eingetregen, nämlich in 'post_per_page'. Durch die Änderungen der jeweiligen Dateien viewtopic.php hat diese Einstellung dann aber in den anderen Installationen bei der Anzeige der Threads keinen Einfluss mehr. Von diesen Installationen kann man dann aber nur noch diese Anzahl durch entsprechende Änderungen in der Datenbank einstellen.
Die Variable 'posts_per_page' ist übrigens auch in diesen Dateien enthalten:
search.php
cache/data_global.php (gegebenenfalls)
includes/functions_display.php
includes/functions_posting.php
includes/mcp/mcp_notes.php
includes/ mcp mcp_post.php
includes/ mcp/mcp_topic.php
includes/acp/acp_board.php
includes/acp/acp_users.php
Zweckmäßigerweise sollte man die Ordner so benennen, wie viele Beiträge je Threadseite angezeigt werden sollen. Also ein Ordner sollte 1 heißen und der andere bspw. 10 oder 100; also je nach eingestellter Anzahl der Beiträge je Threadseite.
Praktisch wäre es vielleicht, wenn man das System so abändern könnte, dass in dem System, das bspw. auf 10 Beiträge je Threadseite eingestellt wäre, der Link zu dem Beitrag zu dem System führt, das mit einem Beitrag je Threadseite eingestellt ist. Wie schon weiter oben erwähnt, sehe ich momentan überhaupt keine Möglichkeit das zu ändern, weil in jedem System der Name des Ordners, in dem das System installiert wurde, aus der Datenbank abgerufen wird.
Und dort ist der Ordnername von der Installation angegeben, das man als erstes normal installierte, von dessen Installation man die Datenbanktabellen hinterher nicht löschte. Aber vielleicht kann ja ein phpBB-Experte hierzu was sagen. Übrigens wird die Option "Board deaktivieren" nicht in der Datenbank gespeichert. Gegebenenfalls müsste man diese Einstellung jeweils bei beiden Installationen tätigen.
Wenn ein Board so konfiguriert ist, dass jeweils ein Beitrag je Threadseite eingestellt ist, kann man sogar nicht nur einen einzelnen Beitrag je Threadseite anzeigen lassen, sondern dieser Beitrag wird komplett mit sämtlichen Forumsfunktionen angezeigt. Das sieht nicht nur viel besser aus, man kann dann sofort zum jeweils vorigen oder nachfolgenden Beitrag wechseln. Ggf. kann sogar sofort auf diesen Beitrag geantwortet werden.
Grundsätzlich müssen dabei zwei Probleme überwunden werden. Zum einen muss ein System zwei mal in verschiedenen Ordnern installiert werden und jeweils auf dieselben Datenbanktabellen zugreifen. Zum anderen muss das zweite System so eingestellt werden, dass alle oder ein Teil seiner Funktionen auf die Anzeige von einem Beitrag je Threadseite eingestellt wird.
Bei einem Forensystem, wie bspw. dem UNB, ist das am einfachsten, weil man nach der Installation einfach den Datenbankpräfix sogar nachträglich im ACP (Adminbereich) ändern kann und weil die Konfiguration über eine Datei erfolgt. Klick!
Man würde also ein Forensystem in einem Ordner installieren, es dann anschließend ein zweites mal in einem anderen Ordner installieren und dann das Datenbankpräfix der ersten Installation bei dieser zweiten Installation im ACP angeben. Die nicht benötigten neuen Datenbanktabellen kann man dann mit phpMyAdmin löschen. Dann bräuchte man nur noch für eines der beiden Forensysteme die Anzahl der Beiträge je Threadseite auf Eins stellen im ACP.
Beim phpBB3 ändert man das Datenbankpräfix einfach in der Datei config.php. Rechts neben der Variable $table_prefix die Angabe zwischen den beiden Apostrophs ' ändern! Ich weiß nicht, ob dann auch noch der Cache über den Adminbereich geleert werden muss, damit es sofort wirksam wird.
Wenn das bei einem Forensystem nicht möglich ist, das Datenbankpräfix nach der Installation zu ändern; oder man nicht weiß, wie man das machen könnte, löst man einfach so, indem man das Forenboard zuerst in einem Ordner installiert. Dann löscht man sämtliche Datenbanktabellen und installiert das Board im anderen Ordner. Dabei gibt man dasselbe Datenbankpräfix wie bei der ersten Installation an. Man sollte darauf achten, dass man bei der zweiten Installation bei jeder Option dieselben Angaben macht.
Wie man beim zweiten System die Anzahl der Beiträge je Threadseite auf '1' stellt, gehe ich später darauf ein. Das Problem ist nämlich, dass, wenn man das einfach im ACP (Adminbereich) ändern würde, dass man das damit für beide Systeme zugleich ändern würde, weil diese Einstellung von der Datenbank abgerufen wird.
Falls man aber noch eine weitere (dritte) Installation hinzufügen möchte, wenn es im Forum schon zahlreiche Beiträge und Mitglieder gibt, müsste man ein Datenbank-Backup machen, die Datenbanktabellen löschen, diese dritte Installation durchführen und dann mit der Backupdatei die Datenbanktabellen wiederherstellen.
Die Mühe, das System ein zweites mal zu installieren, kann man sich beim phpBB3 sparen, indem man einfach sämtliche Dateien einer Installation herunterlädt und in einen anderen Ordner wieder hochlädt. Falls man meinen sollte, dass das nicht funktionieren könne, weil der Scriptpfad in den Dateien falsch angegeben sei, so ist das seltsamer Weise nicht so; weil dieser, außer in der Datei cache/data_global.php, in keiner Datei angegeben ist; sondern dass sich das System den Namen des Ordners aus den bereits vorhandenen Datenbanktabellen über >[Präfix_]config - 'script_path'< holt.
Auch die Datei im Cache cache/data_global.php macht dabei kein Problem, denn die holt sich nach einer Cache-Löschung über das ACP, den Namen des Ordnernamen unmittelbar nach dem ersten Aufruf auch aus der Datenbank. Das Problem ist nur, dass es sich dabei um den alten Ordnernamen der kopierten Installation handelt. Dasselbe Problem hat man aber auch, wenn man ein System ein zweites mal normal (in einen weiteren Ordner) installiert.
Seltsamer Weise schadet das aber überhaupt nicht, was ich mir überhaupt nicht erklären kann; denn eigentlich müsste man in der Datenbank eine weitere Tabellenspalte anlegen und in den Dateien alle Verweise auch entsprechend ändern. Also überall 'script_path' durch den neu gewählten Namen ersetzen, bspw. 'script_path_1', falls man die neue Tabellenspalte in der Datenbank so benennen würde. Der Name 'script_path' ist übrigens in diesen Dateien vorhanden:
common.php
adm/index.php
cache/data_global.php
includes/functions.php
includes/functions_convert.php
includes/functions_transfer.php
includes/message_parser.php
includes/session.php
includes/acp/acp_board.php
Und dann gibt es noch ein zweites Problem, nämlich dass das Board nicht über Konfigurationsdateien konfiguriert wird, sondern über die Datenbank in der Tabelle >[Präfix_]config - posts_per_page<. Jede Veränderung der Einstellung für die Anzahl der Beiträge in einem Board würde früher oder später auch im anderen wirksam werden, weil die diesbezügliche Einstellung aus der Datenbank abgerufen wird. Bspw. beim UNB erfolgt die Einstellung der Anzahl der Seite über Konfigurationsdateien, wie ich das schon schrieb. Aber um eine Veränderung der Anzahl der Beiträge beim phpBB3 in nur einem System zu realisieren, geht man so vor:
In der Datenbank in dieser Tabelle >[Präfix_]config< eine zweite Spalte posts_per_page_1 eröffnen. Dazu klickt man links auf >[Präfix_]config<! (Präfix_ ist der bei der Installation gewählte Präfix, bspw. 1_ oder phpbb3_) Dann rechts oben auf Einfügen! Unter >config_name< gibt man posts_per_page_1 an. Unter >config_value< die Anzahl der Beiträge je Threadseite, also 1. Unter >is_dynamic< gibt man 0 an. Ich weiß zwar nicht warum, ich weiß nur, dass das bei der Tabellenspalte >posts_per_page< auch angegeben ist, wie man sieht, wenn man oben auf Anzeigen klickt und dann die Seite 6 auswählt.
Ich weiß nicht, warum ich nach jedem Einfügeversuch eine Fehlermeldung hatte; jedenfalls stellte sich dann heraus, dass schon der erste Versuch glückte, ohne dass ich das sofort bemerkte. Die hinzugefügte Tabellenspalte war als letzte auf Seite 8 vorhanden, wie ich dann später bemerkte.
Das Forensystem, dass einen Beitrag je Threadseite anzeigen soll, muss nun so modifiziert werden, dass man in sämtlichen Dateien 'posts_per_page' durch 'posts_per_page_1' ersetzt. Möglicherweise wäre das aber gar nicht so gut, weil dann auch bspw. bei den Suchergebnissen und auch im Formular für den neuen Beitrag nur ein Beitrag je Threadseite angezeigt werden würde.
Deswegen habe ich mich, als jemand, der sich mit PHP leider noch nicht auskennt, nur so vom Gefühl her für die Datei viewtopic.php (Viewtopic = Anzeigen-Beitrag) entschieden und dort alle Ersetzungen vorgenommen. Der Test zeigte, dass alles anscheinend einwandfrei so funktioniert, wie ich es haben wollte. Für Hinweise, dass man was besser anders machen sollte, bin ich natürlich dankbar.
Und auf diese Weise verfährt man, wenn man noch weitere Installationen hinzufügen möchte; bspw. eine, die 100 Beiträge je Seite anzeigen soll. Die hinzuzufügendede Datenbankzeile wäre dann 'posts_per_page_100', oder so. Eine Installation kann man so lassen, wie sie ist. Über den Adminbereich stellt man für diese wie gewohnt ein, wie viele Beiträge je Threadseite angezeigt werden sollen.
Dabei ist es egal, aus welcher Installation heraus man die Adminzentrale aufruft, es wird in jedem Fall in dieselbe Datenbankzeile eingetregen, nämlich in 'post_per_page'. Durch die Änderungen der jeweiligen Dateien viewtopic.php hat diese Einstellung dann aber in den anderen Installationen bei der Anzeige der Threads keinen Einfluss mehr. Von diesen Installationen kann man dann aber nur noch diese Anzahl durch entsprechende Änderungen in der Datenbank einstellen.
Die Variable 'posts_per_page' ist übrigens auch in diesen Dateien enthalten:
search.php
cache/data_global.php (gegebenenfalls)
includes/functions_display.php
includes/functions_posting.php
includes/mcp/mcp_notes.php
includes/ mcp mcp_post.php
includes/ mcp/mcp_topic.php
includes/acp/acp_board.php
includes/acp/acp_users.php
Zweckmäßigerweise sollte man die Ordner so benennen, wie viele Beiträge je Threadseite angezeigt werden sollen. Also ein Ordner sollte 1 heißen und der andere bspw. 10 oder 100; also je nach eingestellter Anzahl der Beiträge je Threadseite.
Praktisch wäre es vielleicht, wenn man das System so abändern könnte, dass in dem System, das bspw. auf 10 Beiträge je Threadseite eingestellt wäre, der Link zu dem Beitrag zu dem System führt, das mit einem Beitrag je Threadseite eingestellt ist. Wie schon weiter oben erwähnt, sehe ich momentan überhaupt keine Möglichkeit das zu ändern, weil in jedem System der Name des Ordners, in dem das System installiert wurde, aus der Datenbank abgerufen wird.
Und dort ist der Ordnername von der Installation angegeben, das man als erstes normal installierte, von dessen Installation man die Datenbanktabellen hinterher nicht löschte. Aber vielleicht kann ja ein phpBB-Experte hierzu was sagen. Übrigens wird die Option "Board deaktivieren" nicht in der Datenbank gespeichert. Gegebenenfalls müsste man diese Einstellung jeweils bei beiden Installationen tätigen.