Hallo, Gast! (Registrieren)

Letzte Ankündigung: MyBB 1.8.8 veröffentlicht (17.10.16)


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste
Plugin Einstellungen Feature
#1
Hi

Ich wollte fragen, ob es möglich ist in Plugins Einstellugen so anzulegen, dass sie von einer anderen Einstellung abhängig sind.

Das beste Beispiel wäre hierfür die Einstellung "Forum Online/Offline nehmen"

Wenn ich die Einstellung so anklicke, dass es Offline ist, dann erscheint plötzlich die Textbox für den Offline-Grund.

Wurde das nur für diese Einstellung programmiert oder habe auhc ich die Möglichkeit soetwas für meine Plugins zu programmieren?!

MfG Megaleecher
Höre nie auf besser zu werden, weil dann hast du aufgehört gut zu sein.
Zitieren
#2
Hallöchen.

Dazu musst Du im Plugin eine Einstellungs-Gruppe und die jeweiligen Einstellungen hinzufügen. Danach kannst Du die Einstellungen auslesen und verwenden:

Einstellungsgruppe hinzufügen:

Code:
// Einstellungsgruppe hinzufügen
    $NAME123, DARF NOCH NICHT VORHANDEN SEIN = array(
        "gid" => "NULL",
        "name" => "",
        "title" => "",
        "description" => "",
        "disporder" => "1",
        "isdefault" => "no",
        );
    $db->insert_query("settinggroups", $NAME123 VON OBEN);
    $gid = $db->insert_id();

Einstellung in die Gruppe einfügen:

Code:
// Einstellungen hinzufügen
    $NAME123 = array(
        "sid" => "NULL",
        "name" => "",
        "title" => "",
        "description" => "",
        "optionscode" => "",
        "value" => "1",
        "disporder" => "1",
        "gid" => intval($gid),
        );
    $db->insert_query("settings", $NAME123 VON OBEN EINFÜGEN);

Bitte danach die settings.php neu laden:

Code:
rebuild_settings();

Bei dem "optionscode" gibt es verschieden. Als Beispiel:
yesno = ja oder nein Auswahl
text = text einfügen

Nun kannst Du die Einstellungen nutzen und wie folgt ausgeben oder durch Funktionen überprüfen:

Code:
$mybb->settings['NAME DER EINSTELLUNG']

Einstellungs-Gruppe löschen:

Code:
$query = $db->query("SELECT gid FROM ".TABLE_PREFIX."settinggroups WHERE name='NAME DER GRUPPE'");
$g = $db->fetch_array($query);
$db->query("DELETE FROM ".TABLE_PREFIX."settinggroups WHERE gid='".$g['gid']."'");

Einstellungen löschen:

Code:
$db->query("DELETE FROM ".TABLE_PREFIX."settings WHERE gid='".$g['gid']."'");

Ebenfalls die settings.php neu laden.
Bitte die Suche u. die Doku nutzen.
______________________________

mfg Murphy
Zitieren
#3
Danke für deine mühe, das hab ich aber schon alles gewusst Wink

Aber ich würde gerne Einstellungen verstecken und nur dann sichtbar machen, wenn eine bestimmte vorbedingung erfüllt ist.

Wie eben bei der Forum online/offline Einstellung.

MfG Megaleecher
Höre nie auf besser zu werden, weil dann hast du aufgehört gut zu sein.
Zitieren
#4
Dazu legst Du eine Einstellung mit yesno u. eine Einstellung in dem ein Text eingefügt werden kann. Danach fragst Du die yesno Einstellung mit einer if-Abfrage ab, wenn die Einstellung aktiv ist (der Wert "1" vorhanden ist), wird die Variable im Template geladen und die Text-Einstellung ausgegeben:

Code:
if($mybb->settings['NAME DER YESNO-EINSTELLUNG'] == "1") {        
                $VARIABLE IM TEMPLATE = $mybb->settings['NAME DER TEXT-EINSTELLUNG']; }

Als Beispiel, Variable in einem Template einfügen:

Code:
// Variablen in Templates ändern
    require MYBB_ROOT."/inc/adminfunctions_templates.php";
    find_replace_templatesets("index", '#'.preg_quote('{$header}').'#', "{\$header}\n{\$VARIABLE}");

Das ganze musst Du beim Deaktivieren wieder rückgängig machen.
Bitte die Suche u. die Doku nutzen.
______________________________

mfg Murphy
Zitieren
#5
Das heißt ich muss im Admin-Cp template3 herumpfuschen?!

Was auch noch dazukommt, dass ich ja dann den Code ändern müsste am Forum...

Außerdem würde man die neue Einstllung erst nach einem neuladen der Seite wiedersehen.

Gibt es keine Elegante Lösung für diese Aufgabe??

Wie ist es denn bei der Forum Online/Offline Einstellun grealisiert??

MfG Megaleecher
Höre nie auf besser zu werden, weil dann hast du aufgehört gut zu sein.
Zitieren
#6
(28.02.2009, 13:33)Megaleecher schrieb: Das heißt ich muss im Admin-Cp template3 herumpfuschen?!

Was auch noch dazukommt, dass ich ja dann den Code ändern müsste am Forum...

Außerdem würde man die neue Einstllung erst nach einem neuladen der Seite wiedersehen.

Gibt es keine Elegante Lösung für diese Aufgabe??

Wie ist es denn bei der Forum Online/Offline Einstellun grealisiert??

MfG Megaleecher

Du musst an keinem Template herumpfuschen. Das Plugin erledigt die Änderungen beim aktivieren. Du erstellst eine neu Php-Datei, die später in den Plugin Ordner geladen wird.

Siehe dazu:

https://www.mybb.de/doku/sonstiges/infor...ugins.html
http://www.mybbcoder.info/wiki/informati...ugins.html
Bitte die Suche u. die Doku nutzen.
______________________________

mfg Murphy
Zitieren
#7
Ich habe das gefühl das wir aneinander vorbei reden...

Weil du immer irgendwelchen Noobs was erklären tus( musst), denkst du, dass die Standardantoworten ausreichen.

Ich Supporte selber bei diversen Foren und weis wie das ist Wink

Bei mir ist das aber denk ich mal etwas anders...

Schau dir doch mal die Einstellung Forum Online/offline nehmen an, dann weißt du was ich mein...

Wie ich Einstellungen erstelle und Plugins benutze weis ich eh, mir gehts aber nur um die eine einzige Funktion.

Wenn jemand eine bestimmte Einstellung z.B.: auf JA stellt, dann soll ganz plötzlich eine weitere Einstellungsmöglichkeit verfügbar sein, wie auch immer die nun aussieht Wink

MfG Megaleecher
Höre nie auf besser zu werden, weil dann hast du aufgehört gut zu sein.
Zitieren
#8
Dafür ist eine Änderung in der Datei admin/modules/config/settings.php ab Zeile 1363 nötig.

Gruß,
Michael
[Bild: banner.png]
Support erfolgt NUR im Forum!
Bitte gelöste Themen als "erledigt" markieren.
Beiträge mit mangelhafter Rechtschreibung/Grammatik werden kommentarlos gelöscht.
Zitieren
#9
Danke Smile

Mit Ajax hab ich mich noch nciht so beschäftigt, war aber irgendwie eh klar, das das so sein wird :p

MfG Megaleecher
Höre nie auf besser zu werden, weil dann hast du aufgehört gut zu sein.
Zitieren