Seite 1 von 1
Metafelder bei Installation eines Addon erstellen
Verfasst: 11. Aug 2016, 10:22
von Oliver.Kreischer
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.
Scheint an der Stelle nicht zu funktionieren.
Mit
$sql = rex_sql::factory();
$sql->setQuery(...
komme ich auch nicht weiter und
verstehe ich schlicht nicht.
Hat einer von Euch evtl. ein Beispiel dafür?
LG
Oliver
Re: Metafelder bei Installation eines Addon erstellen
Verfasst: 11. Aug 2016, 11:12
von runstop64
Hi Oli,
ein Beispiel habe ich nicht, aber ich denke, in
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.
Re: Metafelder bei Installation eines Addon erstellen
Verfasst: 11. Aug 2016, 12:45
von Oliver.Kreischer
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
Re: Metafelder bei Installation eines Addon erstellen
Verfasst: 11. Aug 2016, 13:35
von Oliver.Kreischer
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
Re: Metafelder bei Installation eines Addon erstellen
Verfasst: 11. Aug 2016, 13:42
von runstop64
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);
}
}
}
}
Re: Metafelder bei Installation eines Addon erstellen
Verfasst: 11. Aug 2016, 14:12
von Oliver.Kreischer
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
Re: Metafelder bei Installation eines Addon erstellen
Verfasst: 11. Aug 2016, 14:35
von runstop64
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.
Re: Metafelder bei Installation eines Addon erstellen
Verfasst: 11. Aug 2016, 14:37
von Oliver.Kreischer
PHP 5.6.10 / und ich hab aktuell viele Addons installiert..
In der functions.php steht sonst nichts.
LG
Oliver
Re: Metafelder bei Installation eines Addon erstellen
Verfasst: 11. Aug 2016, 14:40
von runstop64
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?
Re: Metafelder bei Installation eines Addon erstellen
Verfasst: 11. Aug 2016, 14:44
von runstop64
Was hast Du denn dann davor stehen, dass der Fehler in Zeile 43 kommt? Bei mir ist es Zeile 2.
Re: Metafelder bei Installation eines Addon erstellen
Verfasst: 11. Aug 2016, 14:47
von Oliver.Kreischer
Hm. Auch mit noch etwas basteln will es nicht.
Egal. So wie ich es jetzt habe ist es für mich ausreichend.
Danke!
Oliver