Diese Seite mit anderen teilen ...

Informationen zum Thema:
Forum:
Phorum.org Hilfe-Forum
Beiträge im Thema:
11
Erster Beitrag:
vor 15 Jahren, 7 Monaten
Letzter Beitrag:
vor 15 Jahren, 7 Monaten
Beteiligte Autoren:
Oliver Riesen, thomas, Reinhard

Forum in mehreren Ordnern anzeigen

Startbeitrag von Oliver Riesen am 16.08.2001 16:00

Hallo,

Phorum erlaubt derzeit nur die Zuordnung eines Forums zu genau einem Ordner. Ich habe nun den Wunsch, ein Forum in mehreren Ordnern anzuzeigen (ohne diese doppelt anzulegen).

Ich stelle mir vor, dass ich dies als zusätzliche Eigenschaft des Forums (unter Edit Properties) angeben kann (z.B. Auswahlbox mit folgenden Einträgen: "Forum in allen Ordner anzeigen", "Forum in allen Unterordnern anzeigen" und "Forum im angegebenen Ordner anzeigen" [bisheriges Verhalten])).

Die Anzeige der Ordner müßte diese neue Eigenschaft dann berücksichtigen.

Hat dies bereits jemand als "Hack" erstellt?

Fragt
Oliver
Langzeittest.de

Antworten:

Hallo Oliver,

dies ist von der bisherigen Technik bei Phorum nicht möglich.
Es gibt in jedem Forumeintrag genau ein Feld für den übergeordneten Folder.
Was Du Dir das vorstellst würde aber mehre Einträge erfordern.
Das wäre nur möglich, wenn man das Verzeichnis komplett von den Einstellungen entkoppelt und eine eigene Tabelle dafür macht.
Vielleicht kann man das einfach mal als Anregung nehmen für spätere Erweiterungen.

Thomas

von thomas - am 16.08.2001 16:07
Hallo Thomas,

Deine Beschreibung ist korrekt, trifft aber nicht ganz meine Idee.

Wenn ich jedes Forum einem oder mehreren beliebigen Ordner zuweisen möchte, wird die Änderung sicherlich aufwendig.

Ich stelle mir aber so eine Art Schalter vor, der mir sagt "diese Forum immer in der Ordnerübersicht einblenden". Dazu brauche ich nur eine zusätzliche Spalte in der bestehenden Tabelle.

Im Skript, welches die Ordnerliste aufbereitet, bräuchte die Datenbankabfrage "nur" etwas angepaßt zu werden. Bisher schränkt sie sicherlich die dargestellten Foren aufgrund des aktuell ausgewählten Ordners ein. Zusätzlich bräuchte die Abfrage nur zu prüfen, ob jener Schalter gesetzt ist.

Damit wäre der erste von mir geschilderte Fall (Forum in allen Ordnern) sicherlich ohne großen Aufwand zu realisieren.

Der zweite Fall, wo ein Forum einem Ordner zugeordnet ist, aber in diesem und allen untergeordneten Ordnern dargestellt werden soll, ist sicherlich analog zu lösen. Dann wird aber der Select gegen die Datenbank etwas aufwendiger.

Was meinst Du?

Fragt
Oliver

von Oliver Riesen - am 16.08.2001 19:50
ok, stimmt der erste Fall wäre gut machbar und der zweite ein wenig aufwendiger ;-).
Ich glaub aber kaum, daß ich die Phorum-Leute von der Sinnhaftigkeit überzeugen könnte, als das es fest eingebaut werden könnte.

von thomas - am 16.08.2001 20:22
Hallo Thomas,

ok, dass sehe ich ein. Dann werde ich mich mal an einem Hack versuchen und diesen dann auch veröffentlichen.

Dennoch ein wenig Argumentationshilfe für die "Phorum-Leute":

In meinem Forum habe ich (bzw. möchte ich zukünftig einrichten) drei Ebenen:

- Toplevel mit Forum "Neuigkeiten" und mehreren Ordnern "Fahrzeughersteller", z.B. Chrysler, Opel, VW

- Zweite Ebene mit einem Forum zu Vertragshändlern und mehreren Ordner zu "Modellen", z.B. Astra, Corsa, Zafira

- Dritte Ebene mit Foren verschiedener Themen zum jeweiligen Modell, z.B. Kaufberatung, Tuning, Technik (dies ist die Einstiegebene, der Besucher kommt also z.B. aus dem Bereich Langzeittest des Opel Zafira in "sein" Diskussionsforum)

In meinem Fall wird aus verschiedenen Bereichen der Homepage auf bestimmte Ordner des Diskussionsforums verwiesen. Die Besucher steigen also nicht auf der obersten Ebene ein. Zudem wechseln sie in der Regel nicht auf die übergeordnete Ebene, sondern bleiben ausschließlich in der Einstiegsebene oder steigen von dort in Unterordner. Im Obigen Beispiel bedeutet dies, dass der Zafirafahrer garnicht "weiß", das es oberhalb noch ein Forum zu Opelhändlern und nochmals darüber ein Forum zu "Neuigkeiten" gibt.

Jetzt könnte ich natürlich im Seitenkopf/-fuß des Forums einen Hinweis auf die ebenfalls wichtigen und interessanten Foren oberhalb geben. Aber ich bin mir sicher, dass dieser Link nicht ausreichend beachtet wird (oder aus Bequemlichkeit nicht so häufig genutzt wird). Komfortabler wäre es da, dass z.B. das Forum "Neuigkeiten" immer in der Ordnerliste aufgeführt wird.

Aber wie bereits gesagt, ich versuche mich an der Änderung und werde diese auch dokumentieren. Vielleicht sagen die Entwickler ja anschließend: "das ist so einfach, dass nehmen wir mit auf..." ;-)

Danke.
Und Tschüs
Oliver

Langzeittest.de


von Oliver Riesen - am 17.08.2001 08:31
klingt schon plausibel.
versuch den hack am besten mit der aktuellen 3.3-version (http://dev.phorum.org/snaps)
dort könnte es möglicherweise noch in die release eingebaut werden.
Ich hab erstmal bei den anderen Entwicklern nachgefragt, mal sehen was die dazu sagen.

Gruß

Thomas

von thomas - am 17.08.2001 08:42

Re: Forum in mehreren Ordnern anzeigen (Hack insid

Hallo Thomas,

ich habe mich zuerst an der Version 3.2.11 versucht, da ich diese im Einsatz habe und mir nicht erst aufwendig ein neues "Testsystem" mit 3.3-rc aufbauen wollte.

Gelöst habe ich den ersten Fall (Forum in allen Ordnern anzeigen).

Um es kurz zu machen: Ich glaube es funktioniert! Zu sehen unter:
< [forum.langzeittest.de] >

Am Wochenende überdenke ich mal den zweiten Fall (Forum in allen Unterordnern anzeigen).

Und Tschüs
Oliver ;-)

Und hier die Anleitung für die Version 3.2.11:

1. Tabelle forums erweitern

In der Tabelle forums (bzw. in der Tabelle, die du in common.php in der Variable $pho_main angegeben hast) muß eine Spalte angehängt werden. Verwende hierzu folgenden SQL-Befehl:

ALTER TABLE forums ADD displayflag SMALLINT (6) DEFAULT '0' not null AFTER allow_uploads


2. Skript /index.php

Suche im Skript folgende Zeile:

$sSQL="Select id, name, table_name, parent, folder, description from ".$pho_main." where active=1 and parent=$f";

und ändere sie in diese Zeile:

$sSQL="Select id, name, table_name, parent, folder, description from ".$pho_main." where active=1 and (parent=$f or displayflag=1)";


3. Skript /admin/pages/new.php

Suche die beiden folgenden Zeilen:


Language:

und füge folgende Zeilen unmittelbar _DAVOR_ ein:


Display option:

>Show forum in each folder




4. Skript /admin/pages/props.php

Suche die beiden folgenden Zeilen:


Language File:

und füge folgende Zeilen unmittelbar _DAVOR_ ein:


Display option:

>Show forum in each folder




5. Skript /admin/index.php

Suche folgende Zeile:

$sSQL="Insert into ".$pho_main." (id, name, active, description, config_suffix, folder, parent, display, table_name, moderation, mod_email, mod_pass, email_list, email_return, email_tag, check_dup, multi_level, collapse, flat, staff_host, lang, html, table_width, table_header_color, table_header_font_color, table_body_color_1, table_body_color_2, table_body_font_color_1, table_body_font_color_2, nav_color, nav_font_color, allow_uploads) values ($id, '$name', 1, '$description', '$config_suffix', $folder, $parent, $display, '$table', '$moderation', '$mod_email', '$mod_pass', '$email_list', '$email_return', '$email_tag', $check_dup, $multi_level, $collapsed, $rflat, '$staff_host', '$lang', '$html', '$table_width', '$table_header_color', '$table_header_font_color', '$table_body_color_1', '$table_body_color_2', '$table_body_font_color_1', '$table_body_font_color_2', '$nav_color', '$nav_font_color','$allow_uploads')";

und ersetze sie durch:

$sSQL="Insert into ".$pho_main." (id, name, active, description, config_suffix, folder, parent, display, table_name, moderation, mod_email, mod_pass, email_list, email_return, email_tag, check_dup, multi_level, collapse, flat, staff_host, lang, html, table_width, table_header_color, table_header_font_color, table_body_color_1, table_body_color_2, table_body_font_color_1, table_body_font_color_2, nav_color, nav_font_color, allow_uploads, displayflag) values ($id, '$name', 1, '$description', '$config_suffix', $folder, $parent, $display, '$table', '$moderation', '$mod_email', '$mod_pass', '$email_list', '$email_return', '$email_tag', $check_dup, $multi_level, $collapsed, $rflat, '$staff_host', '$lang', '$html', '$table_width', '$table_header_color', '$table_header_font_color', '$table_body_color_1', '$table_body_color_2', '$table_body_font_color_1', '$table_body_font_color_2', '$nav_color', '$nav_font_color','$allow_uploads', $check_disp)";

Suche anschließend folgende Zeile:

$sSQL="Update ".$pho_main." set name='$name', description='$description', config_suffix='$config_suffix', parent=$parent, display=$display, moderation='$moderation', mod_email='$mod_email', mod_pass='$mod_pass', email_list='$email_list', email_return='$email_return', email_tag='$email_tag', check_dup=$check_dup, multi_level=$multi_level, collapse=$collapsed, flat=$rflat, staff_host='$staff_host', lang='$lang', html='$html', table_width='$table_width', table_header_color='$table_header_color', table_header_font_color='$table_header_font_color', table_body_color_1='$table_body_color_1', table_body_color_2='$table_body_color_2', table_body_font_color_1='$table_body_font_color_1', table_body_font_color_2='$table_body_font_color_2', nav_color='$nav_color', nav_font_color='$nav_font_color', allow_uploads='$allow_uploads' where id=$num";

und ersetze sie durch:

$sSQL="Update ".$pho_main." set name='$name', description='$description', config_suffix='$config_suffix', parent=$parent, display=$display, moderation='$moderation', mod_email='$mod_email', mod_pass='$mod_pass', email_list='$email_list', email_return='$email_return', email_tag='$email_tag', check_dup=$check_dup, multi_level=$multi_level, collapse=$collapsed, flat=$rflat, staff_host='$staff_host', lang='$lang', html='$html', table_width='$table_width', table_header_color='$table_header_color', table_header_font_color='$table_header_font_color', table_body_color_1='$table_body_color_1', table_body_color_2='$table_body_color_2', table_body_font_color_1='$table_body_font_color_1', table_body_font_color_2='$table_body_font_color_2', nav_color='$nav_color', nav_font_color='$nav_font_color', allow_uploads='$allow_uploads', displayflag=$check_disp where id=$num";

Suche anschließend folgende beiden Zeilen:

$data.=" \$ForumAllowUploads='$rec->allow_uploads';\n";
$data.=" \$ForumTableBodyColor2='$rec->table_body_color_2';\n";

und ersetze sie durch:

$data.=" \$ForumAllowUploads='$rec->allow_uploads';\n";
$data.=" \$ForumCheckDisp='$rec->displayflag';\n";
$data.=" \$ForumTableBodyColor2='$rec->table_body_color_2';\n";

Langzeittest.de


von Oliver Riesen - am 17.08.2001 10:08

Re: Forum in mehreren Ordnern anzeigen (Hack insid

sieht gut aus ...
in 3.3 dürfte das kaum anders aussehen, nur daß die Zeilen vorher und nachher ein wenig anders aussehen, da dort schon mehr Tabellenspalten existieren.

Ok wie gesagt, wenn es Phorum.org mit als sinnvoll erachtet werde ich es mit einbauen in den offiziellen Code, einverstanden?

Thomas

von thomas - am 17.08.2001 10:16

Re: Forum in mehreren Ordnern anzeigen (Hack insid

Hallo Thomas,

ich denke auch, dass sich die Änderungen mit kleinen Anpassungen in 3.3 übernehmen lassen.

Selbstverständlich bin ich damit einverstanden, dass mein Vorschlag in den offiziellen Code übernommen wird. ;-)

Der Fall zwei ist da doch schon eine Ecke komplizierter.

Im Moment sehe ich nur eine einfache Lösung für einen Teil der Aufgabe, nämlich die Anzeige eines Forums zusätzlich in den Unterordnern der nächsten Ebene (aber halt nur in dieser, keine tiefere Verschachtelung). Für meinen Einsatzfall wäre es ausreichend, aber mir ist dies noch nicht universell genug. Mal sehen, ob ich noch eine gute Idee habe...

Und Tschüs
Oliver
Langzeittest.de


von Oliver Riesen - am 17.08.2001 11:17

Vollständige Lösung

Ich habe soeben die vollständige Lösung für meinen Wunsch in das Hackerforum bei phorum.org eingestellt:

[hackers.phorum.org]

Und Tschüs
Oliver
Langzeittest.de


von Oliver Riesen - am 17.08.2001 13:51
Hallo Oliver!

>> Dennoch ein wenig Argumentationshilfe für die "Phorum-Leute":

von Reinhard - am 20.08.2001 07:07
Zur Information:
MySnip.de hat keinen Einfluss auf die Inhalte der Beiträge. Bitte kontaktieren Sie den Administrator des Forums bei Problemen oder Löschforderungen über die Kontaktseite.
Falls die Kontaktaufnahme mit dem Administrator des Forums fehlschlägt, kontaktieren Sie uns bitte über die in unserem Impressum angegebenen Daten.