Migration d’un squelette de SPIP2 vers SPIP3
Le présent article a été migré sur le site officiel de SPIP.
Attention : Pour la mise à jour de sites complexes déjà en production, nous vous conseillons vivement de tester et éventuellement mettre au point votre site localement avec SPIP3 avant de faire la mise du site en production.
Discussions par date d’activité
6 discussions
Suite à migration d’un nouveau site, j’ai révisité ou ajouté les dernières parties :
- Boucles avec jointures
- Tables de liens
- Jointures sans critère identifiant
- urls personnalisées
Répondre à ce message
Bonjour !
Je travaille actuellement sur la migration de mon site en Spip 2.1 vers Spip 3. Il me reste malheureusement un problème que je n’arrive pas à résoudre. J’utilisais jusque là une partie d’un vieux plugin de recherche multicritères que je m’étais longtemps amusé à modifier et à adapter.
Le fichier de résultat est entièrement en php mais depuis le passage à Spip 3, il ne me retourne plus aucun résultat. Je pense que suite aux modifications de la base sur la version 3, une requête SQL n’est plus bonne mais je n’ai pas réussi à savoir quelles étaient les changements.
Si quelqu’un pouvait m’en dire plus ou jeter un œil à mon code, ce serait cool !
pfiouuuu
On peut voir la page de recherche ?
Et aussi une petite description de comment les résultats sont affichés ?
Je te mets un lien vers la version qui fonctionne sur SPIP 2.1
http://www.librairie-interactive.com/?page=recherche&type_rech=multi
Je pense savoir d’où vient le problème mais je ne suis pas assez compétent en SQL pour le résoudre.
En effet, je viens de réaliser que dans la nouvelle structure de la base de SPIP 3, la table spip_mots_articles n’existe plus alors que dans mon fichier, il y est souvent fait appel en SQL. Du coup mon code se comporte comme si il n’y avait aucun mot clé dans le tableau idmot et me dit qu’il n’y a pas de résultats.
Reste à comprendre les jointures de la nouvelle base pour modifier le SQL dans mon code.
Bonjour Mike.
Dites-moi si ra ré-écriture suivante marche avec la 2.1 :
Normalement c’est juste un portage qui utllise l’API SQL de SPIP : cela a pas mal d’avantages plus tard. Si ça marche, je peux adapter les requêtes (je soupçonne aussi les mots-clés)
J’irai voir la page de recherche dans la soirée. Je pense que ça m’aidera à comprendre le code... Mais je pense aussi qu’il aurait été possible d’écrire cette page directement en langage de boucles SPIP avec ses bénéfices (lisibilité du HTML qui n’est pas mélangé à du PHP, portabilité et prise en main plus simples pour un non développeur, prise en charge automatique par le cache, etc.)
Bonsoir !
Désolé je me suis trompé en postant tout à l’heure pour dire que c’était résolu et j’ai créé un autre post au lieu de répondre.
C’était bien lié aux modifications de la base de données suite au passage en spip 3.
La table spip_mot_articles est devenue spip_mots_liens et du coup spip_mots_articles.id_article devient spip_mots_liens.id_objet
Merci d’avoir pris le temps de regarder ! :)
Maintenant c’est vrai qu’il faudrait que je recode tout ça directement en SPIP mais j’avoue que je ne sais pas trop par quel bout commencer. J’avais déjà passé pas mal de temps à bidouiller ce code en php (dont je ne suis pas l’auteur) pour l’adapter à mes besoins. Je pense que c’est au delà de mes compétences pour le moment !
En tous cas merci du temps que vous m’avez accordé, d’autant plus que le code est plutôt indigeste présenté comme ça !
Mike
C’était ma prochaine suggestion (mais avant, s’assurer que la ré-écriture avec l’API ne casse rien) Mais ne pouvant pas tester, je n’étais pas certain que cette seule modification aurait suffit (je pensais qu’il aurait fallu rajouter dans votre cas que «
objet='article'
» en plus du lien surid_objet
(car la nouvelle structure permet de lier n’importe quel objet aux mots clés, pas que les articles... donc quand vous aurez des articles et des rubriques de même ID rattaché au même mot-clé...)Bonjour
j’ai le même souci d’utiliser la recherche multi-critère par mot clé sous spip3 du fait du changement de table de à . J’ai donc essayer de copier / coller ce que tu proposes, que j’ai mis dnas le fichier natif ’result_rec_mc.html’.
La recherche se fait à partir de la page : http://www.infogm.org/spip.php?rubrique657.
Quand je lance une recherche, j’ai droit au message d’erreur suivant : « Parse error : syntax error, unexpected T_VARIABLE in /homez.95/infogm/www/ecrire/public/evaluer_page.php(55) : eval()’d code on line 63 ».
J’ai aussi essayer de simplement faire rechercher / remplacer sur mon premier fichier tous les spip_mots_articles par spip_mots_liens et les .id_article par des id.objet...Mais cette solution ne me donnait tout simplement aucun résultat... Jamais. Or j’ai bien des articles liés à des mots clés.
Merci pour vos lumières
Répondre à ce message
le critere par num titre, id_document ne marche plus, car les numeros devant les titres sont maintenant ignore.
c’est quoi le nouveau critere pour prendre en compte les numeros de titres ? la documentation n’est ps encore a jour :(
Sisi,
{par num titre}
marche toujours... ce n’est que la balise #TITRE qui a le numéro supprimé d’office.C’est pas si simple je crois : car je constate aussi que
{par num titre}
ne trie pas partitre
quand les titres ne contiennent pas de numéro !Dans une rubrique, il est recommandé que soit il y ait des numéros à tous les articles, soit il n’y en ait pas du tout.
Répondre à ce message
Problème résolu, je poste la réponse très simple qui pourra dépanner probablement d’autres personnes
La table spip_mot_articles est devenue spip_mots_liens et du coup spip_mots_articles_.id_article devient spip_mots_liens.id_objet
Merci d’avoir pris le temps de regarder ! Je suis conscient que comme ça le code php est un peu indigeste ! Je pourrais d’ailleurs faire ça plus simplement maintenant sous Spip 3 mais bon !
Mike
Répondre à ce message
Bonjour,
Sauf erreur de ma part, le critère id_groupe semble ne plus fonctionner sur une boucle « breves » dans SPIP 3 (pour sélectionner les brèves liées à un groupe de mots-clés). http://www.spip.net/fr_article906.html
La boucle suivante qui fonctionnait très bien sous SPIP 2, n’affiche plus rien après une migration sur SPIP3, et affiche une « erreur dans le squelette » de type « critère inconnu » :
<BOUCLE_nom_de_boucle(BREVES){id_groupe="9"}{0,5}{id_rubrique="1"}{!par date}{doublons}>
Je précise que la boucle se situe dans un « inclure ».
Merci !
Bonjour.
Quelle est l’erreur exacte ?
Est-ce que l’erreur persiste quand on enlève
{id_groupe="9"}
et qu’on recalcule la page ?Bonjour,
Voici l’erreur exacte :
Et la boucle n’affiche rien.
Si j’enlève le critère ça marche sans problème.
Pour le moment j’ai trouvé un autre moyen d’afficher ce que je veux mais c’est tout de même étrange.
Bonjour.
Vous (Abel) écriviez :
Et je (gilcot) ai répondu
Et vous (Abel) confirmez
En fait, ce n’est pas si étrange que cela : le problème des mots-clés est un peu celui des forums, même si l’article ne le mentionne pas (mais c’est un poil plus complexe aussi) Mais l’essentiel (jointures automatiques) ayant été fait pour qu’on retombe sur ses pattes dans la plupart des cas (boucles simples de ce type), cette erreur n’aurait pas du se produire non ?
A tout hasard (je ne peux pas tester là), remplacer
{id_groupe="9"}
par{mots.id_groupe="9"}{mots.objet='breve'}
pour voir ce que ça donneBonjour,
Alors si je mets
{mots.id_groupe="9"}{mots.objet='breve'}
ça ne fonctionne pas.Mais si je ne mets que
{mots.id_groupe="9"}
alors cela semble fonctionner.Abel
Salut Abel
Comme j’ai pas testé.. mais vous avez trouvé la version qui fonctionne. L’idée était de forcer la jointure sur la table des mots clés ;-)
Problème résolu donc. Bonne continuation.
Oui,
Bravo et merci ! ^^
Répondre à ce message
Un chapitre majeur de modification de SPIP 3 reste a expliciter :
la gestion des mots-clés est a refondre assez complètement si vous utilisez ce domaine...
car les tables dsupport ont completement changé.
Voir les articls descriptifs SPIP3 (actuellement seulement en interface privée, en attendant leur publication publique a la sortie officielle de SPIP3)
Bonjour,
il faudrait mettre cet article dans la rubrique « Suivre les versions de SPIP » :
http://www.spip-contrib.net/Suivre-les-versions-de-SPIP
Sinon on ne s’y retrouve pas, non ?
C’est fait
Répondre à ce message
Ajouter un commentaire
Avant de faire part d’un problème sur un plugin X, merci de lire ce qui suit :
Merci d’avance pour les personnes qui vous aideront !
Par ailleurs, n’oubliez pas que les contributeurs et contributrices ont une vie en dehors de SPIP.
Suivre les commentaires : |