Hallo,
gibt es die Möglichkeit für Gäste die Threads zwar aufmachen zu können, jedoch nicht den ganzen Thread lesen zu können, sondern nur eine max. Anzahl von Zeichen im Eingangs thread zu lesen.
So wie im Pro Portal mit den Ankündigungen nur ohne [mehr lesen] ?
VG
Carsten
Hallo,
Evtl. gibt es ein Plugin dazu.
Ansonsten, mal so ins Blaue überlegt, könnte man in der showthread.php für den Gast entweder nur den ersten Beitrag laden oder, falls der Thread an der Stelle bereits geladen ist, den Rest aus dem Array entfernen.
Die Anzahl der Zeichen, bekommst Du leicht mit substr() gelöst.
Wäre gedanklich mein erster Ansatz. Wo es da noch Komplikationen gibt, kann ich Dir adhoc nicht sagen.
Aber ich denke in die Richtung müsste was möglich sein.
Gruß Arne
Plugin wäre natürlich die eleganteste Lösung, aber wo und nach was muß ich da suchen?
Proggen bekomme ich leider noch nicht so hin, einfache Sachen gehen aber wenn dann schon ein Fehler kommt steh ich komplett auf dem Schlauch.
Wonach Du für ein Plugin suchen musst, wüsste ich auch grad nicht, aber das könnten Dir die MyBB-Spezies sicher sagen, nehme ich mal an. Vielleicht weiß sogar jemand eines.
Beim selber entwickeln könnte ich Dir unter die Arme greifen, sollte nicht groß schwierig sein.
Kannst ja erstmal schauen, ob Du ein Plugin findest, sonst sagst mir einfach Bescheid bei Interesse.
Gruß
Arne
ich habe ein Plugin, in dem man nur die Threadüberschriften lesen kann als Gast, kann man das da eventuell einbauen?
Hier mal der Code des Plugins:
<?php
$plugins->add_hook('showthread_start', 'gcvt_thread');
$plugins->add_hook('archive_thread_start', 'gcvt_thread');
function gcvt_info()
{
return array(
'name' => 'Guests Can\'t View Threads',
'description' => 'Guests cannot view threads.',
'website' => 'http://mybbplug.in/',
'author' => 'Jammerx2',
'authorsite' => 'http://mybbplug.in/',
'version' => '1.1',
'guid' => '8ac34edb831b6a420c48602ed5384b59'
);
}
function gcvt_activate()
{
}
function gcvt_deactivate()
{
}
function gcvt_thread()
{
global $db, $mybb,$lang, $thread;
if($mybb->user['uid'] == 0)
{
error("Registriere Dich um das Thema zu lesen","Du bist Gast");
}
$lang->send_thread = "";
}
?>
Cool, das laß ich genau so wie es ist.
Vielen Dank
Ok, nur der Vollständigkeit halber, um für Gäste nur den ersten Beitrag sichtbar zu machen, passt Du einfach die Query in der showthread.php an.
In diesem Block:
PHP-Code:
// Get the actual posts from the database here.
$posts = '';
$query = $db->query("
SELECT u.*, u.username AS userusername, p.*, f.*, eu.username AS editusername
FROM ".TABLE_PREFIX."posts p
LEFT JOIN ".TABLE_PREFIX."users u ON (u.uid=p.uid)
LEFT JOIN ".TABLE_PREFIX."userfields f ON (f.ufid=u.uid)
LEFT JOIN ".TABLE_PREFIX."users eu ON (eu.uid=p.edituid)
WHERE $pids
ORDER BY p.dateline
");
Setzt Du als erstes, direkt nach dem Kommentar diese Zeilen ein:
PHP-Code:
if ( (integer)$mybb->user['uid'] === 0 ) {
$pids = 'p.replyto=0 AND p.tid=' . $tid;
}
Dadurch lädt er nur den ersten Beitrag.
Jetzt kannst Du noch hergehen, und bspw. die Anzahl der Zeichen mit substr() begrenzen, oder was auch immer.
Gruß
Arne
Hilfe könntest Du mir noch zeigen wie ich substr() genau einsetze wenn ich sagen wir mal 100 Zeichen haben möchte?
Hallo,
Je nachdem, wie Du den Text vorliegen hast.
Willst Du das in PHP machen, musst Du an der entsprechenden Stelle so was setzen:
PHP-Code:
$post['message'] = substr( $post['message'], 0, 100 );
Ich persönlich würde allerdings die Query anpassen
( da ich eh kein Verständnis für * in Queries habe ) und die benötigten Spalten im Select aufzählen.
Dann kann nämlich MySQL das auch, bspw. so:
Code:
SELECT p.pid, SUBSTRING(p.message, 1, 100) AS message FROM posts p
( Beispiel-Query )
Dann brauchst Du PHP nicht damit "belasten".
Gruß Arne