Informations complémentaires sur les auteurs

Bonjour,

J'ai cherché dans le wiki et je n'ai pas trouvé... J'aimerais afficher dans une page statique les différents auteurs du blog avec le nombre total d'articles qu'ils ont écrit sur le site, exemple : Tibawbaw (20 contributions).


Existe-t-il une fonction qui m'aurait échappée et qui ferait cela ?


Et autre chose, il n'existe pas par défaut un template de page pour afficher les articles d'un auteur en particulier (comme les pages Tags, Categories etc.). Encore une fois, est-ce que cela existerait quelque part, ou dois-je mettre les mains dans le code ?



D'avance merci :-)

Réponses

  • je n'ai pas vu ce genre de fonction ... qui m'a l'air intéressante. Elle pourrait donner lieu à un plugin qui crée une static qui liste les articles classés par auteur
  • En effet pas bête du tout,

    On pourrais ce servir du nom de l'auteur en tant que catégorie pour gagner en requêtes.
  • Ah ouais, super idée de créer une catégorie avec le nom d'auteur ! Je n'y avais pas pensé.

    Je vais faire comme ça pour l'instant, ça sera largement suffisant :-)
  • Ah oui mais non, ça pose un petit problème : j'aimerais que le nom de la catégorie "Contributions de Tibawbaw" (par exemple) n'apparaisse pas dans les catégories de l'article quand on l'affiche...


    Il n'y a pas moyen d'exclure une catégorie dans $plxShow->artCat() ?
  • FrédéricFrédéric Member
    mars 2013 modifié
    Tibawbaw a écrit:
    Ah oui mais non, ça pose un petit problème : j'aimerais que le nom de la catégorie "Contributions de Tibawbaw" (par exemple) n'apparaisse pas dans les catégories de l'article quand on l'affiche...


    Il n'y a pas moyen d'exclure une catégorie dans $plxShow->artCat() ?
    Dans les options de la catégorie en elle même (Afficher/Masquer en laissant active) ;)
  • TibawbawTibawbaw Member
    mars 2013 modifié
    J'ai mis "active" à "oui" et ""menu" à "masquer" pour cette catégorie, mais elle s'affiche toujours dans les catégories de mon article...
  • FrédéricFrédéric Member
    mars 2013 modifié
    Heu c'est le but de voir les auteurs s'afficher dans l'article non ?
    Si tu ne veux pas voir les catégorie, duplique ton template article.php et enlève cette portion de code :
    [== PHP ==]
    <?php $plxShow->lang('CLASSIFIED_IN') ?> : <?php $plxShow->artCat(); ?>
    
    Ainsi si tu fait référence a des auteurs, tu appelera ce template lors de la rédaction d'article.
  • TibawbawTibawbaw Member
    mars 2013 modifié
    Hum non, pas vraiment (je me suis mal expliqué). Voilà ce que je voudrais :


    Je veux que l'auteur s'affiche normalement (ça c'est ok)
    Je veux que les catégories "normales" s'affichent, mais uniquement ces catégories
    Et enfin, je veux qu'en cliquant sur le nom de l'auteur (par exemple) on arrive sur une page où serait listés tous les articles rédigés par cet auteur.


    Ca serait possible donc en créant une catégorie du même nom que l'auteur, et en appliquant cette catégorie à l'article. Mais je ne veux pas que dans l'affichage de l'article (en première page, ou dans l'article lui même) la catégorie "Auteur" apparaisse.


    Exemple : un article rédigé par "Tibawbaw" dans les catégories "Catégorie 1", "Catégorie 2" et "Catégorie Tibawbaw", j'aimerais que dans l'article il soit affiché : "écrit par Tibawbaw dans Catégorie 1 et Catégorie 2".


    La "Catégorie Tibawbaw" ne servant qu'à afficher tous les articles écrits par Tibawbaw...



    (je ne sais pas si c'est vraiment plus clair :D)
  • moi je t'ai compris ;)
    j'imagine une static qui parcourt les articles et filtre en fonction de l'auteur
    ça doit être jouable
  • C'est ce que j'avais imaginé aussi au début... Bon, va falloir que je bidouille un peu alors... Ou si quelqu'un se sent le courage de tester, il est le bienvenu O:)
  • Hum faudrait plutôt voir cette histoire de catégorie et ajouter un paramètre (ce qui apparaisse ou non) pour avoir un retour rapide quad le foreach se ferais uniquement sur le fichier des catégories.
    Après je ne sais pas mais faut voir en plugin ou page statique comme Danielsan le dit.
  • Jerry WhamJerry Wham Member
    mars 2013 modifié
    (Je réfléchis tout haut) : Le problème pour un plugin, c'est qu'il n'y a pas de hook dans la méthode artCat de plxShow.

    Et avec les tags ? Il y a le hook plxShowArtTags, dans la méthode artTags.
    Ou on peut imaginer associer chaque article à un tag qui est le nom de l'auteur...


    Avec le hook plxAdminEditArticle et un plugin, il suffirait d'ajouter au tableau $content, le nom de l'auteur est ensuite d'afficher la page via la page des tags...

    Pour le distinguer des autres tags, il faudrait peut-être adopter une syntaxe spécifique (genre tag-auteur) et ensuite faire un affichage conditionnel via le hook plxShowArtTags de la méthode artTags de plxShow.


    Ce sont les grandes lignes. Je vous laisse le soin d'en faire un plugin.
  • danielsandanielsan Member
    mars 2013 modifié
    piouuuu ... en s'inspirant du plugin plxMyAllArchive,
    n'ayant pas le temps de faire un plugin, on va faire autrement :


    1/ copier/coller le code ci-dessous dans un template static-authors.php (je me suis basé du template static par défaut de la 5.1.7):
    <?php include(dirname(__FILE__) . '/header.php'); ?>
    
    <section role="main">
    
    	<div class="content">
    
    		<div id="static-width-sidebar">
    
    			<article role="article">
    
    				<h1>
    					<?php $plxShow->staticTitle(); ?>
    				</h1>
    
    				<?php $plxShow->staticContent(); ?>
    
    				<?php
    
    				$plxGlob_arts = clone $plxShow->plxMotor->plxGlob_arts;
    
    				if($files = $plxGlob_arts->query('/^[0-9]{4}.[home|'.$plxShow->plxMotor->activeCats.',]*.[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/','art','sort',0,false,'before')) {
    					foreach($files as $filename) {
    						if(preg_match('/[0-9]{4}.([home|'.$plxShow->plxMotor->activeCats.',]*).[0-9]{3}.[0-9]{12}.[a-z0-9-]+.xml$/',$filename,$capture)){
    							$catIds=explode(',',$capture[1]);
    							foreach($catIds as $catId) {
    								if(!in_array($catId, $plxShow->excludeCats)) {
    									$tmp = $plxShow->plxMotor->parseArticle(PLX_ROOT.$plxShow->plxMotor->aConf['racine_articles'].$filename);
    									$art = array(
    										'id'	=> intval($tmp['numero']),
    										'year'	=> substr($tmp['date'], 0,4),
    										'cats'	=> $catIds,
    										'cat'	=> $catId,
    										'url' 	=> $plxShow->plxMotor->urlRewrite('?article'.intval($tmp['numero']).'/'.$tmp['url']),
    										'title' => $tmp['title'],
    										'date'	=> plxDate::formatDate($tmp['date'],'#num_day/#num_month/#num_year(4)'),
    										'author'=> $plxShow->plxMotor->aUsers[$tmp['author']]['name'],
    									);
    									$plxShow->aArts[$art['author']][] = $art;
    								}
    							}
    						}
    					}
    				}
    
    				if($plxShow->aArts) {
    					$arts = array();
    					echo "<ul>";
    					foreach($plxShow->aArts as $k => $v) {
    						echo '<li>'.$k.'</li>';
    						echo '<ul>';
    						foreach($v as $art) {
    							# on teste si l'article n'a pas déjà été affiché si tri par année pour que ce soit joli à l'écran :p
    							if(!in_array($art['id'], $arts)) {
    								echo '<li>'.plxUtils::strCheck($art['title']).'</li>';
    								$arts[] = $art['id'];
    							}
    						}
    						echo '</ul>';
    					}
    					echo '</ul>';
    				} else {
    					echo '<p>oups</p>';
    				}
    				?>
    
    			</article>
    
    		</div>
    
    		<?php include(dirname(__FILE__).'/sidebar.php'); ?>
    
    	</div>
    
    </section>
    
    <?php include(dirname(__FILE__) . '/footer.php'); ?>
    


    2/ créer une page static et lui attribuer le template static-author.php


    3/ je ne me porte pas garant du code ]:D mais Stéphane pourrait rajouter cette fonction dans son plugin ? ;)


    Tiens nous au jus.


    Cordialement,
    _____
    D.San
  • StéphaneStéphane Member, Former PluXml Project Manager
    pour info: je bosse sur une mise à jour du plugin MyAllArchive qui permettra de lister les articles par auteur

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • StéphaneStéphane Member, Former PluXml Project Manager
    @Tibawbaw: peut être que cette mise à jour du plugin MyAllArchive répondra à ton besoin
    http://forum.pluxml.org/viewtopic.php?pid=30762#p30762

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Trop fort ce Stéphane !!!
  • petit complément éventuel pour ceux qui veulent : si on affiche les articles classés par auteurs, ajouter les infos de l'auteur en dessous du nom ...
  • Stéphane a écrit:
    @Tibawbaw: peut être que cette mise à jour du plugin MyAllArchive répondra à ton besoin
    http://forum.pluxml.org/viewtopic.php?pid=30762#p30762


    Whoua, je n'avais pas vu les réponses depuis mon dernier message... Merci !!! Ce n'est pas exactement ce que je voulais, mais à la limite, c'est encore mieux :-)


    Juste pour information, j'ai apporté une minuscule modification dans le fichier class.plx.archives.php. A la ligne 123, j'ai ajouté un id :
    [== PHP ==]
    echo '<p class="p_archive" id="' . plxUtils::strCheck($k) . '">'.plxUtils::strCheck($k).'</p>';
    


    Comme ça, je peux mettre un lien sur le nom d'un auteur, et afficher la page de tous ses articles avec cette URL :

    http://rock-anecdotes.fr/allarchive/asc_by_author#Tibawbaw (ici, pour l'auteur Tibawbaw)


    Ainsi, ça affiche tous les articles de tous les auteurs, mais on tombe directement sur la partie qui nous intéresse...



    Encore un énorme merci pour cette réactivité, c'est génial :-)
  • Hum, un petit bug je pense dans le plugin d'archives...


    Lorsque j'affiche par auteur, tous mes articles ne s'affichent pas. J'ai les articles de 1 à 17, puis de 21 à 22 (alors que les articles de 18 à 20 existent et devraient apparaitre dans "Tibawbaw") :


    http://rock-anecdotes.fr/allarchive/asc_by_author


    Un idée ??
  • StéphaneStéphane Member, Former PluXml Project Manager
    est-ce que ces articles ont une date de publication, sont-ils associés à une catégorie, la ou les catégories de l'articles sont-elles actives ? Il me faudrait plus d'infos. Au mieux peux-tu me faire un .zip de ton site (sans les images) et me l'envoyer stp, parce que sinon je vais avoir du mal à analyser le problème et trouver le bug s'il y en a un.

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Ces articles ont effectivement une date de publication, mais comme tous les autres articles.
    Les catégories sont toutes actives.


    Je t'envoie le zip par mail ?
  • StéphaneStéphane Member, Former PluXml Project Manager
    c'est bon je l'ai reçu. je regarde et te tient au courant

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Super merci ! C'est pas super urgent non plus, t'as le temps ;-)
  • StéphaneStéphane Member, Former PluXml Project Manager
    Trouvé
    Edité les articles que tu ne vois pas et clic simplement sur le bouton enregistrer.
    Par exemple pour ton article 18 il est affecté à une catégorie 012 qui n'existe pas (ou plus).
    Donc simplement en réenregistrant les articles ça mets les mets à jour et ça sera tout bon.


    De mon coté il faut que je mette un contrôle sur la suppression des catégories de PluXml pour alerter ou interdire la suppression d'une catégorie si elle est utilisée par un article.

    Consultant PluXml

    Ancien responsable et développeur de PluXml (2010 à 2018)

  • Stéphane a écrit:
    De mon coté il faut que je mette un contrôle sur la suppression de catégories de PluXml pour alerter ou interdire la suppression d'une catégorie si elle est utilisée par un article.
    +1 ...
  • Aaaah ! Oui, vrai ! J'avais fait des tests avec une catégorie, que j'ai supprimé ensuite... Merci beaucoup Stéphane !
Connectez-vous ou Inscrivez-vous pour répondre.