Annuaire d'auteurs avec Spip Bonux - commentaires Annuaire d'auteurs avec Spip Bonux 2013-07-25T15:27:32Z https://contrib.spip.net/Annuaire-d-auteurs-avec-Spip-Bonux#comment469731 2013-07-25T15:27:32Z <p>Bonjour</p> <p>Tout d'abord veuillez excuser mon ignorance profonde, mais apprécié mes efforts<small class="fine d-inline"> </small>;-)</p> <p>Je vais essayé d'être le plus clair possible sans être trop long.</p> <p>Je cherche à faire un annuaire pour mon site. Ce qui suit est dans l'idéal et je suis bien conscient que cela s'opère étapes par étapes.</p> <p>Dans l'idéal, j'aimerais :<br class="autobr"> 1) que cet annuaire se remplisse automatiquement à partir des auteurs du site <br class="autobr"> 2) qu'il soit possible de classer les auteur par ordre alphabétique « vrai » (complet pas Albert Dupontel qui apparait avant Donald Duck)<br class="autobr"> 3) qu'à l'affichage, il soit mentionné Duck Donald ou Dupontel Albert (et non Donald Duck ou Albert Dupontel)<br class="autobr"> 4) que les administrateurs soient en mesure de n'afficher que certains auteurs en filtrant ceux qui ne remplisse pas certaines conditions (par exemple seuls les rédacteurs soient affichés, pas les visiteurs, ou que les auteurs dont le champ adresse mail est rempli...)<br class="autobr"> 5) ajouté des champs au sujet des auteurs (par ex. photo, organisme de rattachement, etc.)<br class="autobr"> 6) que l'on puisse faire la distinction entre une entrée d'annuaire correspondant à un individu et une entrée d'annuaire correspondant à une organisation (ce qui implique d'ajouter un champ au sujet de l'auteur pour faire la distinction entre ces deux types d'auteurs.<br class="autobr"> 7) pouvoir afficher les entrées de l'annuaire dans un article avec pourquoi pas la barre de navigation alphabétique que vous proposez plus haut <br class="autobr"> 8) de pouvoir n'afficher que les entrée de l'annuaire correspondantes à une organisation</p> <p>J'ai passé 2 jours à lire et essayé de comprendre comment faire à partir de nombreux liens et tout particulièrement : <br>- <a href="http://contrib.spip.net/Tri-alphabetique-tout-en-SPIP" class="spip_url spip_out auto" rel="nofollow external">http://contrib.spip.net/Tri-alphabetique-tout-en-SPIP</a> <br>- <a href="http://contrib.spip.net/Tri-alphabetique-des-auteurs" class="spip_url spip_out auto" rel="nofollow external">http://contrib.spip.net/Tri-alphabetique-des-auteurs</a> <br>- <a href="http://contrib.spip.net/Un-annuaire-bien-range-avec-ENV" class="spip_url spip_out auto" rel="nofollow external">http://contrib.spip.net/Un-annuaire-bien-range-avec-ENV</a></p> <p>ainsi que <br>- <a href="http://forum.spip.net/fr_191645.html" class="spip_url spip_out auto" rel="nofollow external">http://forum.spip.net/fr_191645.html</a> et les liens qu'il propose, ce qui par la suite m'a amené à au plugin « formidable » et « formitable » et la doc qui va avec... pour créer un formulaire permettant au gens de remplir leur fiche contact,etc...</p> <p>bref...</p> <p>Je suis loin d'être un pro de la prog, mais je m'en sort toujours avec un tutoriel bien fait détaillé, précis quoi. Je suis capable d'adapté un bout de code à mes besoin si il est commenté avec précision, qu'il est précisé dans quel fichier et où dans le code il faut copier le bout de code, etc.)</p> <p>Pour vous dire franchement en essayant d'y aller étapes par étapes, j'ai voulu commencé par suivre la contrib sur le tri alphabétique tout en spip, eh ben je suis resté coincé après la création du ficher mes_fonctions.php</p> <p>Je me rend bien compte qu'il y a plusieurs chose dans ma liste des 8 fonctions que je souhaiterais que mon annuaire ait.</p> <p>Un exemple d'annuaire qui me plait bien et celui-la <br class="autobr"> <a href="http://ens.math.univ-montp2.fr/SPIP/sem.php3?a=anuter" class="spip_url spip_out auto" rel="nofollow external">http://ens.math.univ-montp2.fr/SPIP/sem.php3?a=anuter</a></p> <p>mais franchement la technique proposé dans l'article <br class="autobr"> <a href="http://contrib.spip.net/Un-annuaire-bien-range-avec-ENV" class="spip_url spip_out auto" rel="nofollow external">http://contrib.spip.net/Un-annuaire-bien-range-avec-ENV</a><br class="autobr"> donne aucun résultat dans spip 2.19. et c'est pas faute d'avoir fait des centaines de tests.</p> <p>Merci de votre aide</p> <p>cordialement</p> <p>Jo</p> Annuaire d'auteurs avec Spip Bonux 2011-02-04T13:02:38Z https://contrib.spip.net/Annuaire-d-auteurs-avec-Spip-Bonux#comment440548 2011-02-04T13:02:38Z <p>Bonjour,</p> <p>j'ai d'installé cette contrib sur spip 2.1.8 tout fonctionne bien sauf que ma barre de navigation alphabétique est vertical.<br class="autobr"> Est ce que quelqu'un pourrait me dire comment faire pour qu'elle soit horizontale<small class="fine d-inline"> </small>?</p> Annuaire d'auteurs avec Spip Bonux 2010-12-01T12:06:03Z https://contrib.spip.net/Annuaire-d-auteurs-avec-Spip-Bonux#comment437685 2010-12-01T12:06:03Z <p>Tu as bien rajouté les filtres d'Erational dans mes_fonctions.php<small class="fine d-inline"> </small>?</p> Annuaire d'auteurs avec Spip Bonux 2010-12-01T10:05:56Z https://contrib.spip.net/Annuaire-d-auteurs-avec-Spip-Bonux#comment437680 2010-12-01T10:05:56Z <p>Bonjour,<br class="autobr"> j'ai essayé d'installer cette contrib mais voilà l'erreur que ça me donne :<br class="autobr"> 3 Erreur(s) dans le squeletteNuméro message squelette boucle Ligne<br class="autobr"> 1 Filtre lastfirstletter non défini squelettes/modeles/annuaire.html _listalpha 4<br class="autobr"> 2 Filtre lastfirstletter non défini squelettes/modeles/annuaire.html _listalpha 0<br class="autobr"> 3 Filtre array_sort non défini squelettes/modeles/annuaire.html / 0</p> <p>Est-ce que c'est compatible avec spip 2.1 et la dernière version de spip-bonux<small class="fine d-inline"> </small>?</p> Annuaire d'auteurs avec Spip Bonux 2010-01-21T21:13:27Z https://contrib.spip.net/Annuaire-d-auteurs-avec-Spip-Bonux#comment425502 2010-01-21T21:13:27Z <p>En effet, la boucle <code class="spip_code spip_code_inline" dir="ltr"><BOUCLE_listalpha(AUTEURS){par nom}{tout}></code> classe le <strong>champ #NOM</strong> par ordre alphabétique, donc :</p> <ul class="spip"><li> Albert Dupont -> A</li><li> Bob Dylan -> B</li><li> Charles d'Artagnan -> C</li></ul> <p>Deux solutions :</p> <p>- Soit modifier la contrib actuelle et ajouter le « nom » (dernier mot du champ #NOM) dans les tableaux « commence_par ». On pourra alors trier les tableaux, par exemple dans la boucle alphabet, pour que la boucle auteurs suivante les affiche dans le bon ordre.</p> <p>Reste à savoir ce qu'il advient de « Robert Van Piperzeel » qui sera classé à P et non à V...</p> <p>- Soit encoder les noms d'auteurs sous la forme « Dupont, Albert » et « Van Piperzeel, Robert ». Ceci a pour avantage que le classement et la séparation entre nom et prénom font l'objet d'un traitement humain un peu plus intelligent que strrpos<small class="fine d-inline"> </small>!</p> <p>Dans la fonction lastfirstletter, il faudra remplacer :</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>$pos = strrpos(trim($texte), " "); if ($pos === false) { // pas trouvé -> 1er lettre $texte = $texte{0}; } else { $texte = $texte{$pos+1}; }</code></pre></div> <p>par</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>$texte = $texte{0};</code></pre></div> <p>En effet, on ne cherche plus la première lettre du dernier mot mais la première lettre tout court.</p> <p>On pourra aussi facilement créer un filtre qui remet « Dupont, Albert » en « Albert Dupont » grâce aux fonctions explode, array_reverse et implode de PHP.</p> Annuaire d'auteurs avec Spip Bonux 2009-11-26T16:43:32Z https://contrib.spip.net/Annuaire-d-auteurs-avec-Spip-Bonux#comment423592 2009-11-26T16:43:32Z <p>Heureusement, il n'y a pas de confusion possible parmi les 4 mousquetaires (blague du soir, espoir)</p> Annuaire d'auteurs avec Spip Bonux 2009-11-26T16:41:20Z https://contrib.spip.net/Annuaire-d-auteurs-avec-Spip-Bonux#comment423591 2009-11-26T16:41:20Z <p>Bonjour,</p> <p>Cette contribution est très utile mais les résultats (les auteurs dont le nom commence par une même lettre) ne sont pas classés par ordre alphabétique. Dupont sera par exemple avant Dartagnan.</p> <p>Une solution<small class="fine d-inline"> </small>?</p> <p>Merci.</p> Annuaire d'auteurs avec Spip Bonux 2009-09-03T13:19:37Z https://contrib.spip.net/Annuaire-d-auteurs-avec-Spip-Bonux#comment420156 2009-09-03T13:19:37Z <p>Voir <a href="http://us2.php.net/manual/en/function.str-split.php#84891" class="spip_url spip_out" rel='nofollow external'>http://us2.php.net/manual/en/functi...</a></p> <p>à mettre dans config/mes_options.php :</p> <div class="precode"><pre class="spip_code spip_code_block language-php" dir="ltr" style="text-align:left;" data-language="php"><code>if(!function_exists('str_split')) { function str_split($string,$string_length=1) { if(strlen($string)>$string_length || !$string_length) { do { $c = strlen($string); $parts[] = substr($string,0,$string_length); $string = substr($string,$string_length); } while($string !== false); } else { $parts = array($string); } return $parts; } }</code></pre></div> Annuaire d'auteurs avec Spip Bonux 2009-09-03T13:09:16Z https://contrib.spip.net/Annuaire-d-auteurs-avec-Spip-Bonux#comment420152 2009-09-03T13:09:16Z <p>hélas, trois fois hélas, la fonction <code class="spip_code spip_code_inline" dir="ltr">str_split()</code> n'existe qu'à partir de php5...<br class="manualbr">mais comment vont faire tous ceux dont le serveur tourne encore avec un (vieux) php4<small class="fine d-inline"> </small>?</p> <p>c'est à peine plus compliqué (bien que de plus en plus abscons...) en utilisant la bonne vieille (et robuste) fonction <code class="spip_code spip_code_inline" dir="ltr">preg_split</code><span class="spip_note_ref"> [<a href="#nb1" class="spip_note" rel='nofollow appendix' title="on l'applaudit bien fort d'être toujours là si vaillante..." id="nh1">1</a>]</span> :</p> <div class="precode"><pre class="spip_code spip_code_block" dir="ltr" style="text-align:left;"><code>[(#SET{alphabet, #VAL{'//'}|preg_split{'ABCDEFGHIJKLMNOPQRSTUVWXYZ', -1, 1} })]</code></pre></div> <p><br class="manualbr"><small>le dernier argument <strong> <i>«<small class="fine d-inline"> </small>1<small class="fine d-inline"> </small>»</i> </strong> signifiant :<br class="manualbr">«<small class="fine d-inline"> </small>à exécuter avec le flag <i>PREG_SPLIT_NO_EMPTY</i><small class="fine d-inline"> </small>»</small></p> Correction Array Alphabet 2009-09-02T23:14:48Z https://contrib.spip.net/Annuaire-d-auteurs-avec-Spip-Bonux#comment420124 2009-09-02T23:14:48Z <p>Effectivement, c'est beaucoup plus simple comme cela. J'intègre cette modification avec mes remerciements</p> Annuaire d'auteurs avec Spip Bonux 2009-09-01T17:15:23Z https://contrib.spip.net/Annuaire-d-auteurs-avec-Spip-Bonux#comment420074 2009-09-01T17:15:23Z <p>En fait, c'est plus compliqué, il faut :</p> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code>[(#SET{alphabet, [(#VAL{ABCDEFGHIJKLMNOPQRSTUVWXYZ}|str_split)]})]</code></pre></div> Annuaire d'auteurs avec Spip Bonux 2009-09-01T16:34:39Z https://contrib.spip.net/Annuaire-d-auteurs-avec-Spip-Bonux#comment420071 2009-09-01T16:34:39Z <p>Je pense que :</p> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code>#SET{alphabet, #ARRAY{0,'A',1,'B',2,'C',3,'D',4,'E',5,'F',6,'G',7,'H',8,'I',9,'J',10,'K',11,'L',12,'M',13,'N',14,'O',15,'P',16,'Q',17,'R',18,'S',19,'T',20,'U',21,'V',22,'W',23,'X',24,'Y',25,'Z'}}</code></pre></div> <p>Peut s'écrire plus simplement par quelque chose d'approchant :</p> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code>[(#SET{alphabet,[(#VAL{ABCDEFGHIJKLMNOPQRSTUVWXYZ}|explode{''})]})]</code></pre></div> <p>Ou l'inverse, je ne sais plus :</p> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code>[(#SET{alphabet,[(#VAL{''}|explode{ABCDEFGHIJKLMNOPQRSTUVWXYZ})]})]</code></pre></div>