MyBB.de Forum

Normale Version: [Gelöst][PlugIn erstellt]Bestimmte Foren nicht auf der Startseite anzeigen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo,

ist es möglich, das man bestimmte Foren nicht auf der Startseite anzeigt?
Ich möchte nämlich gerne, das über eine andere Seite genau diese Kategorie mit einem anderen Design ausgestattet wird UND nicht auf der normalen Index Seite zu sehen ist. Es soll also, den geringen Anschein haben, als wäre es ein anderes Forum, da man nur über diese Seite auf das Forum zugreifen kann.

Wie müsste man den Code anpassen?
Könnte man das in ein Plug-In packen, damit man für ein Forum direkt in den Einstellungen auswählen kann ob es auf der Index-Seite sichtbar ist oder nicht?
Versuchs mal so: Öffne die Datei index.php und suche nach:
PHP-Code:
$query $db->simple_select(TABLE_PREFIX."forums""*""active != 'no'", array('order_by' => 'pid, disporder')); 
Ersetzen durch:
PHP-Code:
$query $db->simple_select(TABLE_PREFIX."forums""*""active != 'no' AND fid NOT IN (x,y,z)", array('order_by' => 'pid, disporder')); 
Ersetze x,y,z durch die IDs der Foren, die nicht gezeigt werden sollen.
Gibt es nicht auch die Möglichkeit, das über ein Plug-In zu machen, und in die Foreneinstellungen zu schreiben?
Wie müsste so ein Plug-In sein? Welcher Hook müsste benutzt werden?
Das ist leider nicht so einfach möglich, ohne Codeänderungen geht das nicht.
Schade, werde es dann einfach mal auf die Wunschliste setzen.
Okay, hab mich jetzt mal an PlugIns getraut.
Mein Ergebnis hat nur noch einen kleinen Fehler:
Es klappt nicht.

Hier die Funktion des PlugIns
PHP-Code:
function hideonindex() {
// Gobale Variablen
global $mybb$forum;

// Hier alle Funktionen!
#echo '<pre>Forum ';
#print_r($GLOBALS["forum"]);
#print_r($forum);
#echo '</pre><hr />';
$hideonindex['cat_id'] = explode(",",$mybb->settings['hide_cat']);
#echo '<pre>Hide Ids ';
#print_r($hideonindex['cat_id']);
#echo '</pre><hr />';
if (in_array($forum['fid'], $hideonindex['cat_id']))
#if($forum['fid'] == '1')
{
    
$forum = array();
#echo '<pre>verstecken</pre><hr />';
}


Wenn ich den selben Code jedoch direkt an der Stelle in die /inc/functions_forumlist.php einfüge geht es. Es liegt also scheinbar am Array $forum.
Dieses kann ich in meiner Funktion nicht nutzten, benötige es jedoch unbedingt.
Wie kann ich es dort hineinbekommen? Es muss ja bei Bedarf geleert werde.

Anbei einfach mal das ganze PlugIn.
Soll die Funktion nicht etwas zurückgeben (in der Regel per return)?
Nein, eigentlich braucht sie keinen Rückgabe Wert.
Sie soll eigentlich nur das Array $forum leeren.
Trotzdem muss dann das leere Array wieder übergeben werden, denn so bleibt es ja in der Funktion (wenn ich dich richtig verstanden habe).
Wie würde das dann aussehen?
Einfach
PHP-Code:
$forum = array();
return 
$forum
Seiten: 1 2