Custom Fields mit Template installieren/einrichten

  • Hallo,

    gibt es eine Möglichkeit bei der Template Installation (eigenes Template) bereits Custom Fields für Beiträge anzulegen? – z.B. über eine SQL Datei oder via PHP Script


    Hintergrund ist folgender: Ich nutze relativ häufig Custom Fields, vor allem für Beiträge, nur muss ich diese bei jeder neuen Installation von Hand mit anlegen und immer darauf aufpassen das die Felder korrekt bezeichnet sind, damit ich sie im Template nutzen kann.



    Mirko

  • Mit Template habe ich das noch nicht ausprobiert. Sollte aber auch da funktionieren:


    Bei Installation Felder in Datenbank schreiben.


    Dafür kennt Joomla den Tag

    Code
    <scriptfile>script.php</scriptfile>

    in der templateDetails.xml. Der Name der PHP-Datei ist frei, liegt im obersten Ordner der Erweiterung.


    https://docs.joomla.org/Manifest_files#Script_file


    Ob nötig, weiß ich nicht, aber ich tu dann die Datei noch in diesen Block mit rein:

    Code
    <files>
    ...anderes...
        <filename>script.php</filename>
    ...mehr anderes...
    </files>

    Hier wird (hoffentlich richtig) gesagt, wie die Klasse in script.php zu benennen ist:

    https://100cms.org/news/joomla…date-Template-script-file


    Selbstverständlich kann man auch eigene Methoden mit reinbauen, die dann mit

    Code
    $this->meineMethode();

    in der Klasse gerufen werden können.


    https://docs.joomla.org/Extension_Installer/Installer_Hooks


    ALTERNATIV:

    https://docs.joomla.org/Manifest_files#SQL

    Auch hier: Habe ich noch nie mit Templates ausprobiert.


    Ich hoffe, das bringt dich weiter ;)

  • Hallo,

    ich würde gern das Thema noch mal hochholen, da ich eine für meine Zwecke gebrauchstaugliche Lösung gefunden habe – nur gibt es einen kleinen Fehler:


    So sieht es aus:


    1. Es gibt eine JSON Datei im Template, welche die Daten und Parameter für die zu installierenden Felder beinhaltet

    2. Es gibt eine script.php welche bei der Installation/Update ausgeführt wird

    3. Die script.php erzeugt über Table::getInstance() einen oder mehrere Einträge in der Datenbank


    Hier der Code:


    Jetzt zum Problem:
    Führe ich den Code z.B. in der Index.php aus, funktioniert alles. Wird der Code über die script.php ausgeführt, gibt Joomla mir im Backend eine leere Fehlermeldung und die Datenbank bleibt unverändert.

    Meine Vermutung ist das es am Auslesen der "fields.json" in der script.php liegt nur bin ich mir nicht sicher und bekommen auch keine aussagekräftige Fehlermeldung.

    Weiß jemand wie ich die "fields.json" korrekt in der script.php auslesen muss?



    Mirko