pi_flexform Felder in der Typo3 Datenbank migrieren (direkt mit MySQL)
bei der migration von Typo3 4.5 auf 6.2 kommt es vor, dass die konfiguration der inhalte (im feld pi_flexform gespeichert) umformatiert werden muss, da sich zb. beim redereing von media inhaltselementen einiges geändert hat.
glücklicherweise kann man in der MySQL abfrage direkt XPATH selektionen mit der funktion ExtractValue machen. mit CONCAT kann man dann das neue pi_flexform XML wieder zusammensetzten.
hier ein beispiel zum aktualisieren der media elemente vom typ audio:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 |
UPDATE `typo3-datenbank`.`tt_content` SET `pi_flexform` = CONCAT('<?xml version="1.0" encoding="utf-8" standalone="yes" ?> <T3FlexForms> <data> <sheet index="sGeneral"> <language index="lDEF"> <field index="mmType"> <value index="vDEF">audio</value> </field> <field index="mmUseHTML5"> <value index="vDEF">0</value> </field> <field index="mmWidth"> <value index="vDEF"></value> </field> <field index="mmHeight"> <value index="vDEF"></value> </field> <field index="mmRenderType"> <value index="vDEF">auto</value> </field> </language> </sheet> <sheet index="sVideo"> <language index="lDEF"> <field index="mmFile"> <value index="vDEF"></value> </field> </language> </sheet> <sheet index="sAudio"> <language index="lDEF"> <field index="mmAudioFallback"> <value index="vDEF">', ExtractValue(pi_flexform, '//sheet[@index="sAudio"]//value'), '</value> </field> <field index="mmAudioSources"> <el index="el"> <section index="1"> <itemType index="mmAudioSourcesContainer"> <el> <field index="mmAudioSource"> <value index="vDEF">', ExtractValue(pi_flexform, '//sheet[@index="sAudio"]//value'), '</value> </field> </el> </itemType> <itemType index="_TOGGLE">0</itemType> </section> </el> </field> </language> </sheet> </data> </T3FlexForms>' ) WHERE `tt_content`.`CType`='media' |