it-swarm.com.de

Benutzerdefinierte Formularfeldtypen sind im Plugin-Backend nicht verfügbar, wenn das Plugin deaktiviert ist

Ich habe ein Plugin erstellt und dem Backend einige benutzerdefinierte Felder hinzugefügt. Dafür folgte ich den Anweisungen aus den Joomla-Dokumenten . Ich habe zum Beispiel JFormFieldList erweitert, um eine Dropdown-Liste mit Optionen zu erhalten.

Meine Felder funktionieren gut, wenn das Plugin aktiviert ist. Wenn das Plugin deaktiviert ist, wird die Liste nicht gerendert. Ich bekomme nur ein einfaches Textfeld.

Dasselbe Problem mit einem anderen benutzerdefinierten Feld, in dem eine Schaltfläche angezeigt werden soll. Die Schaltfläche wird angezeigt, wenn das Plugin aktiviert ist. Wenn es deaktiviert ist, wird stattdessen das gleiche Textfeld angezeigt.

Ich gehe daher davon aus, dass das Problem darin besteht, dass das PHP der benutzerdefinierten Felder nicht ausgeführt wird, wenn das Plugin deaktiviert ist. Gibt es einen Weg, das zu umgehen?

BEARBEITEN: Hier ist eines meiner benutzerdefinierten Felder

<?php
// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die('Restricted access');
jimport('joomla.form.formfield');
class JFormFieldZotcslLocales extends JFormFieldList
{
    protected $type = 'ZotcslLocales';

    public function getOptions() {
        $path = JPATH_ROOT.'/media/plg_zotbib/locales/*.xml';
        foreach(glob($path) as $file){
            $name = basename($file, '.xml');
            $name = str_replace('locales-', '', $name);
            $locales[$name] = $name;
        }
        return $locales;
    }
}
?>   

Und so wird es in die Manifestdatei aufgenommen

<field name="locale" type="zotcsllocales"
    description="PLG_ZOTBIB_LOCALE_DESC"
    label="PLG_ZOTBIB_LOCALE_LABEL"
    required="true"
    />
2
Victor

Das Problem wurde behoben, indem dem Tag <config> Des XML-Manifests eine Eigenschaft addfieldpath hinzugefügt wurde:

<config addfieldpath="/plugins/content/zotbib/fields">

Ohne dies wurden die benutzerdefinierten Felder im Backend nur angezeigt, als das Plugin veröffentlicht wurde. Im unveröffentlichten Zustand wurde der entsprechende Code nicht ausgeführt. Mit diesem Eigenschaftssatz wird der Code der benutzerdefinierten Felder immer ausgeführt und sie werden korrekt angezeigt, auch wenn das Plugin nicht veröffentlicht ist.

Der Code meines Plugins ist hier zu sehen: https://framagit.org/svictor/j3-zotbib

1
Victor

@ Victor: Offensichtlich wird es nicht angezeigt, da die Felddefinition Teil des Plugins ist. Eine schnelle und fehlerhafte Lösung wäre, ein Plugin zu erstellen, das nur zur Anzeige des Feldtyps dient (ein leeres Plugin, das die Felddefinition enthält) , und da es sonst nichts tut, können Sie es veröffentlichen, ohne andere Probleme zu haben). Die saubere Lösung wäre, einen Feldtyp für jeden Inhaltstyp (Modul, Komponente usw.) mit einem anderen Namen zu erstellen (da sie aktiviert/deaktiviert werden können und ein Plugin/Modul/Komponente in einigen anderen Teilen von möglicherweise nicht verfügbar ist die Seite, wo Sie den Feldtyp benötigen)

0
pixx