Ecco come fare per agire contemporaneamente su alcune centinaia di record con una Query SQL.
Prima di tutto è necessario trovare un contenuto di tipo plugin dentro le pagine, uno di quelli da modificare, segnatevi l'id, servirà dopo.
Installare phpmyadmin o un altro strumento per accedere al db
La tabella interessata è la tt_content, Il campo è pi_flexform, che contiene tutte le configurazioni in formato XML, poiché molti plugin usano il campo pi_flexform per le configurazioni è possibile raffinare la select con il campo list_type.
Eseguire una SELECT per identificare il contenuto al punto uno:
[sql light="true"]
SELECT * FROM `tt_content` WHERE `uid` = <strong>590</strong>
[/sql]
Modificare il risultato in phpmyadmin e trovate nel campo pi_flexform il valore che vi interessa, ad esempio:
[xml light="true"]
<field index="accordionClosed">
<value index="vDEF">0</value>
</field>
[/xml]
Che per esempio sarà da cambiare in
[xml light="true"]
<field index="accordionClosed">
<value index="vDEF">1</value>
</field>
[/xml]
Ora è necessario scrivere la query per l'update, un buon consiglio è scrivere prima una select, in quanto con i vari a capo, spazi e tab non è detto che funzioni al primo colpo.
[sql light="true"]
SELECT * FROM `tt_content` WHERE `pi_flexform` LIKE '%<field index="accordionClosed">
<value index="vDEF">0</value>
</field>%'
[/sql]
Se la query SELECT ha trovato i risultati attesi si può procedere con la UPDATE, altrimenti è necessario controllare i tab, spazi e a capo della condizione WHERE.
Nel mio esempio ho tolto l'ultima riga perché falliva:
[sql light="true"]
SELECT * FROM `tt_content` WHERE `pi_flexform` LIKE '%<field index="accordionClosed">
<value index="vDEF">0</value>%'
[/sql]
e ho aggiunto la condizione sul campo list_type per ottimizzare la select
[sql light="true"]
SELECT * FROM `tt_content` WHERE `pi_flexform` LIKE '%<field index="accordionClosed">
<value index="vDEF">0</value>%'
AND `list_type` LIKE 'jfmulticontent_pi1'
[/sql]
Ed ecco l'UPDATE con REPLACE
[sql light="true"]
UPDATE `tt_content` SET `pi_flexform` = REPLACE(`pi_flexform`, '
<field index="accordionClosed">
<value index="vDEF">0</value>
</field>', '<field index="accordionClosed">
<value index="vDEF">1</value>
</field>') WHERE `list_type` LIKE 'jfmulticontent_pi1'
[/sql]