[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Metafelder bei Installation eines Addon erstellen - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
Benutzeravatar
Oliver.Kreischer
Beiträge: 2508
Registriert: 17. Dez 2004, 00:03
Wohnort: Velbert - LA
Kontaktdaten: Website

Metafelder bei Installation eines Addon erstellen

11. Aug 2016, 10:22

Hallo Zusammen,

bei der Installation eines Addons bzw. in der function.php des Theme Addons würde ich gerne einige Meta Info Felder erstellen. Selbstverständlich ohne die zu überschreiben falls diese Felder schon existieren.

Code: Alles auswählen

rex_metainfo_add_field 
Scheint an der Stelle nicht zu funktionieren.
Mit
$sql = rex_sql::factory();
$sql->setQuery(...
komme ich auch nicht weiter und

Code: Alles auswählen

rex_api_metainfo_default_fields_create
verstehe ich schlicht nicht.

Hat einer von Euch evtl. ein Beispiel dafür?

LG
Oliver
> Friends Of REDAXO Gemeinsame REDAXO-Entwicklung!
> REDAXO Agenturen. Eintragen erwünscht!
> Komm in den Slack Channel Es lohnt sich!

Benutzeravatar
runstop64
Beiträge: 369
Registriert: 23. Okt 2012, 21:34
Wohnort: Hamburg
Kontaktdaten: Website Facebook Twitter

Re: Metafelder bei Installation eines Addon erstellen

11. Aug 2016, 11:12

Hi Oli,

ein Beispiel habe ich nicht, aber ich denke, in

Code: Alles auswählen

rex_api_metainfo_default_fields_create
ist alles ganz gut sehen:

Du hast ein Array von eigenen Feldern:
https://github.com/redaxo/redaxo/blob/m ... hp#L21-L25

Holst die vorhandenen aus der DB
https://github.com/redaxo/redaxo/blob/m ... hp#L38-L39

Und vergleichst sie
https://github.com/redaxo/redaxo/blob/m ... hp#L41-L48

Ich glaube, das müsste so rasukopiert werden können.
Viele Grüße,
Daniel


studio-ahoi.de | Referenzen | Friends Of REDAXO

Benutzeravatar
Oliver.Kreischer
Beiträge: 2508
Registriert: 17. Dez 2004, 00:03
Wohnort: Velbert - LA
Kontaktdaten: Website

Re: Metafelder bei Installation eines Addon erstellen

11. Aug 2016, 12:45

Hallo Daniel,

danke für deine Antwort.
runstop64 hat geschrieben:Ich glaube, das müsste so rasukopiert werden können.
Funktioniert leider nicht. Auch einiges rumprobieren war nicht erfolgreich.

Vielleicht hat ja tatsächlich jemand ein Beispiel?

LG
Oliver
> Friends Of REDAXO Gemeinsame REDAXO-Entwicklung!
> REDAXO Agenturen. Eintragen erwünscht!
> Komm in den Slack Channel Es lohnt sich!

Benutzeravatar
Oliver.Kreischer
Beiträge: 2508
Registriert: 17. Dez 2004, 00:03
Wohnort: Velbert - LA
Kontaktdaten: Website

Re: Metafelder bei Installation eines Addon erstellen

11. Aug 2016, 13:35

So. Ist zwar "ne Krücke" geht aber:

Code: Alles auswählen

if ($theme_meta_infos_anlegen == '1') {
  $qry = "
    INSERT IGNORE INTO rex_metainfo_field (title,name,type_id)VALUES ('hallo','art_hallo','1');
    ALTER TABLE rex_article ADD art_hallo VARCHAR( 255 ) NOT NULL;
  ";

  $sql = rex_sql::factory();
  // $sql->setDebug();
  $sql->setQuery($qry);
LG
Oliver
> Friends Of REDAXO Gemeinsame REDAXO-Entwicklung!
> REDAXO Agenturen. Eintragen erwünscht!
> Komm in den Slack Channel Es lohnt sich!

Benutzeravatar
runstop64
Beiträge: 369
Registriert: 23. Okt 2012, 21:34
Wohnort: Hamburg
Kontaktdaten: Website Facebook Twitter

Re: Metafelder bei Installation eines Addon erstellen

11. Aug 2016, 13:42

Hi Oli, bei mir klappt es.

Du solltest es über den EP PACKAGES_INCLUDED aufrufen, damit alle Funktionen sicher geladen sind:

Code: Alles auswählen

rex_extension::register('PACKAGES_INCLUDED', 'meta_test', rex_extension::LATE);

function meta_test()
{
    $prefix = 'art\_%';
    $defaultFields = [
        ['translate:online_from', 'art_test1', '1', '', '10', ''],
        ['translate:online_to', 'art_test2', '2', '', '10', ''],
        ['translate:description', 'art_test3', '3', '', '2', ''],
    ];

    $sql = rex_sql::factory();
    $sql->setDebug(true);
    $sql->getArray('SELECT name FROM '.rex::getTable('metainfo_field').' WHERE name LIKE ?', [$prefix]);
    $existing = array_column($existing, 'name', 'name');

    foreach ($defaultFields as $field) {
        if (!isset($existing[$field[1]])) {
            $return = call_user_func_array('rex_metainfo_add_field', $field);
            if (is_string($return)) {
                throw new rex_api_exception($return);
            }
        }
    }
}
Viele Grüße,
Daniel


studio-ahoi.de | Referenzen | Friends Of REDAXO

Benutzeravatar
Oliver.Kreischer
Beiträge: 2508
Registriert: 17. Dez 2004, 00:03
Wohnort: Velbert - LA
Kontaktdaten: Website

Re: Metafelder bei Installation eines Addon erstellen

11. Aug 2016, 14:12

Hm.

Wenn ich das per C&P in die functions.php einfüge bekomme ich

Code: Alles auswählen

"ErrorException" thrown in /Applications/MAMP/htdocs/rextest/redaxo/src/core/lib/extension.php on line 65
Fatal error: Argument 2 passed to rex_extension::register() must be callable, string given, called in /Applications/MAMP/htdocs/rextest/theme/private/lib/functions.php on line 43 and defined
LG
Oliver
> Friends Of REDAXO Gemeinsame REDAXO-Entwicklung!
> REDAXO Agenturen. Eintragen erwünscht!
> Komm in den Slack Channel Es lohnt sich!

Benutzeravatar
runstop64
Beiträge: 369
Registriert: 23. Okt 2012, 21:34
Wohnort: Hamburg
Kontaktdaten: Website Facebook Twitter

Re: Metafelder bei Installation eines Addon erstellen

11. Aug 2016, 14:35

Seltsam,
als callable sollte ein Funktionsname als String angenommen werden.

Welche PHP-Version läuft bei Dir? Kollidiert es vielleicht mit den übrigen Inhalten in functions.php oder irgendwelchen Addons? Ich habe es auf einer relativ leeren Testinstallation laufen.
Viele Grüße,
Daniel


studio-ahoi.de | Referenzen | Friends Of REDAXO

Benutzeravatar
Oliver.Kreischer
Beiträge: 2508
Registriert: 17. Dez 2004, 00:03
Wohnort: Velbert - LA
Kontaktdaten: Website

Re: Metafelder bei Installation eines Addon erstellen

11. Aug 2016, 14:37

PHP 5.6.10 / und ich hab aktuell viele Addons installiert..
In der functions.php steht sonst nichts.

LG
Oliver
> Friends Of REDAXO Gemeinsame REDAXO-Entwicklung!
> REDAXO Agenturen. Eintragen erwünscht!
> Komm in den Slack Channel Es lohnt sich!

Benutzeravatar
runstop64
Beiträge: 369
Registriert: 23. Okt 2012, 21:34
Wohnort: Hamburg
Kontaktdaten: Website Facebook Twitter

Re: Metafelder bei Installation eines Addon erstellen

11. Aug 2016, 14:40

Ich habe gerade mal testweise die Funktion rausgenommen. Dann wird dieser Fehler geworfen. Anscheinend findet er den Funktionsnamen nicht. Tippfehler? Oder evtl. mal EP-Aufruf und Funktionsdefinition tauschen?
Viele Grüße,
Daniel


studio-ahoi.de | Referenzen | Friends Of REDAXO

Benutzeravatar
runstop64
Beiträge: 369
Registriert: 23. Okt 2012, 21:34
Wohnort: Hamburg
Kontaktdaten: Website Facebook Twitter

Re: Metafelder bei Installation eines Addon erstellen

11. Aug 2016, 14:44

Was hast Du denn dann davor stehen, dass der Fehler in Zeile 43 kommt? Bei mir ist es Zeile 2.
Viele Grüße,
Daniel


studio-ahoi.de | Referenzen | Friends Of REDAXO

Benutzeravatar
Oliver.Kreischer
Beiträge: 2508
Registriert: 17. Dez 2004, 00:03
Wohnort: Velbert - LA
Kontaktdaten: Website

Re: Metafelder bei Installation eines Addon erstellen

11. Aug 2016, 14:47

Hm. Auch mit noch etwas basteln will es nicht.
Egal. So wie ich es jetzt habe ist es für mich ausreichend.

Danke!
Oliver
> Friends Of REDAXO Gemeinsame REDAXO-Entwicklung!
> REDAXO Agenturen. Eintragen erwünscht!
> Komm in den Slack Channel Es lohnt sich!

Zurück zu „Allgemeines [R5]“