Beiträge von LukasHH

    Du könntest doch direkt eine Default Ausgabe angeben, welche bei dem Change Event dann überschrieben wird. Entweder direkt in der HTML-Ausgabe eintragen oder über Dein Skript außerhalb des foreach()

    also durch: Zusatz: .site-grid, bleibt unten vor dem (.footer ...) ein weißer Streifen:

    Wenn man nur

    Code
    .hintergrund_marmor {...}

    angibt, dann wird der Hintergrund auf der gesamten Seite (<body>) gesetzt. Da header und footer einen eigenen Hintergrund haben, wird der Hintergrund vom body überdeckt. Mit dem Zusatz ".site-grid" wirkt sich das nur auf den mittleren Teil aus.

    Der weiße Streifen kommt bei der Angabe mit ".site-grid", weil ".footer" einen Außenabstand von oben (margin-top) hat.

    aus irgendeinem Grund werden die Klassen zusammengeschrieben ausgegeben.

    So sollte es passen:

    CSS
    .com-content-article.item-pagehintergrund_marmor {
        background-image: url('/images/Hintergründe/Hintergrundbild_marmor.jpg');
        background-repeat: repeat;
    }

    Habe aber gerade gesehen, dass es an 2 Stellen ausgegeben wird:

    Wenn es oben im Body-Tag bleibt, dann wäre das nachfolgende vielleicht besser geeignet:

    CSS
    .hintergrund_marmor .site-grid {
        background-image: url('/images/Hintergründe/Hintergrundbild_marmor.jpg');
        background-repeat: repeat;
    }

    ob der gewünschte String überhaupt zur Verfügung steht

    Genau das war scheinbar das Problem. Ich habe mir das noch einmal angeschaut und Joomla.Text._() holt sich die Strings aus den Options, wo die natürlich nicht vorhanden waren. Ich habe das jetzt so gemacht, dass die benötigten Strings in der View in die Options geladen werden.

    PHP
    $app->getDocument()->addScriptOptions('joomla.jtext',
        array(
            'JYES' => Text::_('JYES'),
            'JNO' => Text::_('JNO'),
            'COM_USERFILES_USER_FILES_MANAGED_FILE_DELETE' => Text::_('COM_USERFILES_USER_FILES_MANAGED_FILE_DELETE'),
            'COM_USERFILES_USER_FILES_MANAGED_RETURN' => Text::_('COM_USERFILES_USER_FILES_MANAGED_RETURN'),
            'COM_USERFILES_USER_FILES_MANAGED_NEW_FOLDER_TITLE' => Text::_('COM_USERFILES_USER_FILES_MANAGED_NEW_FOLDER_TITLE')
    );
            

    Ich vermute mal dass die Extensions und dabei auch die eigens programmierte Komponente nicht J4 / J5 tauglich sind und erst einmal dafür umgestellt werden müssten.

    Ich bin auch gerade dabei eine eigene Komponente zu bauen und mache die gleich fit für die nächsten Versionen. Dabei hat mit diese Anleitung schon ganz gut geholfen: https://www.techfry.com/resources/how-…oomla-component

    Wenn man sich dabei einige Core-Funktionen anschaut, dann wird sich mit J6 auch nochmal einiges ändern, was mit J4 bereits als depracted deklariert wird und mit J6 aus dem Core verschwindet.

    Hallo zusammen,

    ich baue gerade meine erste Komponente in der ich einiges über javascript realisiere. Nun möchte ich mittels Javascript einige Texte ausgeben, die mittels Language-Strings übersetzbar sein sollen. Ich habe gesehen, dass es innerhalb des Javascript mittels Joomla.Text._() funktionieren soll. Doch leider wird mir die Übersetzung nicht angezeigt.

    Ich habe zum Beispiel in der JS-Datei folgende Code-Zeile eingebaut

    JavaScript
    console.log(Joomla.Text._("JYES"))

    Die Ausgabe lautet dabei: "JYES" und nicht wie erwartet "JA" für Deutsch oder "Yes" für Englisch.

    In der joomla.asset.json habe ich bei Aufruf der Datei mit angegeben:

    JSON
        {
          "name": "com_userfiles.userfiles_upload",
          "type": "script",
          "uri": "com_userfiles/userfiles_upload.js",
          "dependencies": [
            "core"
          ]
        }

    Fehlt hier noch etwas?

    JS-Fehler werden keine angezeigt.

    Ah - habe ich fast übersehen.

    Eine entschiedene Zeile fehlte noch. Das JSON muss natürlich auch registriert werden, sonst findet der WA das nicht:

    PHP
    $wa = Factory::getApplication()->getDocument()->getWebAssetManager();
    $wa->getRegistry()->addRegistryFile('media/mod_ws_test/joomla.asset.json');
    $wa->useStyle('mod_ws_test');
    $wa->useScript('mod_ws_test');

    In der JSON habe ich den Namen einheitlich mit mod_ws_test umbenannt. Du musst da keine unterschiedlichen Namen verwenden.

    Du musst in der XML auch das JSON-File mit angeben.

    in der Modul PHP am Ende kein ?>

    Aus JModuleHelper wird einfach nur ModuleHelper (ohne J)

    Was noch dazu nicht passt, das sind die unterschiedlichen Schreibweisen des Moduls. Mal mit Unterstrich und im Media-Verzeichnis mit Bindestrich. Das passt nicht zusammen. Die Verzeichnisse müssen einheitlich sein und ich würde auf Bindestrich in Dateinamen / Verzeichnisse sowieso verzichten.

    Du musst zuvor ja auch den WebAssetManager aufrufen. $wa gibt es an der Stelle ja noch nicht. Dann sollte das auch unterhalb von den define bzw. den Aufruf der benötigten Klassen. Auch der Aufruf des Template (ModulHelper) ist veraltet und wird bald nicht mehr funktionieren.

    Du kannst Dir als Hilfe am besten aktuelle Module aus dem Core anschauen. Da kann man vieles entnehmen. Denn selbst diese Aufbau gilt schon wieder als veraltet und man geht mehr auf die Dispatcher-Methode. Das sieht man am besten an der "mod_custom". Im Modul "mod_articles_news" kann man sich den Aufruf der helper.php anschauen.

    in welcher Datei muss ich jetzt diesen Code hinzufügen

    Das kommt jetzt in die "mod_ws_test.php", wenn es für alle Template-Ausgaben (default.php) gelten soll.

    Wenn man verschiedene Template-Ausgaben erstellt und zu jeder eine andere CSS / JS gilt, dann nimmt man das in dieser jeweils auf.

    Was die vorherigen geschrieben haben, das stimmt und würde ich auch entsprechend bereinigen. Unsauberer Code kann schnell zu unerwünschten Nebeneffekten führen.

    Aber das behebt nicht Dein "Problem". Denn der Ankerlink funktioniert, genauso wie angegeben. Er springt nicht an das Ende der Seite, sondern setzt die Überschrift an den oberen Rand des Bildschirm. Im Screenshot habe ich mal versucht es darzustellen.

    Da Du einen "Sticky" Header nutzt, sieht man die Überschrift nicht, da diese vom Header verdeckt wird. Man kann das umgehen, wenn man die Höhe des Header als Scroll-Abstand von oben definiert. Hier ist das ganz gut beschrieben, wie man das umgehen kann: https://www.annikagievers.de/elementor-anke…s-setzen#sticky

    Ich würde aber zuvor schauen, dass der Header etwas schmaler gehalten wird. Durch das große Bild nimmt es einen Großteil der Bildschirmfläche ein. Oder komplett auf dem Sticky verzichten.

    Die bester Vorgehensweise ist, Du erstellst im Modul einen Ordner "media" in diesem dann die Unterverzeichnisse "css" und "js" liegen. direkt im "media" Verzeichnis die Datei joomla.asset.json (siehe WebsAssetManager) https://docs.joomla.org/J4.x:Web_Assets

    in der XML definierst Du dieses media-Verzeichnis:

    XML
    <media folder="media" destination="name_des_modul">
        <folder>css</folder>
        <folder>js</folder>
        <file>joomla.asset.json</file>
    </media>

    Bei der Installation wird das dann unter Joomla in das Verzeichnis "media" kopiert und von dort aus aufgerufen.