Seite 1 von 1

Für Gäste nur Preview des Beitrags

Verfasst: 20.06.2015 12:59
von Labberie1
Hallo,

ich möchte in meinem Board einbauen, dass Gäste in bestimmten Foren die Themen sehen, aber vom Beitrag nur eine Preview, also die ersten xxx Zeichen (z.B. 200) eines jeden Beitrags lesen können. Ist der Beitragstext länger als xxx Zeichen, soll der restliche Beitragstext nicht sichtbar sein, sondern ein Text Login oder Registrieren (jeweils anklickbar um auf die Login- oder Registrierseite zu gelangen) an die Preview angehängt werden.

Ansatz für die Realisierung ist sicher die viewtopic.php. Dort müsste ich sicher prüfen, ob der User eingeloggt ist, oder es sich um einen Gast (oder Bot) handelt.

Leider kenne ich mich mit phpbb noch nicht genug aus, um zu erkennen, wo und wie ich anschließend die Ausgabe des Beitrags bei Gästen entsprechend limitieren kann. Ich erwarte selbstverständlich keine fertige Lösung, sondern wäre für Hinweise dankbar, die mir weiterhelfen.

Grüße

Re: Für Gäste nur Preview des Beitrags

Verfasst: 20.06.2015 15:03
von gn#36
$user->data['is_registered'] und $user->data['is_bot'] sagen dir ob der User angemeldet ist und ob es ein Bot ist. Ausgaben erfolgen mit dem Template System: KB:template_syntax KB:template_system Du suchst nach einer Schleifenausgabe für postrow.

Allerdings dürftest du - sofern du mit phpBB 3.1 arbeitest, auch ohne Probleme mit einer Extension arbeiten können: https://area51.phpbb.com/docs/dev/31x/ https://wiki.phpbb.com/Event_List Das Event core.viewtopic_modify_post_data dürfte genügen.

Re: Für Gäste nur Preview des Beitrags

Verfasst: 21.06.2015 22:58
von Labberie1
Vielen Dank für den Hinweis zur Nutzung einer Extension. Das war für mich zunächst mal Neuland; inzwischen habe ich mich aber mal ein bisschen eingelesen und das Grundprinzip verstanden.

Allerdings gelingt es mir nicht mit dem Event

Code: Alles auswählen

core.viewtopic_modify_post_data
an den Text (Arguments: rowset ??) zu gelangen, um ihn dann zu modifizieren.

Probehalber (um zu sehen, ob die erste von mir erstellte Extension überhaupt von der Funktionsweise richtig ist) habe ich mal mit

Code: Alles auswählen

core.modify_text_for_display_before
(Arguments: text) experimentiert. Das funktioniert auch soweit, dass der Text wie gewünscht gekürzt wird, allerdings nicht nur in den Beiträgen, sondern generell (also z.B. auch beim beschreibenden Text der jeweiligen Foren).

Würde mich daher über einen zusätzlichen Hinweis oder Tipp zu core.viewtopic_modify_post_data in Verbindung mit rowset freuen, der einem Anfänger auf die Sprünge hilft. :oops:

Re: Für Gäste nur Preview des Beitrags

Verfasst: 22.06.2015 14:45
von gn#36
Eventuell ist es etwas verwirrend, dass $event kein Array ist, sondern ein Objekt. Hierdurch funktioniert ein Zugriff

Code: Alles auswählen

$event['rowset'][$id]['xyz'] = 'abc';
nicht so wie erwartet.

Du musst stattdessen sowas machen:

Code: Alles auswählen

$rowset = $event['rowset'];
$rowset[$id]['xyz'] = 'abc';
$event['rowset'] = $rowset;
Ansonsten ist das denke ich halbwegs selbsterklärend - du musst das rowset Array in einer Schleife durchlaufen und alle Texte kürzen, die in $rowset[$id]['post_text'] stehen sollten. Das kürzt dann nur in der viewtopic und nirgendwo sonst. Pass aber auf, dass du nicht die BBcodes zerstörst. Zu dem Zeitpunkt ist generate_text_for_display da noch nicht drüber gelaufen.

Re: Für Gäste nur Preview des Beitrags

Verfasst: 28.06.2015 16:58
von Unimatrix_0
gn#36 hat geschrieben: Pass aber auf, dass du nicht die BBcodes zerstörst. Zu dem Zeitpunkt ist generate_text_for_display da noch nicht drüber gelaufen.
https://github.com/nickv-phpbb/phpbb-tool-trimmessage kann beim Kürzen Wunder bewegen ...