Problem
In phpBB3.0.x ist es standardmäßig nicht möglich, das Board über die Rechtevergabe so einzustellen, dass Gäste zwar ein (oder mehrere - oder alle) Themen sehen können, sich aber zum lesen im Board anmelden müssen.
Also Quasi eine Anreizfunktion um Gäste zum anmelden im Board zu bewegen.
Lösung
Vergib das Forenrecht, kann Forum sehen und kann Forum lesen, für Gäste (im entsprechenden Forum) und mache folgendes:
Öffne viewtopic.php
Suche nach
Code: Alles auswählen
$sort_dir = request_var('sd', $default_sort_dir);
Code: Alles auswählen
if ((!$user->data['is_registered'] && $forum_id == xxx) || ($user->data['is_bot'] && $forum_id == xxx))
{
trigger_error('NOT_AUTHORISED');
}
xxx muss mit der Foren ID des Forums ersetzt werden, dessen Überschrift der Gast und der Bot lesen können soll.
Möchte man den Bots das lesen der Beiträge erlauben (damit die Beiträge auch in den Suchmaschinen gelistet werden), sollte man den Teil mit den Bots einfach aus dem Code heraus nehmen (und natürlich den Bots das lesen der Beiträge, über die Rechtevergabe erlauben)
Code: Alles auswählen
|| ($user->data['is_bot'] && $forum_id == xxx)
Mit
Code: Alles auswählen
login_box('', $user->lang['LOGIN_INFO']);
Möchte man dem geneigten Besucher (Gast) nun auch noch eine entsprechende Information, in der Login-Box, anzeigen lassen, dann ändert man den Code von
Code: Alles auswählen
login_box('', $user->lang['LOGIN_INFO']);
Code: Alles auswählen
{
// Setup user environment so we can process lang string
$user->setup('viewtopic');
login_box('', $user->lang['LOGIN_VIEWTOPIC']);
}
Du musst registriert und angemeldet sein, um dieses Thema anzusehen. in der Login-Box.
Für mehrere Foren, würde der Code dann übrigens so aussehen
Code: Alles auswählen
if ((!$user->data['is_registered'] && $forum_id == xx || $forum_id == xx))
{
// Setup user environment so we can process lang string
$user->setup('viewtopic');
login_box('', $user->lang['LOGIN_VIEWTOPIC']);
}
Möchte man das ganze nun für ALLE Foren umsetzen, dann sollte man einfach den folgenden Code heraus nehmen
Code: Alles auswählen
&& $forum_id == xx || $forum_id == xx
Code: Alles auswählen
if (!$user->data['is_registered'] )
{
// Setup user environment so we can process lang string
$user->setup('viewtopic');
login_box('', $user->lang['LOGIN_VIEWTOPIC']);
}
YY = Forum-Id, die NICHT gesperrt werden soll (Beispiel für 2 foren)
Code: Alles auswählen
if ((!$user->data['is_registered'] && ($forum_id != YY || $forum_id != YY)))
{
// Setup user environment so we can process lang string
$user->setup('viewtopic');
login_box('', $user->lang['LOGIN_VIEWTOPIC']);
}
Grüße: Mahony