Migration d'un squelette de SPIP2 vers SPIP3 - commentaires Migration d'un squelette de SPIP2 vers SPIP3 2019-01-04T15:10:35Z https://files.spip.net/Migration-d-un-squelette-de-SPIP2-vers-SPIP3#comment499287 2019-01-04T15:10:35Z <p>Suite à migration d'un nouveau site, j'ai révisité ou ajouté les dernières parties : <br>- Boucles avec jointures <br>- Tables de liens <br>- Jointures sans critère identifiant <br>- urls personnalisées</p> Migration d'un squelette de SPIP2 vers SPIP3 2013-01-29T17:48:14Z https://files.spip.net/Migration-d-un-squelette-de-SPIP2-vers-SPIP3#comment464832 2013-01-29T17:48:14Z <p>Bonjour<br class="autobr"> 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'. <br class="autobr"> La recherche se fait à partir de la page : <a href="http://www.infogm.org/spip.php?rubrique657" class="spip_url spip_out auto" rel="nofollow external">http://www.infogm.org/spip.php?rubrique657</a>.<br class="autobr"> 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 ».<br class="autobr"> 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. <br class="autobr"> Merci pour vos lumières</p> Migration d'un squelette de SPIP2 vers SPIP3 2013-01-29T13:49:11Z https://files.spip.net/Migration-d-un-squelette-de-SPIP2-vers-SPIP3#comment464820 2013-01-29T13:49:11Z <p>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.</p> Migration d'un squelette de SPIP2 vers SPIP3 2012-11-15T15:59:53Z https://files.spip.net/Migration-d-un-squelette-de-SPIP2-vers-SPIP3#comment463170 2012-11-15T15:59:53Z <p>C'est pas si simple je crois : car je constate aussi que <code class="spip_code spip_code_inline" dir="ltr">{par num titre}</code> ne trie pas par <code class="spip_code spip_code_inline" dir="ltr">titre</code> quand les titres ne contiennent pas de numéro<small class="fine d-inline"> </small>!</p> Migration d'un squelette de SPIP2 vers SPIP3 2012-11-02T23:32:18Z https://files.spip.net/Migration-d-un-squelette-de-SPIP2-vers-SPIP3#comment462804 2012-11-02T23:32:18Z <p>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 « <code class="spip_code spip_code_inline" dir="ltr">objet='article'</code> » en plus du lien sur <code class="spip_code spip_code_inline" dir="ltr">id_objet</code> (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é...)</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code><div class="result_rm"> <?php /********************************************************************* * RECHERCHE MULTI-CRITERES - MODELE AFFICHAGE DES RESULTATS * * @author * -2008-08: [Dominique (Dom) Lepaisant->www.tispip.etab.ac-caen.fr] * -2008-08: [Stéphanie De Nadaï->www.webdesigneuse.net] * - [Paul Sanchez->www.Netdeveloppeur.com] (contrib initiale) * * @copyright * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *********************************************************************/ $url = parse_url($_SERVER['QUERY_STRING']); $param = $url['path']; $pos = 0; $indice = 255; if (_request('idmot')) { // Récupération du nombre de jours // pour periodicité de la rechercher $nbjour = intval(_request('nbjour')); // Récupération du nombre de jours // pour periodicité de la rechercher if (_request('onlyrub')) { $idonlyrub = intval(_request('rubnum')); } else $idonlyrub = 0; // 1 = Tous les mots doivent être associés aux articles trouvés $allword = intval(_request('allword')); $sql_in_mot = implode(',', _request('idmot') ); $nbmot = count(_request('idmot')); $result = sql_select('id_mot, titre', 'spip_mots', 'id_mot IN ('.$sql_in_mot.')', '', 'id_mot,titre"'); $tabmot = ""; $nbcol = 0; $nbcolmax = 4; if ($result) { $compt = 0; while ($row = sql_fetch($result)) { extract($row); $titre = supprimer_numero($titre); if ($nbcol == $nbcolmax) { $nbcol = 0; } $tabmot .= "<a class=\"spanblock txtgris\" href=\"./spip.php?page=mot&mots[]=$id_mot\"><span class=\"cle\">$titre</span></a>"; $nbcol += 1; } sql_free($result); } $sql_where[] = "spip_mots_liens.objet='article'" $sql_where[] = "spip_mots_liens.id_mot IN (".$sql_in_mot.") "; if ($nbjour) { $datedeb = date("Y-m-d", mktime(0, 0, 0, date("m"), (date("d") - $nbjour), date("Y"))); $sql_where[] = "spip_articles.date >= '$datedeb' "; } if ($idonlyrub) { $sql_where[] = "spip_rubriques.id_rubrique = $idonlyrub "; } $sql_where[] = "spip_articles.statut = 'publie' GROUP BY spip_articles.id_article"; if ($order) { $sql_order = "spip_rubriques.id_rubrique, num DESC, spip_mots_liens.id_mot, spip_articles.date DESC"; } else { $sql_order = "num DESC, spip_mots_liens.id_mot, spip_rubriques.id_rubrique, spip_articles.date DESC"; } $result = sql_select('COUNT(*) AS num, spip_articles.id_article, spip_rubriques.id_rubrique, spip_rubriques.titre AS titrerub', 'spip_articles INNER JOIN spip_rubriques ON spip_rubriques.id_rubrique = spip_articles.id_rubrique INNER JOIN spip_mots_liens ON spip_mots_liens.id_objet = spip_articles.id_article', $sql_where, '', $sql_order); $nbart = 0; $resultataffiche = ""; if ($result) { $titrerub = supprimer_numero($titrerub); $idrub = 0; $listidmot2 = ""; $listidmotprec = ""; while ($row = sql_fetch($result)) { extract($row); if (($num != $nbmot) && ($allword)) { break; } if ($idrub != $id_rubrique) { if (($pospoint = strrpos($titrerub, ". ")) === FALSE) { $titrerub2=$titrerub; } else { if (is_numeric(substr($titrerub, 0, $pospoint)) == false) $titrerub2 = $titrerub; else $titrerub2 = substr($titrerub, $pospoint + 2); } if ($order) { $resultataffiche.= '<p><a href="'. generer_url_entite($id_rubrique, 'rubrique') ."\">$titrerub2 :</a></p>"; } } $result2 = sql_select('spip_articles.id_article AS artid,spip_articles.id_secteur AS id_secteur, spip_articles.titre AS titreart, spip_articles.date, spip_mots.id_mot, spip_mots.titre AS titremot', 'spip_articles INNER JOIN spip_mots_liens ON spip_mots_liens.id_objet = spip_articles.id_article INNER JOIN spip_mots ON spip_mots.id_mot = spip_mots_liens.id_mot ', "spip_articles.id_article = $id_article AND spip_mots_liens.id_mot IN (".$sql_in_mot.") AND statut = 'publie' AND spip_mots_liens.objet = 'article' ", '', 'spip_mots.id_mot'); if ($result2) { $listmot = "<h4 class=\"titremots_mc\">"; $titrearticle = ""; $dataffich = ""; $idart = 0; while ($row2 = sql_fetch($result2)) { extract($row2); $listidmot2 .= "$id_mot,"; if ($idart == 0) { $titrearticle = supprimer_numero($titreart); if (!(($pospoint = strpos($titrearticle, '.')) === FALSE)) { if (is_numeric(substr($titrearticle, 0, $pospoint)) == true) $titrearticle = substr($titrearticle, $pospoint + 2); } if (!(($pospoint = strpos($titremot, '.')) === FALSE)) { if (is_numeric(substr($titremot, 0, $pospoint)) == true) $titremot = substr($titremot, $pospoint + 2); } $dataffich = date("d/m/Y", strtotime($date)); if ($order) { $nbart += 1; $resultataffiche .= '<li><a class="titrearticle_mc" href="'. generer_url_entite($artid, 'article') ."\">$titrearticle</a> <small>$dataffich </small>"; $resultataffiche .= "$titremot"; } $listmot .= "<a class=\"spanblock\" href=\"./spip.php?page=mot&mots[]=$id_mot\"><span class=\"cle\">$titremot</span></a>"; $idart = 1; } else { $listmot .= "<a class=\"spanblock\" href=\"./spip.php?page=mot&mots[]=$id_mot\"><span class=\"cle\">$titremot</span></a>"; if ($order) { $resultataffiche .= "<a class=\"spanblock\" href=\"./spip.php?page=mot&mots[]=$id_mot\"><span class=\"cle\">$titremot</span></a>"; } } } if ($order) { $resultataffiche .= "</li>"; } sql_free($result2); if (!$order) { if ($listidmot2 != $listmodidprec) { $resultataffiche .= " $listmot </h4>"; } $nbart += 1; switch ($id_secteur) { case 1: $variable = 63; $secteur = "Ma classe"; break; case 3: $variable = 66; $secteur = "Applications"; break; case 4: $variable = 65; $secteur = "Tutoriels"; break; case 5: $variable = 64; $secteur = "Liens"; break; } $resultataffiche .= '<li class="br"><a class="titrearticle_mc" href="'. generer_url_entite($id_article, 'article'). "\">$titrearticle</a><small>publié le : <em>$dataffich</em> , dans la rubrique <em><a href=\"". generer_url_entite($id_secteur,'rubrique') ."&mots[]=$variable\">$secteur</a></em></small></li>"; $listmodidprec = $listidmot2; $listidmot2 = ""; } } $idrub = $id_rubrique; } sql_free($result); if($nbart == 0 || $nbart == 1) $nbart_txt = "<:rmc:article_trouve:>"; else $nbart_txt = "<:rmc:articles_trouves:>"; echo "<div class=\"contre-encart\">"; echo "<p class=\"mots_mc\"><span class=\"spanblock \">Mots séléctionnés : </span><br />".substr($tabmot, 0)." </p>"; if($nbart == 0 ) $nbart_txt = "Aucun article ne correspond à votre recherche"; else if($nbart == 1 ) $nbart_txt = " article correspond à votre recherche"; else $nbart_txt = "articles correspondent à votre recherche"; if($nbart == 0 ) echo "<p class=\"mots_mc\"> $nbart_txt<br /><a href=\"#SELF\">Nouvelle recherche</a></p>"; else echo "<p class=\"mots_mc\"> $nbart $nbart_txt<br /><a href=\"#SELF\">Nouvelle recherche</a></p>"; echo '<div class="liste-articles">'.$resultataffiche."</div></div>"; if($nbart) echo "<br class=\"dixpixels\" /><p class=\"mots_mc\"><a href=\"#SELF\">Nouvelle recherche</a></p>"; } else { echo "<p class=\"mots_mc\">Aucun article ne correspond à votre recherche</p>"; } } else { echo "<div class=\"mots_mc\"><:rmc:selectionner_mot:></div>"; // inutile si form recherche inclus // echo "<br /><a href=\"".$_SERVER['HTTP_REFERER']."\" onclick=\"javascript:history.back(); return false;\">Retour</a></p>"; } ?> </div></code></pre></div> Migration d'un squelette de SPIP2 vers SPIP3 2012-11-02T19:34:53Z https://files.spip.net/Migration-d-un-squelette-de-SPIP2-vers-SPIP3#comment462797 2012-11-02T19:34:53Z <p>Bonsoir<small class="fine d-inline"> </small>!</p> <p>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.</p> <p>C'était bien lié aux modifications de la base de données suite au passage en spip 3.</p> <p>La table <strong>spip_mot_articles</strong> est devenue <strong>spip_mots_liens</strong> et du coup <strong>spip_mots_articles.id_article</strong> devient <strong>spip_mots_liens.id_objet</strong></p> <p>Merci d'avoir pris le temps de regarder<small class="fine d-inline"> </small>! :)</p> <p>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<small class="fine d-inline"> </small>!</p> <p>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<small class="fine d-inline"> </small>!<br class="autobr"> Mike</p> Migration d'un squelette de SPIP2 vers SPIP3 2012-11-02T13:56:17Z https://files.spip.net/Migration-d-un-squelette-de-SPIP2-vers-SPIP3#comment462786 2012-11-02T13:56:17Z <p>Bonjour Mike.</p> <p>Dites-moi si ra ré-écriture suivante marche avec la 2.1 :</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code><div class="result_rm"> <?php /********************************************************************* * RECHERCHE MULTI-CRITERES - MODELE AFFICHAGE DES RESULTATS * * @author * -2008-08: [Dominique (Dom) Lepaisant->www.tispip.etab.ac-caen.fr] * -2008-08: [Stéphanie De Nadaï->www.webdesigneuse.net] * - [Paul Sanchez->www.Netdeveloppeur.com] (contrib initiale) * * @copyright * Ce programme est un logiciel libre distribue sous licence GNU/GPL. *********************************************************************/ $url = parse_url($_SERVER['QUERY_STRING']); $param = $url['path']; $pos = 0; $indice = 255; if (_request('idmot')) { // Récupération du nombre de jours // pour periodicité de la rechercher $nbjour = intval(_request('nbjour')); // Récupération du nombre de jours // pour periodicité de la rechercher if (_request('onlyrub')) { $idonlyrub = intval(_request('rubnum')); } else $idonlyrub = 0; // 1 = Tous les mots doivent être associés aux articles trouvés $allword = intval(_request('allword')); $sql_in_mot = implode(',', _request('idmot') ); $nbmot = count(_request('idmot')); $result = sql_select('id_mot, titre', 'spip_mots', 'id_mot IN ('.$sql_in_mot.')', '', 'id_mot,titre"'); $tabmot = ""; $nbcol = 0; $nbcolmax = 4; if ($result) { $compt = 0; while ($row = sql_fetch($result)) { extract($row); $titre = supprimer_numero($titre); if ($nbcol == $nbcolmax) { $nbcol = 0; } $tabmot .= "<a class=\"spanblock txtgris\" href=\"./spip.php?page=mot&mots[]=$id_mot\"><span class=\"cle\">$titre</span></a>"; $nbcol += 1; } sql_free($result); } $sql_where[] = "spip_mots_articles.id_mot IN (".$sql_in_mot.") "; if ($nbjour) { $datedeb = date("Y-m-d", mktime(0, 0, 0, date("m"), (date("d") - $nbjour), date("Y"))); $sql_where[] = "spip_articles.date >= '$datedeb' "; } if ($idonlyrub) { $sql_where[] = "spip_rubriques.id_rubrique = $idonlyrub "; } $sql_where[] = "spip_articles.statut = 'publie' GROUP BY spip_articles.id_article"; if ($order) { $sql_order = "spip_rubriques.id_rubrique, NUM DESC, spip_mots_articles.id_mot, spip_articles.date DESC"; } else { $sql_order = "NUM DESC, spip_mots_articles.id_mot, spip_rubriques.id_rubrique, spip_articles.date DESC"; } $result = sql_select('COUNT(*) AS num, spip_articles.id_article, spip_rubriques.id_rubrique, spip_rubriques.titre AS titrerub', 'spip_articles INNER JOIN spip_rubriques ON spip_rubriques.id_rubrique = spip_articles.id_rubrique INNER JOIN spip_mots_articles ON spip_mots_articles.id_article = spip_articles.id_article', $sql_where, '', $sql_order); $nbart = 0; $resultataffiche = ""; if ($result) { $titrerub = supprimer_numero($titrerub); $idrub = 0; $listidmot2 = ""; $listidmotprec = ""; while ($row = sql_fetch($result)) { extract($row); if (($num != $nbmot) && ($allword)) { break; } if ($idrub != $id_rubrique) { if (($pospoint = strrpos($titrerub, ". ")) === FALSE) { $titrerub2=$titrerub; } else { if (is_numeric(substr($titrerub, 0, $pospoint)) == false) $titrerub2 = $titrerub; else $titrerub2 = substr($titrerub, $pospoint + 2); } if ($order) { $resultataffiche.= '<p><a href="'. generer_url_entite($id_rubrique, 'rubrique') ."\">$titrerub2 :</a></p>"; } } $result2 = sql_select('spip_articles.id_article AS artid,spip_articles.id_secteur AS id_secteur, spip_articles.titre AS titreart, spip_articles.date, spip_mots.id_mot, spip_mots.titre AS titremot', 'spip_articles INNER JOIN spip_mots_articles ON spip_mots_articles.id_article = spip_articles.id_article INNER JOIN spip_mots ON spip_mots.id_mot = spip_mots_articles.id_mot ', "spip_articles.id_article = $id_article AND spip_mots_articles.id_mot IN (".$sql_in_mot.") AND statut = 'publie' ", '', 'spip_mots.id_mot'); if ($result2) { $listmot = "<h4 class=\"titremots_mc\">"; $titrearticle = ""; $dataffich = ""; $idart = 0; while ($row2 = sql_fetch($result2)) { extract($row2); $listidmot2 .= "$id_mot,"; if ($idart == 0) { $titrearticle = supprimer_numero($titreart); if (!(($pospoint = strpos($titrearticle, '.')) === FALSE)) { if (is_numeric(substr($titrearticle, 0, $pospoint)) == true) $titrearticle = substr($titrearticle, $pospoint + 2); } if (!(($pospoint = strpos($titremot, '.')) === FALSE)) { if (is_numeric(substr($titremot, 0, $pospoint)) == true) $titremot = substr($titremot, $pospoint + 2); } $dataffich = date("d/m/Y", strtotime($date)); if ($order) { $nbart += 1; $resultataffiche .= '<li><a class="titrearticle_mc" href="'. generer_url_entite($artid, 'article') ."\">$titrearticle</a> <small>$dataffich </small>"; $resultataffiche .= "$titremot"; } $listmot .= "<a class=\"spanblock\" href=\"./spip.php?page=mot&mots[]=$id_mot\"><span class=\"cle\">$titremot</span></a>"; $idart = 1; } else { $listmot .= "<a class=\"spanblock\" href=\"./spip.php?page=mot&mots[]=$id_mot\"><span class=\"cle\">$titremot</span></a>"; if ($order) { $resultataffiche .= "<a class=\"spanblock\" href=\"./spip.php?page=mot&mots[]=$id_mot\"><span class=\"cle\">$titremot</span></a>"; } } } if ($order) { $resultataffiche .= "</li>"; } sql_free($result2); if (!$order) { if ($listidmot2 != $listmodidprec) { $resultataffiche .= " $listmot </h4>"; } $nbart += 1; switch ($id_secteur) { case 1: $variable = 63; $secteur = "Ma classe"; break; case 3: $variable = 66; $secteur = "Applications"; break; case 4: $variable = 65; $secteur = "Tutoriels"; break; case 5: $variable = 64; $secteur = "Liens"; break; } $resultataffiche .= '<li class="br"><a class="titrearticle_mc" href="'. generer_url_entite($id_article, 'article'). "\">$titrearticle</a><small>publié le : <em>$dataffich</em> , dans la rubrique <em><a href=\"". generer_url_entite($id_secteur,'rubrique') ."&mots[]=$variable\">$secteur</a></em></small></li>"; $listmodidprec = $listidmot2; $listidmot2 = ""; } } $idrub = $id_rubrique; } sql_free($result); if($nbart == 0 || $nbart == 1) $nbart_txt = "<:rmc:article_trouve:>"; else $nbart_txt = "<:rmc:articles_trouves:>"; echo "<div class=\"contre-encart\">"; echo "<p class=\"mots_mc\"><span class=\"spanblock \">Mots séléctionnés : </span><br />".substr($tabmot, 0)." </p>"; if($nbart == 0 ) $nbart_txt = "Aucun article ne correspond à votre recherche"; else if($nbart == 1 ) $nbart_txt = " article correspond à votre recherche"; else $nbart_txt = "articles correspondent à votre recherche"; if($nbart == 0 ) echo "<p class=\"mots_mc\"> $nbart_txt<br /><a href=\"#SELF\">Nouvelle recherche</a></p>"; else echo "<p class=\"mots_mc\"> $nbart $nbart_txt<br /><a href=\"#SELF\">Nouvelle recherche</a></p>"; echo '<div class="liste-articles">'.$resultataffiche."</div></div>"; if($nbart) echo "<br class=\"dixpixels\" /><p class=\"mots_mc\"><a href=\"#SELF\">Nouvelle recherche</a></p>"; } else { echo "<p class=\"mots_mc\">Aucun article ne correspond à votre recherche</p>"; } } else { echo "<div class=\"mots_mc\"><:rmc:selectionner_mot:></div>"; // inutile si form recherche inclus // echo "<br /><a href=\"".$_SERVER['HTTP_REFERER']."\" onclick=\"javascript:history.back(); return false;\">Retour</a></p>"; } ?> </div></code></pre></div> <p>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)</p> <p>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.)</p> Migration d'un squelette de SPIP2 vers SPIP3 2012-11-02T10:53:45Z https://files.spip.net/Migration-d-un-squelette-de-SPIP2-vers-SPIP3#comment462780 2012-11-02T10:53:45Z <p>Problème résolu, je poste la réponse très simple qui pourra dépanner probablement d'autres personnes</p> <p> La table <strong>spip_mot_articles</strong> est devenue <strong>spip_mots_liens</strong> et du coup <strong>spip_mots_articles_.id_article</strong> devient <strong>spip_mots_liens.id_objet</strong></p> <p>Merci d'avoir pris le temps de regarder<small class="fine d-inline"> </small>! Je suis conscient que comme ça le code php est un peu indigeste<small class="fine d-inline"> </small>! Je pourrais d'ailleurs faire ça plus simplement maintenant sous Spip 3 mais bon<small class="fine d-inline"> </small>!</p> <p>Mike</p> Migration d'un squelette de SPIP2 vers SPIP3 2012-11-02T10:29:31Z https://files.spip.net/Migration-d-un-squelette-de-SPIP2-vers-SPIP3#comment462778 2012-11-02T10:29:31Z <p>Je te mets un lien vers la version qui fonctionne sur SPIP 2.1</p> <p><a href="http://www.librairie-interactive.com/?page=recherche&type_rech=multi" class="spip_url spip_out auto" rel="nofollow external">http://www.librairie-interactive.com/?page=recherche&type_rech=multi</a></p> <p>Je pense savoir d'où vient le problème mais je ne suis pas assez compétent en SQL pour le résoudre. <br class="autobr"> En effet, je viens de réaliser que dans la nouvelle structure de la base de SPIP 3, la table <strong>spip_mots_articles</strong> 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 <strong>idmot</strong> et me dit qu'il n'y a pas de résultats.</p> <p>Reste à comprendre les jointures de la nouvelle base pour modifier le SQL dans mon code.</p> Migration d'un squelette de SPIP2 vers SPIP3 2012-11-02T00:09:24Z https://files.spip.net/Migration-d-un-squelette-de-SPIP2-vers-SPIP3#comment462769 2012-11-02T00:09:24Z <p>pfiouuuu <br class="manualbr">On peut voir la page de recherche<small class="fine d-inline"> </small>? <br class="manualbr">Et aussi une petite description de comment les résultats sont affichés<small class="fine d-inline"> </small>?</p> Migration d'un squelette de SPIP2 vers SPIP3 2012-11-01T20:29:24Z https://files.spip.net/Migration-d-un-squelette-de-SPIP2-vers-SPIP3#comment462768 2012-11-01T20:29:24Z <p>Bonjour<small class="fine d-inline"> </small>!</p> <p>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.</p> <p>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.</p> <p>Si quelqu'un pouvait m'en dire plus ou jeter un œil à mon code, ce serait cool<small class="fine d-inline"> </small>!</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code><div class="result_rm"> <?php ###################################################################### # RECHERCHE MULTI-CRITERES - MODELE AFFICHAGE DES RESULTATS # # # # Auteurs : Dominique (Dom) Lepaisant # # www.tispip.etab.ac-caen.fr # # Stéphanie De Nadaï - www.webdesigneuse.net # # - Fev 2008 # # # # Adaptation de la contrib de Paul Sanchez - www.Netdeveloppeur.com # # # # Ce programme est un logiciel libre distribue sous licence GNU/GPL. # # Pour plus de details voir le fichier COPYING.txt # ###################################################################### $url = parse_url($_SERVER['QUERY_STRING']); $param = $url['path']; $pos = 0; $indice = 255; if (isset($_POST['idmot'])) { // Récupération du nombre de jours // pour periodicité de la rechercher $nbjour = 0; if (isset($_POST['nbjour'])){ $nbjour = $_POST['nbjour']; } // Récupération du nombre de jours // pour periodicité de la rechercher $idonlyrub = 0; if (isset($_POST['onlyrub'])) { if (isset($_POST['rubnum'])) { $idonlyrub = $_POST['rubnum']; } } // 1 = Tous les mots doivent être associés aux articles trouvés $allword = 0; if (isset($_POST['allword'])) { $allword = 1; } $nbmot = count($_POST['idmot']); $sql = "SELECT id_mot, titre FROM spip_mots WHERE id_mot IN (". implode(",", $_POST['idmot']) .") GROUP BY id_mot,titre"; $result = mysql_query($sql); $tabmot = ""; $nbcol = 0; $nbcolmax = 4; if ($result) { $compt = 0; while ($row = mysql_fetch_assoc($result)) { extract($row); $titre = supprimer_numero($titre); if ($nbcol == $nbcolmax) { $nbcol = 0; } $tabmot .= "<a class=\"spanblock txtgris\" href=\"./spip.php?page=mot&mots[]=$id_mot\"><span class=\"cle\">$titre</span></a>"; $nbcol += 1; } mysql_free_result($result); } $sql = "SELECT COUNT(*) AS num, spip_articles.id_article, spip_rubriques.id_rubrique, spip_rubriques.titre AS titrerub "; $sql .= "FROM spip_articles INNER JOIN spip_rubriques ON spip_rubriques.id_rubrique = spip_articles.id_rubrique "; $sql .= "INNER JOIN spip_mots_articles ON spip_mots_articles.id_article = spip_articles.id_article "; $sql .= " WHERE spip_mots_articles.id_mot IN (". implode(",", $_POST['idmot']) .") "; $datedeb = date("Y-m-d", mktime(0, 0, 0, date("m"), (date("d") - $nbjour), date("Y"))); if ($nbjour != 0) { $sql .= "AND spip_articles.date >= '$datedeb' "; } if ($idonlyrub != 0) { $sql .= "AND spip_rubriques.id_rubrique = $idonlyrub "; } $sql .= "AND spip_articles.statut LIKE 'publie' GROUP BY spip_articles.id_article"; if ($order == 1) { $sql .= " ORDER BY spip_rubriques.id_rubrique, NUM DESC, spip_mots_articles.id_mot, spip_articles.date DESC"; } else { $sql .= " ORDER BY NUM DESC, spip_mots_articles.id_mot, spip_rubriques.id_rubrique, spip_articles.date DESC"; } $result = mysql_query($sql); //$nbart = mysql_num_rows($result); $nbart = 0; $resultataffiche = ""; if ($result) { $titrerub = supprimer_numero($titrerub); $idrub = 0; $listidmot2 = ""; $listidmotprec = ""; while ($row = mysql_fetch_assoc($result)) { extract($row); if (($num != $nbmot) && ($allword == 1)) { break; } if ($idrub != $id_rubrique) { if (($pospoint = strrpos($titrerub, ". ")) === FALSE) { $titrerub2=$titrerub; } else { if (is_numeric(substr($titrerub, 0, $pospoint)) == false) $titrerub2 = $titrerub; else $titrerub2 = substr($titrerub, $pospoint + 2); } if ($order == 1) { $resultataffiche.= "<p><a href=\"./spip.php?rubrique$id_rubrique\">$titrerub2 :</a></p>"; } } $sql2 = "SELECT spip_articles.id_article AS artid,spip_articles.id_secteur AS id_secteur, spip_articles.titre AS titreart, spip_articles.date, spip_mots.id_mot "; $sql2 .= ", spip_mots.titre AS titremot FROM spip_articles INNER JOIN spip_mots_articles ON spip_mots_articles.id_article = spip_articles.id_article "; $sql2 .= "INNER JOIN spip_mots ON spip_mots.id_mot = spip_mots_articles.id_mot "; $sql2 .= "WHERE spip_articles.id_article = $id_article AND spip_mots_articles.id_mot IN (". implode(",", $_POST['idmot']) .") AND statut LIKE 'publie' "; $sql2 .= "ORDER BY spip_mots.id_mot"; $result2 = mysql_query($sql2); if ($result2) { $listmot = "<h4 class=\"titremots_mc\">"; $titrearticle = ""; $dataffich = ""; $idart = 0; while ($row2 = mysql_fetch_assoc($result2)) { extract($row2); $listidmot2 .= "$id_mot,"; if ($idart == 0) { $titrearticle = supprimer_numero($titreart); if (!(($pospoint = strpos($titrearticle, '.')) === FALSE)) { if (is_numeric(substr($titrearticle, 0, $pospoint)) == true) $titrearticle = substr($titrearticle, $pospoint + 2); } if (!(($pospoint = strpos($titremot, '.')) === FALSE)) { if (is_numeric(substr($titremot, 0, $pospoint)) == true) $titremot = substr($titremot, $pospoint + 2); } $dataffich = date("d/m/Y", strtotime($date)); if ($order == 1) { $nbart += 1; $resultataffiche .= "<li> <a class=\"titrearticle_mc\" href=\"./spip.php?article$artid\">$titrearticle</a> <small>$dataffich </small>"; $resultataffiche .= "$titremot"; } $listmot .= "<a class=\"spanblock\" href=\"./spip.php?page=mot&mots[]=$id_mot\"><span class=\"cle\">$titremot</span></a>"; $idart = 1; } else { $listmot .= "<a class=\"spanblock\" href=\"./spip.php?page=mot&mots[]=$id_mot\"><span class=\"cle\">$titremot</span></a>"; if ($order == 1) { $resultataffiche .= "<a class=\"spanblock\" href=\"./spip.php?page=mot&mots[]=$id_mot\"><span class=\"cle\">$titremot</span></a>"; } } } if ($order == 1) { $resultataffiche .= "</li>"; } mysql_free_result($result2); if ($order == 0) { if ($listidmot2 != $listmodidprec) { $resultataffiche .= " $listmot </h4>"; } $nbart += 1; if ($id_secteur == 1) {$variable = 63; $secteur = "Ma classe";} if ($id_secteur == 3) {$variable = 66; $secteur = "Applications";} if ($id_secteur == 4) {$variable = 65; $secteur = "Tutoriels";} if ($id_secteur == 5) {$variable = 64; $secteur = "Liens";} $resultataffiche .= " <li class=\"br\"> <a class=\"titrearticle_mc\" href=\"./spip.php?article$id_article\">$titrearticle</a> <small>publié le : <em>$dataffich</em> , dans la rubrique <em><a href=\"./spip.php?rubrique$id_secteur&mots[]=$variable\">$secteur</a></em></small></li>"; $listmodidprec = $listidmot2; $listidmot2 = ""; } } $idrub = $id_rubrique; } mysql_free_result($result); if($nbart == 0 || $nbart == 1) $nbart_txt = "<:rmc:article_trouve:>"; else $nbart_txt = "<:rmc:articles_trouves:>"; echo "<div class=\"contre-encart\">"; echo "<p class=\"mots_mc\"><span class=\"spanblock \">Mots séléctionnés : </span><br />".substr($tabmot, 0)." </p>"; if($nbart == 0 ) $nbart_txt = "Aucun article ne correspond à votre recherche"; else if($nbart == 1 ) $nbart_txt = " article correspond à votre recherche"; else $nbart_txt = "articles correspondent à votre recherche"; if($nbart == 0 ) echo " <p class=\"mots_mc\"> $nbart_txt <br /> <a href=\"#SELF\">Nouvelle recherche</a></p>"; else echo " <p class=\"mots_mc\"> $nbart $nbart_txt <br /> <a href=\"#SELF\">Nouvelle recherche</a></p>"; echo " <div class=\"liste-articles\">" .$resultataffiche ." </div> </div>"; if($nbart != 0 ) echo " <br class=\"dixpixels\" /> <p class=\"mots_mc\"><a href=\"#SELF\">Nouvelle recherche</a></p>"; } else { echo "<p class=\"mots_mc\">Aucun article ne correspond à votre recherche</p>"; } } else { echo "<div class=\"mots_mc\"><:rmc:selectionner_mot:></div>"; # inutile si form recherche inclus # echo "<br /><a href=\"".$_SERVER['HTTP_REFERER']."\" onclick=\"javascript:history.back(); return false;\">Retour</a></p>"; } ?> </div></code></pre></div> Migration d'un squelette de SPIP2 vers SPIP3 2012-10-13T17:43:36Z https://files.spip.net/Migration-d-un-squelette-de-SPIP2-vers-SPIP3#comment462187 2012-10-13T17:43:36Z <p>Oui,<br class="autobr"> Bravo et merci<small class="fine d-inline"> </small>! ^^</p> Migration d'un squelette de SPIP2 vers SPIP3 2012-10-13T13:19:07Z https://files.spip.net/Migration-d-un-squelette-de-SPIP2-vers-SPIP3#comment462179 2012-10-13T13:19:07Z <p>Salut Abel</p> <p>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<small class="fine d-inline"> </small>;-)</p> <p>Problème résolu donc. Bonne continuation.</p> Migration d'un squelette de SPIP2 vers SPIP3 2012-10-13T12:45:58Z https://files.spip.net/Migration-d-un-squelette-de-SPIP2-vers-SPIP3#comment462175 2012-10-13T12:45:58Z <p>Bonjour,</p> <p>Alors si je mets <code class="spip_code spip_code_inline" dir="ltr">{mots.id_groupe="9"}{mots.objet='breve'}</code> ça ne fonctionne pas. <br class="autobr"> Mais si je ne mets que <code class="spip_code spip_code_inline" dir="ltr">{mots.id_groupe="9"}</code> alors cela semble fonctionner.</p> <p>Abel</p> Migration d'un squelette de SPIP2 vers SPIP3 2012-10-13T10:11:56Z https://files.spip.net/Migration-d-un-squelette-de-SPIP2-vers-SPIP3#comment462172 2012-10-13T10:11:56Z <p>Bonjour.</p> <p>Vous (Abel) écriviez :</p> <blockquote class="spip"> <p> le critère id_groupe semble ne plus fonctionner sur une boucle «<small class="fine d-inline"> </small>breves<small class="fine d-inline"> </small>» dans SPIP 3 (pour sélectionner les brèves liées à un groupe de mots-clés)</p> </blockquote> <p>Et je (gilcot) ai répondu</p> <blockquote class="spip"> <p>Est-ce que l'erreur persiste quand on enlève <code class="spip_code spip_code_inline" dir="ltr">{id_groupe="9"}</code> et qu'on recalcule la page<small class="fine d-inline"> </small>?</p> </blockquote> <p>Et vous (Abel) confirmez</p> <blockquote class="spip"> <p>Si j'enlève le critère ça marche sans problème.<br class="manualbr">... mais c'est tout de même étrange.</p> </blockquote> <p>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<small class="fine d-inline"> </small>? <br class="manualbr">A tout hasard (je ne peux pas tester là), remplacer <code class="spip_code spip_code_inline" dir="ltr">{id_groupe="9"}</code> par <code class="spip_code spip_code_inline" dir="ltr">{mots.id_groupe="9"}{mots.objet='breve'}</code> pour voir ce que ça donne</p> Migration d'un squelette de SPIP2 vers SPIP3 2012-10-12T14:15:54Z https://files.spip.net/Migration-d-un-squelette-de-SPIP2-vers-SPIP3#comment462152 2012-10-12T14:15:54Z <p>Bonjour,<br class="autobr"> Voici l'erreur exacte :</p> <table class="table spip"> <caption>1 Erreur(s) dans le squelette</caption> <tbody> <tr class="row_odd odd"> <td>Numéro</td> <td>message</td> <td>squelette</td> <td>boucle</td> <td>Ligne</td></tr> <tr class="row_even even"> <td>1</td> <td>Critère inconnu =</td> <td>squelettes/inclure/coldroite.html</td> <td>_fromtheweb</td> <td>63</td></tr> </tbody> </table> <p>Et la boucle n'affiche rien.</p> <p>Si j'enlève le critère ça marche sans problème.<br class="autobr"> Pour le moment j'ai trouvé un autre moyen d'afficher ce que je veux mais c'est tout de même étrange.</p> Migration d'un squelette de SPIP2 vers SPIP3 2012-10-07T06:15:06Z https://files.spip.net/Migration-d-un-squelette-de-SPIP2-vers-SPIP3#comment461952 2012-10-07T06:15:06Z <p>Bonjour.</p> <p>Quelle est l'erreur exacte<small class="fine d-inline"> </small>?</p> <p>Est-ce que l'erreur persiste quand on enlève <code class="spip_code spip_code_inline" dir="ltr">{id_groupe="9"}</code> et qu'on recalcule la page<small class="fine d-inline"> </small>?</p> Migration d'un squelette de SPIP2 vers SPIP3 2012-10-01T09:03:52Z https://files.spip.net/Migration-d-un-squelette-de-SPIP2-vers-SPIP3#comment461706 2012-10-01T09:03:52Z <p>Bonjour, <br class="autobr"> 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). <a href="http://www.spip.net/fr_article906.html" class="spip_url spip_out auto" rel="nofollow external">http://www.spip.net/fr_article906.html</a></p> <p>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 » :<br class="autobr"> <code class="spip_code spip_code_inline" dir="ltr"><BOUCLE_nom_de_boucle(BREVES){id_groupe="9"}{0,5}{id_rubrique="1"}{!par date}{doublons}></code></p> <p>Je précise que la boucle se situe dans un « inclure ».</p> <p>Merci<small class="fine d-inline"> </small>!</p> Migration d'un squelette de SPIP2 vers SPIP3 2012-09-26T12:51:50Z https://files.spip.net/Migration-d-un-squelette-de-SPIP2-vers-SPIP3#comment461559 2012-09-26T12:51:50Z <p>C'est fait</p> Migration d'un squelette de SPIP2 vers SPIP 3.0 2012-05-26T16:55:08Z https://files.spip.net/Migration-d-un-squelette-de-SPIP2-vers-SPIP3#comment457655 2012-05-26T16:55:08Z <p>Bonjour,</p> <p>il faudrait mettre cet article dans la rubrique « Suivre les versions de SPIP » : <br class="autobr"> <a href="http://www.spip-contrib.net/Suivre-les-versions-de-SPIP" class="spip_url spip_out auto" rel="nofollow external">http://www.spip-contrib.net/Suivre-les-versions-de-SPIP</a></p> <p>Sinon on ne s'y retrouve pas, non<small class="fine d-inline"> </small>?</p> Migration d'un squelette de SPIP2 vers SPIP 3.0 2012-05-24T09:39:02Z https://files.spip.net/Migration-d-un-squelette-de-SPIP2-vers-SPIP3#comment457566 2012-05-24T09:39:02Z <p>Sisi, <code class="spip_code spip_code_inline" dir="ltr">{par num titre}</code> marche toujours... ce n'est que la balise #TITRE qui a le numéro supprimé d'office.</p> Migration d'un squelette de SPIP2 vers SPIP 3.0 2012-05-23T23:08:52Z https://files.spip.net/Migration-d-un-squelette-de-SPIP2-vers-SPIP3#comment457546 2012-05-23T23:08:52Z <p>le critere <i>par num titre, id_document</i> ne marche plus, car les numeros devant les titres sont maintenant ignore.</p> <p>c'est quoi le nouveau critere pour prendre en compte les numeros de titres<small class="fine d-inline"> </small>? la documentation n'est ps encore a jour :(</p> Migration d'un squelette de SPIP2 vers SPIP 3.0 2012-05-05T19:54:23Z https://files.spip.net/Migration-d-un-squelette-de-SPIP2-vers-SPIP3#comment456940 2012-05-05T19:54:23Z <p>Un chapitre majeur de modification de SPIP 3 reste a expliciter :<br class="autobr"> la gestion des <strong>mots-clés</strong> est a refondre assez complètement si vous utilisez ce domaine...<br class="autobr"> car les tables dsupport ont completement changé.</p> <p>Voir les articls descriptifs SPIP3 (actuellement seulement en interface privée, en attendant leur publication publique a la sortie officielle de SPIP3)</p>