Hallo,
ich würde gerne den mod_Welcome_Message1.0 erweitern.
Allerdings weiß ich nicht wie.
es geht darum, je nach Benutzergruppen eine andere Nachricht anzuzeigen.
Den Code kann ich soweit auch. Auch das Plugin kann ich teilweise mit nutzen.
Ich würde aber im gleichen Zug gerne lernen wie ich ein Plugin schreiben kann. Ich suche also jemanden, der mit mir zusammen Schritt für Schritt durchgeht und mit zeigt wie man aus einem Code ein Plugin baut.
Danke schonmal
Jan
Hallo Jan,
Falls du deine Erweiterung zum Download anbieten möchtest, so solltest du vorher den Autor dieser Mod fragen, ob du den Code verwenden darfst.
Es ist sehr ärgerlich und unschön, wenn einem der Code geklaut wird.
Ich bin mir nicht sicher unter welche Lizens die für MyBB geschriebene Module und Add Ons fallen. ... Auf jeden Fall bitte vorher den Autoren bei der Verwendung seines Codes fragen.
Die Erstellung eines Plugins ist recht einfach.
Das erklären ist daher kein größeres Problem und ich werde dir gern helfen.
Mfg Garlant
Okay,
ja ich hätte auch gefragt. Aber wenn mir keiner geholfen hätte hätte ich nicht fragen brauchen, da ich es sonst in den Sand gesetzt hätte.
Ich habe mir aber überlegt, den Mod neu/um zu schreiben. Und erstma n ur um den MOD/Plugin-Bau zu verstehen.
Als erstes möchte ich mit einer neuen Tabelle Arbeiten. Ich weiß es wird ein total vermurkstes Plugin, aber es geht nur um den Lerneffekt.
Es wird also beim Aktivieren des Plugins eine neue Tabelle erstellt.
PHP-Code:
CREATE TABLE `welcome` (
`id` INT AUTO_INCREMENT ,
`gruppe` TEXT NOT NULL ,
`text` LONGBLOB NOT NULL,
PRIMARY KEY ( `id` )
) TYPE = MYISAM ;
So, das kommt nun im Plugin hier hin oder?
PHP-Code:
function noreplytoownpost_activate() {
$query = $db->query( 'CREATE TABLE `welcome` ('
. ' `id` INT AUTO_INCREMENT ,'
. ' `gruppe` TEXT NOT NULL ,'
. ' `text` LONGBLOB NOT NULL,'
. ' PRIMARY KEY ( `id` )'
. ' ) TYPE = MYISAM '; )
Ja dies kommt so hin wie du es geschrieben hast.
Dennoch würde ich dies anders schreiben, da es so unübersichtlich ist.
PHP-Code:
function noreplytoownpost_activate()
{
$newtable = "CREATE TABLE `welcome` (
`id` INT AUTO_INCREMENT,
`gruppe` TEXT NOT NULL,
`text` LONGBLOB NOT NULL,
PRIMARY KEY (`id`)
)";
$db->query($newtable);
}
Qkay. Danke.
jetzt kommt die Wahl des Hooks:
Welchen Hook brauch ich dafür? Bitte nicht nur sagen welchen, sondern auch wie ich rausfinde welchen jeweils ich brauch.
Jan
Dies kommt darauf an für was du das brauchst.
Es sind nicht immer Hooks notwendig um ein Modul zu installieren.
Bisher habe ich auch nie wirklich Hooks genutzt oder gebraucht. Daher möchte ich dazu nichts ungenaues sagen.
Soweit ich das sehe, würde dein Mod sicher an folgenden Hook gehören: "private_do_send_process"
In diesem Hook wird die Nachricht versendet.
Okay,
jetzt kommt der Nachste Teil:
Wie ändere ich das template? Ich brauche jetzt oben über dem Panel eine BOX.
Code:
<table align="center"><tr><td width="40%">$welcome</td></tr></table>
Sollte ca da hin wo jetzt
Code:
</table>
</div>
<hr class="hidden" />
<div id="panel">
steht. Also dann
Code:
</table>
<table align="center"><tr><td width="40%">$welcome</td></tr></table>
</div>
<hr class="hidden" />
<div id="panel">
Wie schreib ich das ins Template?
Wie das geht steht im
Tutorial unter Punkt 3.1.
Also dann so
PHP-Code:
require "./inc/adminfunctions_templates.php";
find_replace_templatesets("index", '#</table>\n\n
</div>\n
<hr class="hidden" />\n
<div id="panel">#', "</table>\n<table align="center"><tr><td width="40%">$welcome</td></tr></table>\n
</div>\n
<hr class="hidden" />\n
<div id="panel">");
Jan schrieb:Also dann so
PHP-Code:
require "./inc/adminfunctions_templates.php";
find_replace_templatesets("index", '#</table>\n\n
</div>\n
<hr class="hidden" />\n
<div id="panel">#', "</table>\n<table align="center"><tr><td width="40%">$welcome</td></tr></table>\n
</div>\n
<hr class="hidden" />\n
<div id="panel">");
Nein das ist vollkommen falsch.
Beim aktivieren des plugins würdest du eine SQL-Fehlermeldung erhalten, da der xml Code im sqlquery anders interpretiert wird.
hier musst du vor jedes Gänsefüßchen(") ein Backslash (\) setzen. das ganze sieht dann so aus:
Auch vor Variablen musst du ein Backslash setzen.
PHP-Code:
require "./inc/adminfunctions_templates.php";
find_replace_templatesets("index", '#</table>\n\n</div>\n<hr class=\"hidden\" />\n<div id=\"panel\">#', "</table>\n<table align=\"center\"><tr><td width=\"40%\">\$welcome</td></tr></table>\n</div>\n<hr class=\"hidden\" />\n<div id=\"panel\">");