Tri alphabétique tout en SPIP - commentaires Tri alphabétique tout en SPIP 2015-12-16T22:06:06Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment484981 2015-12-16T22:06:06Z <p>Je crois que je suis bon pour une cure d'aspirine et surtout de PHP ... <br class="autobr"> Je n'arrive résolument pas à reconstituer la chaine de caractères après l'avoir passée dans un tableau ...</p> <p>J'ai tenté un array sur la fonction <strong>detect_lettrine</strong> mais je n'arrive résolument pas à reconstituer la chaine à partir de cet array.</p> <p><strong>Exemple :</strong></p> <div class="precode"><pre class="spip_code spip_code_block language-php" dir="ltr" style="text-align:left;" data-language="php"><code>function detect_lettrine($texte,$lettre){ //fonction SPIP pour le filtre url_nettoyer qui eliminera les accents include_spip('action/editer_url'); print_r($texte); //compte les mots de chaque chaine et les place dans un tableau if ($mots = str_word_count($texte, 1)) { print_r($mots); // on stocke la 1ère lettre de chaque mot dans un tableau $first_lettre = array(); foreach($mots as $mot) { //print_r($mot); //je récupère la première lettre de la chaine $first_lettre = mb_substr($mot,0,1,'UTF-8'); $first_lettre = strtoupper($first_lettre); $first_lettre = str_replace($lettre, '<strong class="lettrine">'.$lettre.'</strong>', $first_lettre); //je remplace tous les caractère correspondants à la lettre correspondant à l'url print_r($first_lettre); //print_r($length); //si elle correspond à la lettre de l'url if(strtoupper(url_nettoyer($first_lettre,2)) == $lettre){ $lettre_avec_encadrement = '<strong class="lettrine">'.$first_lettre.'</strong>'; //print_r($lettre_avec_encadrement); $mots = substr_replace($mots, $lettre_avec_encadrement, 0, $length); //print_r($mots); } } } return $texte; }</code></pre></div> <p>J'ai aussi tenté une adaptation de la fonction <strong>premiere_lettre</strong> indiquée pour l'affichage du menu alphabet mais là encore je n'arrive pas à reconstituer la chaine.</p> <p><strong>Exemple :</strong></p> <div class="precode"><pre class="spip_code spip_code_block language-php" dir="ltr" style="text-align:left;" data-language="php"><code>function premieres_lettres_sur($texte, $lettre) { //print_r($texte); $texte = sansle($texte); $texte = unicode2charset(utf_8_to_unicode($texte), 'iso-8859-1'); $a = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ"; $b = "AAAAAAaaaaaaOOOOOOooooooEEEEeeeeCcIIIIiiiiUUUUuuuuyNn"; $texte=strtr($texte, $a, $b); // on retire les accents $texte = strtr($texte, "\xA1\xAA\xBA\xBF\xC0\xC1\xC2\xC3\xC5\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD8\xD9\xDA\xDB\xDD\xE0\xE1\xE2\xE3\xE5\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF8\xF9\xFA\xFB\xFD\xFF", "!ao?AAAAACEEEEIIIIDNOOOOOUUUYaaaaaceeeeiiiidnooooouuuyy"); $texte = strtr($texte, array("\xC4"=>"Ae", "\xC6"=>"AE", "\xD6"=>"Oe", "\xDC"=>"Ue", "\xDE"=>"TH", "\xDF"=>"ss", "\xE4"=>"ae", "\xE6"=>"ae", "\xF6"=>"oe", "\xFC"=>"ue", "\xFE"=>"th")); //array des mots interdits à compléter $mots_interdits = array('guide','','Autres','autre','&#58;','quot','sous','avec','sans','pour','etc','dans','general','autoconstruit','autoconstruire','autoconstruction','autoconstruites','autoconstruits','autoconstruite','Autoconstruction'); //print_r($mots_interdits); // liste des mots if ($mots = str_word_count($texte, 1, $a)) { // on stocke la 1ère lettre de chaque mot dans un tableau $lettres = array(); foreach($mots as $mot) { //print_r($mots); // on ne prend en compte que les mots d'au moins 4 octets if (iconv_strlen($mot) > 3 AND !in_array($mot,$mots_interdits)){ $lettres = array_merge($lettres, array(strtoupper(substr($mot,0,1)))); $lettres = str_replace($lettre, '<strong class="lettrine">'.$lettre.'</strong>', $lettres); //$texte = implode($lettres); //print_r($texte); } } if (count($lettres)) { //print_r($lettres); $texte = $lettres; print_r($texte); } } return $texte; }</code></pre></div> <p>Bref, dans les deux cas j'arrive à selectionner les bonnes lettres et les surligner c'est une bonne chose, mais impossible de reconstituer la chaine proprement. <br class="autobr"> C'est vraiment la dernière partie fonctionnelle qu'il me manque avant de pouvoir lacher le kraken<small class="fine d-inline"> </small>!</p> <p>Si quelqu'un à une idée j'en serais très reconnaissant :)</p> <p>Merci d'avance</p> Tri alphabétique tout en SPIP 2015-12-15T19:00:26Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment484964 2015-12-15T19:00:26Z <p>Pas de soucis pour la mise en place, dans le squelette, ça ça roule. <br class="autobr"> C'est justement l'array que je n'arrive pas à construire et à tester. <br class="autobr"> Je bosse en local, du coup pas possible de mettre une URL de test :/ <br class="autobr"> J'aimerais pouvoir surligner chaque lettre dans chaque titre comme sur le l'image jointe.</p> <p>Merci pour le coup de main<small class="fine d-inline"> </small>!</p> Tri alphabétique tout en SPIP 2015-12-15T17:36:21Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment484962 2015-12-15T17:36:21Z <p>Bon bon bon,<br class="autobr"> c'est à la fin, je suppose que c'est bien au moment de l'affichage des titres qu'il faut la fonction <i>detect_lettrine</i><small class="fine d-inline"> </small>?</p> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code>[(#REM) 3) Affichage des articles correspondant à la lettre active (= dans l'URL) ] #SET{lettre,#ENV{lettre,#GET{lettre}}} <B_articles_lettre> <ul> <BOUCLE_articles_lettre(ARTICLES){id_article IN #GET{lettres/#GET{lettre}}}> <li>[(#TITRE|detect_lettrine{#ENV{lettre}})]</li> </BOUCLE_articles_lettre> </ul> </B_articles_lettre></code></pre></div> <p>Je disais que tu peux modifier cette fonction avec à son début la construction d'un array des mots de la chaine de manière à ce que chaque mot soit testé (donc avec un foreach) avant d'être retourné modifié ou pas, enfin, si j'ai bien compris ce que tu veux faire.<br class="autobr"> Peux-tu mettre une URL de test pour que l'on puisse <strong>voir</strong> ce que tu veux faire<small class="fine d-inline"> </small>?</p> Tri alphabétique tout en SPIP 2015-12-15T14:31:28Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment484956 2015-12-15T14:31:28Z <p>Je m'enmele les crayons là dessus ... je surligne ARRAY et mon tableau ne s'affiche plus ...</p> <p>Help</p> Tri alphabétique tout en SPIP 2015-12-15T13:34:10Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment484953 2015-12-15T13:34:10Z <p>Oui, tu dois adapter le code, mais il n'aurait pas été aussi lisible, il faut récupérer les mots du titre dans un array $mots et faire un</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>foreach($mots as $mot){ // if ici la fonction de traitement de chaque mot // reconstruire le nouveau titre $titre_nouveau.=$mot; } return $titre_nouveau;</code></pre></div> Tri alphabétique tout en SPIP 2015-12-15T13:28:03Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment484952 2015-12-15T13:28:03Z <p>Avec la fonction « premiere_lettres » utilisée plus haut j'obtiens un array :</p> <pre>Array ( [0] => S ) Array ( [0] => S [1] => C ) </pre> <p>Pour un titre : <strong>Semis • Canne à semer</strong> ou <strong>S</strong>emis et <strong>s</strong>emer devraient êtres surlignés.</p> <p>[mode boulet]</p> Tri alphabétique tout en SPIP 2015-12-15T13:19:32Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment484951 2015-12-15T13:19:32Z <p>comme dit plus haut j'ai réussi à le faire fonctionner, j'ai remplacé strtolower par strtoupper et ça marche. par contre, toujours comme dit plus haut c'est à chaque mots qui commencent par la lettre selectionnée qu'il serait souhaitable de surligner. <br class="autobr"> Je me demande si intégrer la partie surlignement</p> <div class="precode"><pre class="spip_code spip_code_block language-php" dir="ltr" style="text-align:left;" data-language="php"><code>$lettre_avec_encadrement = '<strong class="lettrine">'.$first_lettre.'</strong>'; </code></pre></div> <p> ne serait pas plus pratique.</p> Tri alphabétique tout en SPIP 2015-12-15T13:12:08Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment484950 2015-12-15T13:12:08Z <p>Qu'est-ce que tu n'arrives pas à faire<small class="fine d-inline"> </small>?<br class="autobr"> Quelle est la balise qui affiche ta liste des items dans ton squelette<small class="fine d-inline"> </small>? si je suppose que c'est un #TITRE tu mets <br class="autobr"> <code class="spip_code spip_code_inline" dir="ltr">[(#TITRE|detect_lettrine{#ENV{lettre}})]</code><br class="autobr"> si c'est le #CHAPO tu mets<br class="autobr"> <code class="spip_code spip_code_inline" dir="ltr">[(#CHAPO|detect_lettrine{#ENV{lettre}})]</code><br class="autobr"> Dans l'url tu ajoutes le parametre lettre=a (ou lettre=b …)<br class="autobr"> et sur la liste des titres, chaque titre commençant par a comme « Ah que la vie est belle » ou « Anticipation planétaire » verra sa première lettre mise en gras.<br class="autobr"> Tu peux aussi jouer sur la class CSS <code class="spip_code spip_code_inline" dir="ltr">.lettrine{color:red}</code> pour colorer cette première lettre trouvée.<br class="autobr"> ++</p> Tri alphabétique tout en SPIP 2015-12-15T13:03:54Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment484949 2015-12-15T13:03:54Z <p>Ah erratum, j'ai reussi à le faire fonctionner mais il ne me fait la selection que sur le premier mot de la chaine alors qu'il serait plus pertinent de faire le surlignement sur tous les mots de la chaine qui commencent par la lettre, je continue à creuser ...</p> <p>En tous cas merci ça se présente plutot bien :) :) :)</p> Tri alphabétique tout en SPIP 2015-12-15T12:49:59Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment484948 2015-12-15T12:49:59Z <p>Merci pour cette réponse, mais je n'arrive pas à implémenter cette solution ... <br class="autobr"> y'aurait il possibilité de m'envoyer un exemple dans une boucle<small class="fine d-inline"> </small>?</p> <p>Merci d'avance</p> Tri alphabétique tout en SPIP 2015-12-15T03:26:44Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment484944 2015-12-15T03:26:44Z <p>Bonsoir,<br class="autobr"> je ne vois pas bien pour les deux points de la lettre N …<br class="autobr"> Concernant le surlignage, un javascript serait surement mieux, voici une fonction créée pour l'occasion en php / SPIP qui est le moins gourmande possible.<br class="autobr"> Pour récupérer la lettre appelée dans l'url, il te faut vérifier que <code class="spip_code spip_code_inline" dir="ltr">#ENV{lettre}</code> fonctionne bien, à partir de là, il te faut tester la première lettre de chaque mot avec</p> <p><code class="spip_code spip_code_inline" dir="ltr">[(#TITRE|detect_lettrine{#ENV{lettre}})]</code></p> <div class="precode"><pre class="spip_code spip_code_block language-php" dir="ltr" style="text-align:left;" data-language="php"><code>/** * Retourne la première lettre d'une chaine encadré d'un strong * seulement si cette lettre correspond au caractère demandé * * @param string $chaine * Chaine de recherche * @param string $lettre * Caractère recherché * @return string * La chaine modifiée * @example * <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align: left;"><code> * #SET{titre,'Écriture te voila !'} [(#GET{titre}|detect_lettrine{'e'})] * </code></pre></div> * **/ function detect_lettrine($chaine,$lettre){ //fonction SPIP pour le filtre url_nettoyer qui eliminera les accents include_spip('action/editer_url'); //la première lettre de la chaine $first_lettre = mb_substr($chaine,0,1,'UTF-8'); $length = strlen($first_lettre); //si elle correspond à la lettre de l'url if(strtolower(url_nettoyer($first_lettre,2)) == $lettre){ $lettre_avec_encadrement = '<strong class="lettrine">'.$first_lettre.'</strong>'; $chaine = substr_replace($chaine, $lettre_avec_encadrement, 0, $length); } return $chaine; }</code></pre></div> Tri alphabétique tout en SPIP 2015-12-14T23:05:09Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment484943 2015-12-14T23:05:09Z <p>Salut,</p> <p>Finalement le tri ne fonctionnait pas tout à fait comme il faut dans le sens ou je me suis retrouvé avec des tris un peu bizarre. <br class="autobr"> J'ai bien fait le ménage dans ce que je voulais et ajouté quelques bricoles pour que ça tourne. Cette fois j'arrive à un beau résultat. <br class="autobr"> à la seule exception c'est qu'il me colle les doubles point dans le classement de la lettre N<small class="fine d-inline"> </small>?!</p> <p>J'ai tourné le truc dans tous les sens mais rien y fait. Je n'arrive pas à me débarrasser de ce fichu double point. <br class="autobr"> Je ne sais vraiment pas quoi faire</p> <p>Voici la fonction que j'ai adapté :</p> <div class="precode"><pre class="spip_code spip_code_block language-php" dir="ltr" style="text-align:left;" data-language="php"><code>/** * Retourne une liste de lettres correspondant aux 1ères lettres des mots d'un texte. * * @param string $texte * @return string|array */ function premieres_lettres($texte) { //print_r($texte); $a = "ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ"; $texte = strtr($texte, "\xA1\xAA\xBA\xBF\xC0\xC1\xC2\xC3\xC5\xC7\xC8\xC9\xCA\xCB\xCC\xCD\xCE\xCF\xD0\xD1\xD2\xD3\xD4\xD5\xD8\xD9\xDA\xDB\xDD\xE0\xE1\xE2\xE3\xE5\xE7\xE8\xE9\xEA\xEB\xEC\xED\xEE\xEF\xF0\xF1\xF2\xF3\xF4\xF5\xF8\xF9\xFA\xFB\xFD\xFF", "!ao?AAAAACEEEEIIIIDNOOOOOUUUYaaaaaceeeeiiiidnooooouuuyy"); $texte = strtr($texte, array("\xC4"=>"Ae", "\xC6"=>"AE", "\xD6"=>"Oe", "\xDC"=>"Ue", "\xDE"=>"TH", "\xDF"=>"ss", "\xE4"=>"ae", "\xE6"=>"ae", "\xF6"=>"oe", "\xFC"=>"ue", "\xFE"=>"th")); //array des mots interdits à compléter $mots_interdits = array('&#58;','quot','sous','avec','sans','pour','etc','dans','general','autoconstruire','autoconstruction','autoconstruites','autoconstruits','autoconstruite','Autoconstruction'); // liste des mots if ($mots = str_word_count($texte, 1, $a)) { // on stocke la 1ère lettre de chaque mot dans un tableau $lettres = array(); foreach($mots as $mot) { // on ne prend en compte que les mots d'au moins 4 octets if (strlen($mot) > 3 AND !in_array($mot,$mots_interdits)){ $lettres = array_merge($lettres, array(strtoupper(substr($mot,0,1)))); //print_r($lettres); } } if (count($lettres)) { $texte = $lettres; //print_r($texte); } } return $texte; }</code></pre></div> <p>aussi je reviens à la charge avec mon surlignage, j'aimerais bien que les mots ou la première lettre des mots listés pour la lettre selectionnée soient surlignés. Une idée<small class="fine d-inline"> </small>?</p> <p>Merci d'avance :)</p> Tri alphabétique tout en SPIP 2015-12-13T12:48:45Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment484911 2015-12-13T12:48:45Z <p>Génial tout ça<small class="fine d-inline"> </small>!!</p> <p>Par contre une idée pour surligner les mots de la liste associés à ceux de la lettre en cours<small class="fine d-inline"> </small>?</p> <p>En tous cas Merci beaucoup<small class="fine d-inline"> </small>!!</p> Tri alphabétique tout en SPIP 2015-12-13T10:31:08Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment484910 2015-12-13T10:31:08Z <p>Tiens, les envois de notification de ce forum sont très aléatoires je n'ai pas reçu les 2 derniers messages.<br class="autobr"> Tu peux aussi constituer et ajouter un tableau des mots interdits</p> <div class="precode"><pre class="spip_code spip_code_block language-php" dir="ltr" style="text-align:left;" data-language="php"><code>function premieres_lettres($texte) { //array des mots interdits à compléter $mots_interdits = array('avec','sans','pour','etc'); // liste des mots if ($mots = str_word_count($texte, 1, 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ')) { // on stocke la 1ère lettre de chaque mot dans un tableau $lettres = array(); foreach($mots as $mot) { // on ne prend en compte que les mots d'au moins 4 octets if (strlen($mot) > 3 AND !in_array($mot,$mots_interdits)) { $lettres = array_merge($lettres, array(strtoupper(substr($mot,0,1)))); } } if (count($lettres)) { $texte = $lettres; } } return $texte; }</code></pre></div> Tri alphabétique tout en SPIP 2015-12-12T10:55:21Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment484901 2015-12-12T10:55:21Z <p>Salut,</p> <p>Merci pour le coup de patte, j'ai effectué quelques corrections sur la fonction :</p> <div class="precode"><pre class="spip_code spip_code_block language-php" dir="ltr" style="text-align:left;" data-language="php"><code>function premieres_lettres($texte) { // liste des mots if ($mots = str_word_count($texte, 1, 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÖØòóôõöøÈÉÊËèéêëÇçÌÍÎÏìíîïÙÚÛÜùúûüÿÑñ')) { // on stocke la 1ère lettre de chaque mot dans un tableau $lettres = array(); foreach($mots as $mot) { // on ne prend en compte que les mots d'au moins 4 octets if (strlen($mot) > 3) { $lettres = array_merge($lettres, array(strtoupper(substr($mot,0,1)))); } } if (count($lettres)) { $texte = $lettres; } } return $texte; }</code></pre></div> <p>Il ne me manque plus que de pouvoir surligner ou souligner le mot retenu pour la lettre selectionnée.</p> Tri alphabétique tout en SPIP 2015-12-11T20:51:44Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment484898 2015-12-11T20:51:44Z <p>C'est carrément ce qu'il fallait, quelques retouches pour faire ça beau prop' et c'est nickel<small class="fine d-inline"> </small>!</p> <p>Merci beaucoup</p> Tri alphabétique tout en SPIP 2015-12-11T20:03:21Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment484896 2015-12-11T20:03:21Z <p>Hello,</p> <p>Voici une solution. Ça reprend le même principe que l'article de Touti, à savoir stocker les lettres utiisées et les identifiants des articles correspondants, afficher un menu alphabet, et enfin afficher les articles de la lettre sélectionnée, mais avec quelques différences formelles.</p> <p>L'affichage est minimaliste, c'est à adapter bien sûr.</p> <p><strong>Dans le squelette :</strong></p> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code>[(#REM) 1) On fait un tableau contenant les lettres et les articles correspondants. Ces boucles n'affichent rien, elles servent juste à stocker les données. ] #SET{lettres,#ARRAY} <BOUCLE_articles(ARTICLES)> [(#REM) on itère sur les 1ères lettres des mots du titre ] <BOUCLE_lettres_article(DATA){source table, #TITRE|premieres_lettres}> [(#REM) on récupère les identifiants des articles de la lettre, et on y ajoute celui de l'article ] #SET{ids,#GET{lettres/#VALEUR}|sinon{#ARRAY}|push{#ID_ARTICLE}} [(#REM) on met à jour la lettre et les ids associés dans le tableau ] #SET{lettres,#GET{lettres}|array_merge{#ARRAY{#VALEUR,#GET{ids}}}} </BOUCLE_lettres_article> </BOUCLE_articles> [(#REM) 2) Affichage du menu alphabet, il n'affiche que les lettres réellement utilisées dans les articles. ] <B_alphabet> <p class="pagination"> <BOUCLE_alphabet(DATA){source table, #GET{lettres}|array_keys}{par valeur}> [(#ENV{lettre}|non|et{#COMPTEUR_BOUCLE|=={1}}|oui)#SET{lettre,#VALEUR}] <a href='[(#SELF|parametre_url{lettre,#VALEUR})]'>#VALEUR</a> </BOUCLE_alphabet> </p> </B_alphabet> [(#REM) 3) Affichage des articles correspondant à la lettre active (= dans l'URL) ] #SET{lettre,#ENV{lettre,#GET{lettre}}} <B_articles_lettre> <ul> <BOUCLE_articles_lettre(ARTICLES){id_article IN #GET{lettres/#GET{lettre}}}> <li>#TITRE</li> </BOUCLE_articles_lettre> </ul> </B_articles_lettre></code></pre></div> <p><strong>Dans mes_fonctions.php :</strong></p> <div class="precode"><pre class="spip_code spip_code_block language-php" dir="ltr" style="text-align:left;" data-language="php"><code>/** * Retourne une liste de lettres correspondant aux 1ères lettres des mots d'un texte. * * @param string $texte * @return string|array */ function premieres_lettres($texte) { // liste des mots if ($mots = str_word_count($texte, 1)) { // on stocke la 1ère lettre de chaque mot dans un tableau $lettres = array(); foreach($mots as $mot) { // on ne prend en compte que les mots d'au moins 4 lettres if (strlen($mot) > 3) { $lettres = array_merge($lettres, array(strtolower(substr($mot,0,1)))); } } if (count($lettres)) { $texte = $lettres; } } return $texte; }</code></pre></div> Tri alphabétique tout en SPIP 2015-12-10T12:31:49Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment484876 2015-12-10T12:31:49Z <p>Merci pour ta réponse rapide <br class="autobr"> Je débute totalement avec spip et son environnement et encore plus avec Php ... Je ne suis pas très à l'aise avec tout ça. <br class="autobr"> J'ai pensé à utiliser les mots clés au départ mais les articles sont générés depuis un site syndiqué et j'ai plus d'un millier d'articles à traiter, jouer avec les mots clés me prendrait un temps fou <br class="autobr"> La solution Tri alphabétique tout en spip me va bien du coup mais il me manque la partie énoncée plus haut.</p> <p>Un petit coup de main là dessus ne serait pas de refus.</p> <p>Merci d'avance</p> Tri alphabétique tout en SPIP 2015-12-10T12:14:51Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment484875 2015-12-10T12:14:51Z <p>Bonjour,<br class="autobr"> merci de tes remerciements, à mon avis la boucle DATA est plus simple à mettre en œuvre.<br class="autobr"> Pour ton problème, tu pourrais construire un array pour chaque titre avec un explode sur l'espace vide, où chaque valeur sera un mot.<br class="autobr"> <a href="http://www.spip.net/fr_article5671.html" class="spip_url spip_out auto" rel="nofollow external">http://www.spip.net/fr_article5671.html</a><br class="autobr"> Sauf que tu devras constituer un array pour retirer les mots comme pour,de,avec,quoi,qui,donc,etc …</p> <p>Pour faire simple, à moins que tu aies envie de te décarcasser en php, je suppose (car je ne sais pas ce que tu souhaites faire exactement) qu'un système de mots clefs serait plus adapté.<br class="autobr"> ++</p> Tri alphabétique tout en SPIP 2015-12-10T11:39:43Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment484874 2015-12-10T11:39:43Z <p>Salut,</p> <p>J'utilise parfaitement cette contribution et je suis ravi du résultat. Merci pour ce travail<small class="fine d-inline"> </small>!</p> <p>Cependant j'aimerais pouvoir classer chaque mots du titre par ordre alphabétique</p> <p>CAD :</p> <p>pour un article ayant pour titre : Adaptation Tiller pour montage et entretien des planches</p> <p>J'aimerais pouvoir le retrouver dans 'A' pour Adaptation, mais aussi dans 'T' pour Tiller et aussi dans 'M' pour montage etc ...</p> <p>Une idée là dessus<small class="fine d-inline"> </small>?</p> Tri alphabétique tout en SPIP 2013-08-31T08:03:19Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment470458 2013-08-31T08:03:19Z <p>Bonjour,</p> <p>Est-ce que le tri alphabétique tout en Spip fonctionne avec SPIP 3<small class="fine d-inline"> </small>?<br class="autobr"> Si oui, y a-t-il des particularités dans la mise en place<small class="fine d-inline"> </small>?</p> <p>Bien cordialement,</p> <p>Guillaume.</p> Tri alphabétique tout en SPIP 2013-01-25T14:37:36Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment464744 2013-01-25T14:37:36Z <p>Le nouveau critère de boucle <i> <code class="spip_code spip_code_inline" dir="ltr">{collecte}</code> </i> à partir de SPIP 2 permet de se faciliter la vie pour trier proprement avec des caractères un peu exotiques comme l'E dans l'O.</p> <p><a href="http://www.spip.net/fr_article4028.html" class="spip_url spip_out auto" rel="nofollow external">http://www.spip.net/fr_article4028.html</a></p> <p>Je l'ai utilisé avec <i>utf8_swedish_ci</i> et ça marche impec, les articles commençant par un Œ se retrouvent après ceux commençant par un O, au lieu de finir tristement après le Z...</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>#SET{collation, utf8_swedish_ci} <BOUCLE_tri(ARTICLES) {par titre} {collecte #GET{collation}}> ...</code></pre></div> <p>Pour un affichage avec l'initiale, pour un sommaire par lettre par exemple, il faut jouer avec la translittération pour récupérer un O et pas un Œ :</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>[(#SET{initiale,#TITRE|translitteration|mb_substr{0,1}|unique})]</code></pre></div> <p>Sinon on se retrouve avec :<br class="autobr"> <strong>O</strong><br class="autobr"> Occidental</p> <p><strong>Œ</strong><br class="autobr"> Œuvre<br class="autobr"> <i>Oriental</i></p> <p><strong>P</strong><br class="autobr"> ...</p> Tri alphabétique tout en SPIP 2012-10-01T16:25:51Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment461729 2012-10-01T16:25:51Z <p>Pas certain d'avoir une réponse vu que le tuto date un peu, je tente quand même. Super guide en tout cas que ce tri tout en SPIP.</p> <p>Je l'ai adapté à une revue en ligne utilisant le squelette RevueLigne. Ca marche nickel. Mais...<br class="autobr"> J'aimerais aller plus loin. Imaginons que j'aie deux auteurs, chacun apparaissant dans ma table articles sous les champs auteur1 et auteur2, quelqu'un a-t-il une piste pour adapter ce tri à cette exigence<small class="fine d-inline"> </small>? Me faut-il règler le problème des deux champs dans une fonction PHP<small class="fine d-inline"> </small>? <br class="autobr"> Merci par avance :-)</p> Tri alphabétique tout en SPIP 2011-09-04T17:28:11Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment449242 2011-09-04T17:28:11Z <p>Déjà il y a plus simple pour extraire la première lettre avec le filtre php <code class="spip_code spip_code_inline" dir="ltr">|substr{0,1}</code> mieux vaut d'ailleurs se référer à l'article de marcimat sur son site voir <a href="http://marcimat.magraine.net/Tri-alphabetique-simple" class="spip_url spip_out" rel='nofollow external'>http://marcimat.magraine.net/Tri-al...</a></p> <p>Mais dans ton cas, si tu veux toutes les lettres de l'alphabet, il faudrait écrire en dur les lettres que tu souhaites, quelque chose du style</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code><ul> <li><a href="[(#SELF|parametre_url{lettre,a})]">A</a></li> <li><a href="[(#SELF|parametre_url{lettre,b})]">B</a></li> ...etc </ul></code></pre></div> <p>Enfin, c'est ce qui me semble le plus simple.</p> Tri alphabétique tout en SPIP 2011-09-01T09:25:02Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment449106 2011-09-01T09:25:02Z <p>Bonjour,<br class="autobr"> j'utilise le code suivant :</p> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code><BOUCLE_listalpha(ARTICLES){id_secteur}{par titre}>[(#SET{beginby[(#TITRE|onelettre)],[(#GET{beginby[(#TITRE|onelettre)]}|array_merge{#ARRAY{#COMPTEUR_BOUCLE,#ID_ARTICLE}})]})][<a href="[(#SELF|parametre_url{lettre,[(#TITRE|onelettre)]})]" [(#TITRE|onelettre|=={[(#ENV{lettre,A})]}|?{class='expose'})]>(#TITRE|onelettre|unique)</a>|]</BOUCLE_listalpha> </code></pre></div> <p>Tout marche super bien seulement je souhaiterais afficher les lettres (inactives) pour lesquelles il n'y a pas d'article. Comment faire<small class="fine d-inline"> </small>?</p> <p>Merci d'avance,<br class="autobr"> Mathieu.</p> Tri alphabétique tout en SPIP 2011-04-15T12:24:45Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment444373 2011-04-15T12:24:45Z <p>merci c'est excellent<small class="fine d-inline"> </small>!! bon ca maffiche 0-9 dans le menu même sil ny a rien.<br class="autobr"> Autrement question concernant la reécriture d'url. Actuellement ca sort ainsi /glossaire.html&lettre=a , comment faire pour que les urls sortent propres du style : /glossaire-a.html<small class="fine d-inline"> </small>??</p> Tri alphabétique tout en SPIP 2011-03-07T11:52:54Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment442175 2011-03-07T11:52:54Z <p>Bonjour,</p> <p>je ne me sers pas de tout (simplement des deux premières étapes) et ça marche du feu de dieu pour l'instant.</p> <p>Un grand merci<small class="fine d-inline"> </small>!</p> Tri alphabétique tout en SPIP 2010-12-01T12:15:41Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment437686 2010-12-01T12:15:41Z <p>ça marche super bien<small class="fine d-inline"> </small>!<br class="autobr"> merci<small class="fine d-inline"> </small>!</p> Tri alphabétique tout en SPIP 2010-12-01T10:41:09Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment437682 2010-12-01T10:41:09Z <p>Les squelettes sont dispo sur le site de Quilombo voir le pied de page.</p> <p>Si tu suis l'inclure ça te donne le squelette : <a href="http://www.librairie-quilombo.org/squelettes/inc-catalogue.html" class="spip_out" rel='nofollow external'>http://www.librairie-quilombo.org/squelettes/inc-catalogue.html</a></p> <p>La boucle CONDITIONS est faite grace au plugin spip_bonux.<br class="autobr"> Pour les filtres, je pense qu'il faudra adapter.</p> Tri alphabétique tout en SPIP 2010-12-01T10:29:06Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment437681 2010-12-01T10:29:06Z <p>Bonjour,<br class="autobr"> quelqu'un utilise cette contrib sous spip 2.1<small class="fine d-inline"> </small>?<br class="autobr"> si oui quelles modifications sont nécessaires pour que ça marche<small class="fine d-inline"> </small>?</p> Tri alphabétique tout en SPIP 2010-06-05T07:14:24Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment431264 2010-06-05T07:14:24Z <p>si ca fonctionne en 2.0.10 (avec PHP5), il suffit de rajouter ce qu'a dit marc dans un commentaire précédent dans mes_fonctions.php</p> <p>pour mémoire sa solution</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>function array_merge5 ($array1, $array2) { return array_merge ((array)$array1, (array)$array2); }</code></pre></div> <p>un exemple qui marche <a href="http://reflexes.samizdat.net/spip.php?rubrique16" class="spip_out" rel='nofollow external'>http://reflexes.samizdat.net/spip.php?rubrique16</a></p> Tri alphabétique tout en SPIP 2010-03-17T16:30:01Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment427830 2010-03-17T16:30:01Z <p>finalement cela fonctionne t'il avec spip 2<small class="fine d-inline"> </small>? <br class="autobr"> ou existe t'il un plugin quelque part<small class="fine d-inline"> </small>?<br class="autobr"> merci</p> Tri alphabétique tout en SPIP 2010-02-16T10:59:34Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment426512 2010-02-16T10:59:34Z <p>Attention, ce plugin ne fonctionne pas en 2.0.10. En 2.0.07, no problem. <br class="autobr"> En 2.0.10, j'ai des erreurs sur array_merge() [function.array-merge] : Argument #1 is not an array in composer.php(51) : eval()'d code on line 190. A suivre...</p> spip 2 2008-10-20T10:18:35Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment409345 2008-10-20T10:18:35Z <p>bonjour, <br class="autobr"> Je n'arrive pas à faire fonctionner cette contribution avec spip 2. Est-ce que vous confirmez<small class="fine d-inline"> </small>?</p> <p>J'ai fait quelques essais pour tenter de corriger, mais je tourne en rond. Avez-vous l'intention de mettre à jour cette contribution pour spip 2<small class="fine d-inline"> </small>?</p> <p>De plus, sur le site donné en exemple (librairie Quilombo), les pages restent vides, seul l'abécédaire apparaît. C'est justement ce que j'obtiens avec spip 2.</p> Tri alphabétique tout en SPIP 2008-04-30T16:12:08Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment405598 2008-04-30T16:12:08Z <p>petite erreur dans le code de base</p> <p>version corrigée :</p> <p>[(#SET<i>beginby<abbr title="onelettre)">(#TITRE</abbr>,[(#ARRAY<i>#GET<i>beginby<abbr title="onelettre)">(#TITRE</abbr></i></i>|array_merge<i>#ARRAY<i>#COMPTEUR_BOUCLE,#ID_ARTICLE</i></i>)]</i>)][<a href='https://files.spip.org/%5B(#SELF%7Cparametre_url%7Blettre,' rel='nofollow'>(#TITRE})]" [(#TITRE|onelettre|=={[(#ENV{lettre,A})]}|?{class='expose'})]>(#TITRE|onelettre|unique)</a>|]</p> <ul class="laliste"> <li><a href="#URL_ARTICLE" rel='nofollow'><span>[(#TITRE)][ ((#TITRE))]</span> </a></li> </ul> Adaptation aux signataires de pétition 2008-04-30T12:31:56Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment405592 2008-04-30T12:31:56Z <p>De mon côté, j'ai cherché à l'adapter aux signataires de pétition.</p> <p>Dans le fichier mes_fonctions.php, j'ai du remplacer (solution que je dois ici à une aide extérieure, merci Arnaud) :</p> <p> $pos = strrpos(trim($texte), « »)<small class="fine d-inline"> </small>;<br class="autobr"> if ($pos === false) <i> // pas trouvé -> 1<sup class="typo_exposants">er</sup> lettre<br class="autobr"> $texte = $texte<i>0</i><small class="fine d-inline"> </small>;<br class="autobr"> </i> else <i><br class="autobr"> $texte = $texte<i>$pos+1</i><small class="fine d-inline"> </small>;<br class="autobr"> </i></p> <p>par simplement :</p> <p>$texte = $texte<i>0</i><small class="fine d-inline"> </small>;</p> <p>Pour les boucles :</p> <p><br class="autobr"> [(#SET<i>beginby<abbr title="lastfirstletter)">(#NOM</abbr>,[(#GET<i>beginby<abbr title="lastfirstletter)">(#NOM</abbr></i>|array_merge5<i>#ARRAY<i>#COMPTEUR_BOUCLE,#ID_SIGNATURE</i></i>)]</i>)]<br class="autobr"> [<a href='https://files.spip.org/%5B(#SELF%7Cparametre_url%7Blettre,' rel='nofollow'>(#NOM})]" [(#NOM|lastfirstletter|=={[(#ENV{lettre,A})]}|?{class='on'})]>(#NOM|lastfirstletter|unique)</a> | ]<br class="autobr"> </p> <p>[(#REM) Stockage des noms des signataires dans Arraylettre]<br class="autobr"> <br class="autobr"> [(#SET<i>beginby<abbr title="lastfirstletter)">(#NOM</abbr>,[(#GET<i>beginby<abbr title="lastfirstletter)">(#NOM</abbr></i>|array_merge5<i>#ARRAY<i>#COMPTEUR_BOUCLE,#ID_SIGNATURE</i></i>)]</i>)]<br class="autobr"> </p> <p>[(#REM) Affichage des signataires stockés dans Arraylettre]<br class="autobr"> </p> <div class="signature-nom">#NOM - #NOM_SITE #URL_SITE</div> <p>Cependant, je ne trouve pas la solution pour intégrer également une pagination dans l'affichage des signataires stockés dans Arraylettre. Si quelqu'un a une idée...</p> Tri alphabétique tout en SPIP 2008-03-18T10:19:22Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment404122 2008-03-18T10:19:22Z <p>Bonjour,</p> <p>j'ai le même problème <code class="spip_code spip_code_inline" dir="ltr">Warning: array_merge() [function.array-merge]: Argument #1 is not an array in ...</code></p> <p>la proposition de Marc pour php5 ne change rien chez moi :-(</p> <p>Comment vous faites pour que ça fonctionne chez vous<small class="fine d-inline"> </small>???</p> <p>joz</p> Tri alphabétique tout en SPIP : se débarasser des chiffres 2008-01-24T11:01:48Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment402481 2008-01-24T11:01:48Z <p>si vous voulez vous débarasser des titres commencant par des chiffres <br class="manualbr">ajouter cette ligne dans la fonction onelettre (avant le return)<br class="manualbr"><code class="spip_code spip_code_inline" dir="ltr">if (is_numeric($texte)) $texte = "";</code></p> Tri alphabétique tout en SPIP 2008-01-02T03:40:40Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment401772 2008-01-02T03:40:40Z <p>Dans ce cas, il me semble que de simples boucles feraient l'affaire, non testé le code :</p> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code><ul> <BOUCLE_larticle(ARTICLES){id_article}> <BOUCLE_avant(ARTICLES){titre<#TITRE}{par titre}{0,3}> <li>#TITRE</li> </BOUCLE_avant> <li style="color:red">#TITRE</li> <BOUCLE_apres(ARTICLES){titre>#TITRE}{par titre}{0,3}> <li>#TITRE</li> </BOUCLE_apres> </BOUCLE_larticle> </ul></code></pre></div> Tri alphabétique tout en SPIP 2008-01-02T01:45:13Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment401771 2008-01-02T01:45:13Z <p>Bonjour,<br class="autobr"> Je développe sous SPIP un site d'histoire régionale dans lequel beaucoup de titres d'articles commencent par une année.<br class="autobr"> par exemple : <strong>1789 - Etats généraux</strong></p> <p>Je recherche une méthode pour inclure dans le squelette des articles <br>- une boucle qui permette d'afficher les titres des 3 (ou n) articles dont les titres ont un libellé < ou = à cette date, <br>- et une boucle qui permette d'afficher les titres des 3 (ou n) articles dont les titres ont un libellé > ou égal à cette date</p> <p>Le but étant d'afficher la liste des titres de 6 (ou n) articles, comme dans l'exemple ci-dessous, pour faire apparaître les titres des articles les plus proches de l'article en cours. <br>- 1785 - Titre Bla bla <br>- 1787 - Titre Bla bla <br>- 1788 - Titre Bla bla <br>- 1789 - Etats généraux (l'article en cours d'affichage) <br>- 1790 - Titre Bla bla <br>- 1791 - Titre Bla bla <br>- 1792 - Titre Bla bla</p> <p>Je pense que ça ne doit pas être très éloigné de ce que vous proposez dans cette page, mais je n'ai pas su trouver le truc.</p> <p>Auriez-vous une suggestion à me faire<small class="fine d-inline"> </small>?</p> <p>Cordialement</p> Tri alphabétique tout en SPIP 2007-11-20T12:33:38Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment400358 2007-11-20T12:33:38Z <p>J'ai trouvé une solution moyennement convaincante mais qui marche :<br class="autobr"> remplacer les <strong>'</strong> du php par <strong><code class="spip_code spip_code_inline" dir="ltr">&acute; </code></strong> et faire de même dans les <strong>titres des articles</strong>.</p> <p>Dans le fichier PHP :</p> <blockquote class="spip"><div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>remplacer FROM TRIM(LEADING \'l’\' par FROM TRIM(LEADING \'l&acute;\' et $pattern[1] = "#^L’?#"; //apostrophe utf8 par $pattern[1] = "#^L&acute;?#"; //apostrophe utf8</code></pre></div> </blockquote> <p>Ca pourra peut-être aider certains...</p> Tri alphabétique tout en SPIP 2007-08-25T17:46:55Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment397390 2007-08-25T17:46:55Z <p>Personne ne rencontre le même problème<small class="fine d-inline"> </small>?</p> Tri alphabétique tout en SPIP 2007-08-13T08:38:10Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment396856 2007-08-13T08:38:10Z <p>Bonjour à tous<small class="fine d-inline"> </small>!</p> <p>Excellente contribution<small class="fine d-inline"> </small>!</p> <p>Jusque là tout fonctionnait bien sauf depuis que mon hebergeur est passé en PHP 5 (1and1) je me retrouve avec des erreurs pour lire ma liste alphabétique.<br class="autobr"> J'ai systématiquement ce message :</p> <p>Warning : array_merge() [function.array-merge] : Argument #1 is not an array in /homepages/41/d140278309/htdocs/www/ecrire/public/composer.php(46) : eval()'d code on line 93</p> <p>J'ai essayé la solution donné par Marc mais rien n'y fait.<br class="autobr"> Quelqu'un pourrait-il m'aider<small class="fine d-inline"> </small>?<br class="autobr"> Merci</p> Tri alphabétique tout en SPIP 2007-07-09T19:55:22Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment395845 2007-07-09T19:55:22Z <p>Erratum humanum est<br class="autobr"> Dans le post précédent, remplacez « majuscule » et « maj » par « lettre accentuée ».<br class="autobr"> Trop fatigué, je vais me coucher.</p> Tri alphabétique tout en SPIP 2007-07-09T19:48:47Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment395844 2007-07-09T19:48:47Z <p>Bon, ben en fait ça merde toujours total si l'apostrophe est suivie d'une majuscule : direct en page des A et sans le titre. Seule solution trouvée : virer la maj. Snif<small class="fine d-inline"> </small>!</p> <p>Si quelqu'un a un remède, je lui en serait infiniment redevable (d'au moins un demi dans un rade de l'est de Paris).</p> <p>resnif<small class="fine d-inline"> </small>!</p> Tri alphabétique tout en SPIP 2007-07-09T19:12:55Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment395842 2007-07-09T19:12:55Z <p>Après avoir cherché (un peu), je n'ai pas trouvé grand chose sinon que si l'apostrophe n'est pas en typo ' mais en info <code class="spip_code spip_code_inline" dir="ltr">'</code> dans la base de donnée, alors elle ne s'affiche pas au bon endroit (à L plutôt qu'à A ou ailleurs).</p> <p>Ma tentative de correction ne donne rien de très bon : elle fait bien passer les apostrophe après le reste mais, en plus, me ramène d'autres livres («<small class="fine d-inline"> </small>L'École<small class="fine d-inline"> </small>» dans les lettres A) mais sans en afficher le titre (mais l'auteur et le reste oui).</p> <p>Donc, seule solution à court terme : modifier tous les titres avec apostrophes pour qu'ils s'affichent correctement. Et là ça marche, tout est classé, exceptés les voyelles à majuscule qui se retrouvent à la fin. Mais là, tant pis...</p> <p>Autre chose : a priori, la quatrième boucle ne me sert à rien, les articles avec accents apparaissant bien avec seulement la troisième boucle. En bas de page, mais ils apparaissent. C'est grave docteur<small class="fine d-inline"> </small>?</p> Chez moi le résultat est pas top... 2007-05-24T12:51:30Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment394163 2007-05-24T12:51:30Z <p>Salut,</p> <p>je pense que ton problème (comme le mien) tien au fait que tu est sous PHP5 et qu'en php 5 array_merge attend exclusivement des paramètres de type array, voir <a href="http://fr3.php.net/array_merge" class="spip_out" rel='nofollow external'>ici</a><small class="fine d-inline"> </small>!</p> <p>Il y a plusieurs manières de s'en sortir, personnellement j'ai ajouté une fonction array_merge5 dans mes_fonctions.php qui corrige le pb (cette fonction ne doit fonctionner qu'en PHP 5 ) :</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>function array_merge5 ($array1, $array2) { return array_merge ((array)$array1, (array)$array2); }</code></pre></div> <p>ensuite l'il n'y a qu'à remplacer array_merge par array_merge5 dans ton squelette<small class="fine d-inline"> </small>!</p> <p>A+</p> <p>PS : merci, pour cette super contrib.</p> Tri alphabétique tout en SPIP 2007-04-27T14:23:40Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment393358 2007-04-27T14:23:40Z <p>Oups<small class="fine d-inline"> </small>!<br class="autobr"> Parlé trop vite. Le second ne marche pas du tout.<br class="autobr"> Quelqu'un pourrait-il éclairer ma lanterne<small class="fine d-inline"> </small>?<br class="autobr"> Merci.</p> Tri alphabétique tout en SPIP 2007-04-27T14:16:17Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment393357 2007-04-27T14:16:17Z <p>Bonjour,</p> <p>Juste au cas où quelqu'un aurait le même problème que celui dont j'ai souffert :</p> <p>Dans les titres, les apostrophes étaient des infos «<small class="fine d-inline"> </small><code class="spip_code spip_code_inline" dir="ltr">'</code><small class="fine d-inline"> </small>» et non des typos «<small class="fine d-inline"> </small>'<small class="fine d-inline"> </small>», et spip 1.9.2 me les transformait en <code class="spip_code spip_code_inline" dir="ltr">&8217;</code>. Ça posait 2 problèmes. Le premier est que les apostrophes n'étaient pas traitées comme cela, et donc «<small class="fine d-inline"> </small>l'<small class="fine d-inline"> </small>» se retrouvait dans la lettre <i>L</i>. Le second (après correction du premier problème) est que les apostrophes se retrouvaient classées entre elles après les autre titre (Ab, Am, As, Ac (l'), Ag (l')).</p> <p>Donc, obligé de modifier le code php susindiqué pour que ça fonctionne :</p> <p>Dans la fonction sansle, ajout de :</p> <p><code class="spip_code spip_code_inline" dir="ltr">$pattern[7] = "#^L&\#8217;?#"; //apostrophe typo</code></p> <p>Dans la fonction critere_parsansL transformation des <code class="spip_code spip_code_inline" dir="ltr">"</code> en <code class="spip_code spip_code_inline" dir="ltr">'</code> et inversement et ajout de <code class="spip_code spip_code_inline" dir="ltr">FROM TRIM(LEADING \"L\'\"</code> :</p> <p><code class="spip_code spip_code_inline" dir="ltr">$boucle->order[] = '"TRIM(LEADING \"Le «\" FROM TRIM(LEADING \"le \"FROM TRIM(LEADING \"los \" FROM TRIM(LEADING \"la \" FROM TRIM(LEADING \"l’ «\" FROM TRIM(LEADING \"Le « \" FROM TRIM(LEADING \"L'\" FROM TRIM(LEADING \"L\'\" FROM TRIM(LEADING \"La « \" FROM TRIM(LEADING \"l’\" FROM TRIM(LEADING \"«\" FROM TRIM(LEADING \" \" FROM TRIM(LEADING \"les \" FROM LOWER(titre))))))))))))))"';</code></p> <p>Et après ça marche nickel.</p> <p>Sinon, a priori ça merde un peu avec la pagination : si l'on est sur la troisième page d'une lettre, les liens vers les autres lettres mènent toujours vers la troisième page de celle-ci... A priori ça viendrait de la balise <code class="spip_code spip_code_inline" dir="ltr">#ENV</code>. Quelqu'un à une idée pour résoudre ce problème. Merci.</p> Adapter à d'autres objets que les articles 2007-04-16T12:06:26Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment393011 2007-04-16T12:06:26Z <p>Avec les auteurs je pense que tu n'as plus à te préoccuper de créer un array nommé ici beginby qui est un tableau php regroupant des éléments (articles, auteurs..) en excluant le l' ou les devant permettant par exemple que « les animaux » soit classé dans les A</p> <p>Pour simplifier ton developpement démarre avec seulement 2 boucles <br>- une qui va fabriquer l'alphabet A|B|C... <br>- l'autre qui affichera les auteurs en prenant en critère la lettre envoyée dans l'url comme avec par exemple &lettre=B</p> <p>Le array beginby (en français « commence par ») est à mon avis inutile dans le cas des auteurs qui ont rarement de l' ou le devant, (restent les éric ou éléonore... ainsi que tous accents ou e dans l'o que tu vas retrouver dans les A...)</p> <p> si tu as Anna Arendht et que tu demandes <code class="spip_code spip_code_inline" dir="ltr">{nom==#ENV{lettre,A}}</code> je pense que ça ne doit pas marcher car cela signifie afficher les noms égaux à la lettre demandée dans l'url</p> <p>essaye <code class="spip_code spip_code_inline" dir="ltr">{nom==^[#ENV{lettre,A}]}</code> qui signifie afficher les noms qui commencent par la lettre demandée dans l'url (non testé)</p> <p>Ensuite, tu peux modifier les filtres et les critères pour ajuster, et ensuite en faire profiter tout le monde<small class="fine d-inline"> </small>;)</p> Adapter à d'autres objets que les articles 2007-04-14T21:53:38Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment392972 2007-04-14T21:53:38Z <p>Pour ma part, j'ai du supprimer le beginby pour que ça marche<small class="fine d-inline"> </small>????</p> <p>Voici le code pour la boucle d'affichage des auteurs :</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code><BOUCLE_artlettre(AUTEURS){nom == #ENV{lettre,A}} {tout}> [<li> <a href="#URL_AUTEUR"><span>(#NOM)</span> #BIO</a> </li>] </BOUCLE_artlettre></code></pre></div> <p>J'avais aussi l'erreur array_merge en utilisant la première boucle....</p> <p>Je continue mes tests, ça prend forme, merci.....</p> Adapter à d'autres objets que les articles 2007-04-12T13:47:19Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment392886 2007-04-12T13:47:19Z <p>Avant de me lancer (et de me casser la figure...) j'imagine qu'il « suffit » de changer les deux boucles ARTICLES en boucles AUTEURS pour classer les auteurs de cette manière.</p> <p>Et, plus généralement, d'y mettre tous les critères possibles, dans ladite boucle, pour sélectionner ce qu'on veut voir classer<small class="fine d-inline"> </small>?</p> <p>Sinon, ça a l'air super pratique, pour ceux qui manient des listes de milliers de kilomètres....</p> Chez moi le résultat est pas top... 2007-04-10T08:04:54Z https://files.spip.org/Tri-alphabetique-tout-en-SPIP#comment392830 2007-04-10T08:04:54Z <p>J'obtiens le message d'erreur :</p> <p>Warning : array_merge() [function.array-merge] : Argument #1 is not an array in /mnt/139/sdb/3/8/centrale.au.coeur/ecrire/public/composer.php(72) : eval()'d code on line 398</p> <p>J'ai fait le test sur une rubrique qui contient deux articles « La Newsletter » et « Statistiques du site », j'obtiens tout en haut le message d'erreur ci-dessus sur 9 lignes, puis ma rubrique affichée normalement et 4 lettres en dessous de « Index alphabétique des titres », qui sont A C L S. Le fait de cliquer sur l'une ou l'autre ne change rien. La rubrique est en accès restreint, mais les URLs pour accéder aux fichiers html et php sont :<br class="autobr"> <a href="http://centrale.au.coeur.free.fr/squelettes/" class="spip_url spip_out auto" rel="nofollow external">http://centrale.au.coeur.free.fr/squelettes/</a><br class="autobr"> <a href="http://centrale.au.coeur.free.fr/rubrique-16_test.html" class="spip_url spip_out auto" rel="nofollow external">http://centrale.au.coeur.free.fr/rubrique-16_test.html</a> (j'ai renommé pour que le site fonctionne pour le moment)</p> <p>Si quelqu'un peut m'aider... j'avoue que ne maitrisant absolument pas le php, les boucles ça me passe un peu au dessus et j'ai fait que du copier coller. Je suis en spip 1.9.2 avec le squelette sarka spip.</p> <p>Merci pour cette contrib qui, si je parviens à la faire fonctionner, me sauvera la vie :-D</p> <p>— <br> S@m</p>