[Résolu] Déplacer le contenu de sous-rubriques vers leur secteur

Bonjour,
je reprends un site sous Escal où un secteur de 19.000 articles est divisé en sous-rubriques A, B, C, … et le A en “de AB à Ae”, de “de AF à AL”, …
Je voudrais tout mettre à la racine du secteur
Bizarrement le déplacement par le plan ne fonctionne pas avec ce secteur
je suppose qu’il faut passer par PhPMyAdmin ou autre ?
Claude

Via phpMyAdmin, un truc comme ça devrait déplacer les rubriques du secteur X vers la racine MAIS, il faut aussi changer leur id_secteur du coup (je ne sais pas si ça se fait automatiquement ?).

UPDATE spip_rubriques SET id_parent="0" WHERE id_parent=X;

Si le changement de secteur n’est pas automatique, lancer cette commande AVANT la précédente pour que chaque rubrique fille du secteur X ait comme id_secteur son id_rubrique.

UPDATE spip_rubriques SET id_secteur = id_rubrique WHERE id_parent=X;

Notes :

  • à confirmer par plus aguerri·es en SQL que moi
  • à tester sur une copie de la base après sauvegarde bien sûr :slight_smile:
  • je n’ai pas testé, donc syntaxe à affiner, notamment les apostrophes (j’ai jamais compris quand il en fallait ou pas)
  • entre les 2 commandes, SPIP risque d’être perdu donc ne pas aller dans l’espace privé
  1. Au passage attention à l’ordre car après SET id_parent= 0, le WHERE id_parent=X ne renverra plus rien. Pour ces 2 UPDATE, il sera plus simple de n’en faire qu’un et l’équivalent serait :
UPDATE spip_rubriques SET id_secteur=id_rubrique, id_parent="0" WHERE id_parent=X;
  1. Mais je ne suis pas certain que ça soit ça le bon changement. Car que veut dire « Je voudrais tout mettre à la racine du secteur » ?
    C’est pas clair, surtout car un secteur n’a pas de « racine », juste il a un contenu.
    Mais aussi c’est pas clair car « tout » en l’occurrence, c’est peut être pas les rubriques mais plutôt les articles, qu’il faudrait mettre directement dans le secteur. Auquel cas l’UPDATE doit agir sur spip_articles et non sur spip_rubriques.
1 « J'aime »

Bonjour,

Normalement sur les SPIP un bouton « déplacer » existe :
image

Cela doit bien déplacer la rubrique à la racine sans problème.

Le WHERE id_parent=X fait que seules les rubriques dont id_parent=X seront modifiées, non ?

De ce que je vois dans la base, un secteur est une rubrique dont :

  • id_parent = 0
  • id_secteur = id_rubrique

Donc les modifs sont à faire sur les rubriques filles du secteur X pour qu’elles deviennent elles-mêmes des secteurs.

Mais, il y a effectivement aussi l’id_secteur dans l’article (cette demande devient de plus en plus intéressante :sweat_smile: )

Il faudrait donc, en plus de la requête reformuléée par @JLuc , exécuter un truc genre :

UPDATE spip_articles SET id_secteur = id_rubrique WHERE id_secteur=X;

Oula je ne crois pas. Les secteurs ne peuvent pas être des rubriques qui ne sont pas elles même des secteurs.

Avec les incertitudes énoncées plus haut sur le sens du post initial, si je risque un truc ce serait « mettre tous les articles directement dans le secteur X » et donc :

UPDATE spip_articles SET id_rubrique = X WHERE id_secteur=X;

salut,

j’ai manqué un peu de clarté.
Il s’agit bien de ramener tous les articles des sous-rubriques et des sous-sous-rubriques de la rubrique numéro 2 directement dans la rubrique 2 (qui en l’occurence est aussi un secteur) et donc de vider toutes les sous-rubriques et sous-sous-rubriques.

claude

Aaaaah, ok :laughing:

La solution de @JLuc semble donc être la bonne.

j’ai donc adopté la requête de Jean-Luc

UPDATE spip_articles SET id_rubrique = 10 WHERE id_secteur=2

le résultat amène tous les articles du secteur 2 dans sa sous-rubrique 10.
Pas tout à fait ce que j’avais compris, mais ça ira très bien.
Il m’a suffit de mettre cette rubrique 10 à la racine, la renommer et c’est bon.
Merci tout le monde
Claude

En effet, dans ma suggestion il n’y avait qu’une seule valeur X, alors que tu as utilisé 2 valeurs différentes : un 10 et un 2…
Remarque, si-ou-tant-que les articles sont restés dans le même secteur, c’est pas trop tard pour faire comme j’avais indiqué.

OK, je commence à mieux comprendre le pourquoi du X X au lieu de X Y
Merci