Hilfe bei module erstellung

  • Guten Morgen,


    ich bin neu im Umgang mit joomla, wollte mir ein kleines Modul erstellen und ich weiß nicht wo ich anfangen soll.

    Mit dem Module wollte ich eine config.cfg Datei erstellen für z.B Call of Duty.

    Aber ich weiß nicht wie ich die Formulardaten in der .cfg Datei übergeben soll.

    Würde mir da jemand behilflich sein?

    Zur Erklärung:

    Das Modul sollte formfields beinhalten die der User nach seine Wünschen beschreibt z.B da ist ein field mit denn Name "Hostname:" wenn der User das speichert, sollte denn in der .cfg Datei stehen .

    sets sv_hostname "Eingabe des users"

    Und gut wäre noch wenn die config.cfg noch mit der User id benannt wird also z.B UserID-config.cfg

    Könnte mir jemand Ratschläge geben wie ich da anfangen könnte bzw mich informieren konnte wie ich das programmiere?

  • Hast Du unter Joomla schon einmal Module erstellt?
    Ansonsten findest Du hier (https://docs.joomla.org/J3.x:Creating_a_simple_module/de) eine Anleitung für die Erstellung eines einfachen Modul. Ansonsten gibt es im Netzt auch zahlreiche Videos oder auch gute Bücher darüber.

    Wenn ich es richtig gesehen habe, dann wird die config.cfg einfach mit Texteditor erstellt und das kannst Du mit PHP machen. Die Ausgabe wie in einem normalen Textfile schreiben und als config.cfg speichern.

    Wenn man die Lösung hat, dann muss man nur noch das passende Problem finden.

  • Ja ich habe genau das Modul geschrieben was du verlinkt hast, mir ist nur nicht klar wie ich die Form fields da einfügen muss sprich in welcher datei


    In php habe ich das alles mit einer php Datei wo die forms drin sind per Post an eine andere php Datei geschickt und die config.cfg mit fopen geschrieben

    Das hat alles wunderbar geklappt nur weiß ich nicht wie ich das als Modul in joomla integrieren soll

    Denn php Code kann ich ja mal nachher posten wenn ich zuhause bin, bin gerade noch auf Arbeit

  • Hier der Code von der index.php


    Code
    <form action="test.php" method="post">
        hostname: <input type="text" name="sv_hostname" /><br />
    <input type="submit" value="Speichern" />
    </form>

    und hier der Code von der test.php

    PHP
    <?php
    $hostname = $_POST['sv_hostname'];
    $handle = fopen ("config.cfg", "w");
    fwrite ($handle, "sets sv_hostname \"$hostname\"\n"
    ");
    fclose ($handle);
    ?>


    Soweit klappt alles, aber ich weiß nicht wie ich das in Joomla hinzufüge, also was ich in welcher Datei schreiben soll.

  • Auch wenn der Code funktionieren würde, solltest Du schauen, dass Du Dich mehr an die Klassen und Funktionen von Joomla orientierst. Nur so kannst Du auch sicherstellen, dass es kompatibel ist und sich besser in Joomla integrieren lässt. Zusätzlich natürlich auch auf Grund der Sicherheit.

    Wenn Du noch nie ein Modul gebaut hast, dann schau Dir doch mal bestehende Module an, wie die gebaut sind. Daran kann man vieles ableiten. Ganz besonders Wichtig ist vor allem in jeder PHP-Datei das:


    Code
    defined('_JEXEC') or die;


    Das Form kommt in die default.php welche sich im Verzeichnis tmpl befindet. Das ist die Außendarstellung des Modul und könnte so aussehen:

    Wenn das Formular abgesendet wird, dann wird das an Deine Modul-Datei z.B. mod_configmodul.php gesendet, wenn Dein Modul sich in diesem Fall Configmodul nennt. Darin kannst Du die Formular-Anfragen abfangen wie z.B.


    PHP
    <?php
    $app = JFactory::getApplication();
    
    if($app->input->get('submit_config') == 'submit'){
        $hostname = trim($app->input->get('hostname', '', 'string'));
    
        if (JFile::write($path.'/config.cfg', $hostname )){
            //file is saved
        }
    }

    Das ist jetzt sehr stark eingekürzt und nicht das komplette Modul / Script. Es soll nur veranschaulichen, dass es viele fertige Klassen gibt, die man nutzen kann und auch sollte.

    Weitere Prüfungen, wie z.B. den Token usw, sollten dabei natürlich noch erfolgen. Auch das was über das Formular mitgegeben wird sollte auch gültigkeit geprüft werden. Ansonsten kann man sich schnell Schadecode einfangen.

    Wenn man die Lösung hat, dann muss man nur noch das passende Problem finden.