Ajouter un nouvel 'emplacement spécifique' pour un type d'article.

DeevadDeevad Member
juin 2009 modifié dans Entraide
Edit :

- ! [ RESOLU ] ! -
Merci à Ienissei :)



Bonjour,

J'aimerais ajouter un 'emplacement spécifique' à Pluxml. Pour l'instant, outre les emplacement de catégories qui sont ok, Pluxml dispose de deux emplacements spécifique :
- Brouillon
- Page d'acceuil

J'aimerais ajouter un statut 'caché' , qui soit à l'égale de brouillon, mais qui puisse être accessible ; car les pages brouillons retournent "Cet article n'existe pas ou n'existe plus !" quand on essaie d'utiliser leur lien.

Le but ?
- Faire une page accessible par mes proches à la lecture , mais pas encore en ligne par exemple.
( ex : pour des infos privés ; travail en cours ; élaboration d'un article inachevé et collaboratif. )

- Ajouter ce lien (en dur) dans ma "sidebare" pour faire un livre d'or ( profiter du système de commentaires )
( ex "?article8/livre-or" ou "?article9/vos-témoignages" )

- Poursuivre un article avec "page suivante" dans l'article, sans que les 5 pages de suites ne s'affiche dans la catégories.
(ex "?article12/sommaire-de-mon-tuto-hyper-long" qui relie vers 12 pages "cachées" du moteur de catégories)

Voilà, je suis pratiquement certain que la modification doit être assez rapide en imitant le statut brouillon, aussi je vais bricoler dans mon coin et je suis preneur de toute aide. Merci d'avance !

Réponses

  • IenisseiIenissei Member
    juin 2009 modifié
    Bonjour,

    Oui, c'est assez facile, je me souviens avoir fait ça en un rien de temps pour mon site. Un truc cependant, si tu veux faire des fichiers accessibles uniquement par tes proches, ne passe pas par ce système, car n'importe qui pourra les lire en tapant: http://ton-site.com/?article13/ (ça marche même sans le nom de la page).

    En effet, il faut copier en les modifiant les lignes du mode brouillon (recherche toutes les instances de "draft", puisque c'est son nom dans pas mal de lignes, recherche aussi "home", parce que tes articles devront être visibles contrairement à ceux du brouillon – ensuite, modifie ce dont tu as besoin pour afficher ça comme tu veux).
    J'en ai dans: admin/article.php, admin/index.php (pour afficher ça dans le tableau des articles), class.plx.feed.php (si tu veux que ça apparaisse dans le RSS / ATOM), dans class.plx.motor.php (j'ai modifié là où il y avait une mention du mode "draft" ou "home" et j'ai aussi créé un nouveau mode pour mon option, je ne sais pas si tu devras le faire pour lire les pages ou pas), un paquet dans le class.plx.show.php (mêmes raisons: générer un motif, etc.).
  • DeevadDeevad Member
    Merci Ienissei pour ces précieuses informations, je vais me lancer dedans, et je rapporterais la procédure de la modification si j'en trouve une fiable.
    PS ; merci pour l'astuce sur le lien "/?articleXX/" tout cours ; n'appeler seulement que l'ID du sujet me facilite la tâche :)
  • DeevadDeevad Member
    juin 2009 modifié
    ~~~ Hurray !
    Après quelques heures de bidouilles et un peu de rédaction pour rendre mes modifications communicable et propre, j'y suis arrivé ! ( super, grâce au code bien commenté de pluxml, même un codeur du dimanche comme moi à pu y arriver ! )

    Voilà ma modification sur 3 fichiers :
    Elle permet d'ajouter l'emplacement spécifique "cachés", qui permet de faire des pages accessible uniquement par l'URL en mode publique en connaissant l' [ID] de l'article ( URL sous forme d'un lien vers ?articleXX/ ou XX=[ID] ) )
    Pour le confort, j'ai aussi modifier dans la page de résumé à l'accueil de l'administration le tableau pour qu'il affiche l' [ID] de l'article en première colonne, ce qui simplifie la gestion des liens.

    La modification détaillé , mon pas à pas :
    _____________________________________________


    Dans article.php ( core/admin )
    ajoutez à ces deux lignes (l. 76-77) :
    $aAllCat['Emplacements spécifiques']['home'] = 'Page d\'accueil';
    		$aAllCat['Emplacements spécifiques']['draft'] = 'Brouillons';
    
    ceci :
    $aAllCat['Emplacements spécifiques']['home'] = 'Page d\'accueil';
    		$aAllCat['Emplacements spécifiques']['draft'] = 'Brouillons';
    		$aAllCat['Emplacements spécifiques']['hidden'] = 'Cachés';
    
    _____________________________________________

    Dans index.php ( core/admin )
    modifier la ligne 26 (l. 26) :
    $motif = '/^[0-9]{4}.([0-9]{3}|home|draft).([0-9]{12}).(.*)'.plxUtils::title2filename($_GET['artTitle']).'(.*).xml$/';
    
    comme ceci
    $motif = '/^[0-9]{4}.([0-9]{3}|home|draft|hidden).([0-9]{12}).(.*)'.plxUtils::title2filename($_GET['artTitle']).'(.*).xml$/';
    
    modifier le paragraphe ( l.61 à l.71 )
    *(seulement pour ceux qui veulent afficher l'ID de l'article pour faire leur liens )
    <thead>
    			<tr>
    				<th class="tc1">Date</th>
    				<th class="tc2">Titre</th>
    				<th class="tc1">Catégorie</th>
    				<th class="tc1">Nb Coms</th>
    				<th class="tc1">Auteur</th>			
    				<th class="tc1">Action</th>
    			</tr>
    		</thead>
    
    Comme ceci
    <thead>
    			<tr>
    				<th class="tc1">ID</th> <!-- créer une entête de tableau pour ID -->
    				<th class="tc1">Date</th>
    				<th class="tc2">Titre</th>
    				<th class="tc1">Catégorie</th>
    				<th class="tc1">Nb Coms</th>
    				<th class="tc1">Auteur</th>			
    				<th class="tc1">Action</th>
    			</tr>
    		</thead>
    
    Modifier ( l.99 à l.100 )
    *(seulement pour ceux qui veulent afficher l'ID de l'article pour faire leur liens )
    echo '<tr class="line-'.($plxAdmin->plxRecord_arts->i%2).'">';
    		echo '<td class="tc1"> '.$day.'/'.$month.'/'.$year.'</td>';
    
    en ceci :
    echo '<tr class="line-'.($plxAdmin->plxRecord_arts->i%2).'">';
    		echo '<td class="tc1"> '.$plxAdmin->plxRecord_arts->f('numero').'</td>'; //Ajoute les ID
    		echo '<td class="tc1"> '.$day.'/'.$month.'/'.$year.'</td>';
    
    ajoutez à ces lignes (l. 76-77) :
    $aAllCat['Emplacements spécifiques']['home'] = 'Page d\'accueil';
    		$aAllCat['Emplacements spécifiques']['draft'] = 'Brouillons';
    		$aAllCat['Emplacements spécifiques'][''] = 'Tous les articles';
    
    ceci :
    $aAllCat['Emplacements spécifiques']['home'] = 'Page d\'accueil';
    		$aAllCat['Emplacements spécifiques']['draft'] = 'Brouillons';
    		$aAllCat['Emplacements spécifiques']['hidden'] = 'Cachés';
    		$aAllCat['Emplacements spécifiques'][''] = 'Tous les articles';
    
    puis à ( l. 80-86 ) :
    if($plxAdmin->plxRecord_arts->f('categorie') == 'home')
    			$catName = 'Page d\'accueil';
    		elseif($plxAdmin->plxRecord_arts->f('categorie') == 'draft')
    			$catName = 'Brouillons';
    
    comme ceci
    if($plxAdmin->plxRecord_arts->f('categorie') == 'home')
    			$catName = 'Page d\'accueil';
    		elseif($plxAdmin->plxRecord_arts->f('categorie') == 'draft')
    			$catName = 'Brouillons';
    		elseif($plxAdmin->plxRecord_arts->f('categorie') == 'hidden')
    			$catName = 'Cachés';
    
    _____________________________________________

    Dans class.plx.motor.php ( core/lib )


    Modifier ( l.222 )
    *( pour faire sauter le verrou à l'affichage côté publique )
    $this->motif = '/^'.$this->cible.'.([0-9]{3}|home|hidden).[0-9]{12}.[a-z0-9-]+.xml$/'; # Motif de recherche
    
    en ceci :
    $this->motif = '/^'.$this->cible.'.([0-9]{3}|home|hidden).[0-9]{12}.[a-z0-9-]+.xml$/'; # Motif de recherche
    
    Modifier cette ligne (l. 386 )
    if(preg_match('/([0-9]{4}).([0-9]{3}|home|draft).([0-9]{12}).([a-z0-9-]+).xml$/',$filename,$capture)) {
    
    comme ceci :
    if(preg_match('/([0-9]{4}).([0-9]{3}|home|draft|hidden).([0-9]{12}).([a-z0-9-]+).xml$/',$filename,$capture)) {
    
  • IenisseiIenissei Member
    juin 2009 modifié
    Merci pour cette liste détaillée des modifications, au moins on aura ça quelque part pour usage ultérieur ou pour quiconque veut faire ça :)

    P.S. Je voulais juste dire que ton site est très cool et ton portfolio vraiment superbe, ça fait plaisir de voir ça :)
  • DeevadDeevad Member
    Merci pour le message sur mon portfolio, aussi en passant ça fait plaisir de savoir qu'on est pas le seul à travailler ou s'occuper à 4h du mat un lundi. ;)
  • bonjour
    je me permet de remonter le sujet parce qu'il y a un petit bug :
    lorsque je demande d'afficher $plxShow->catId() j'obtiens home et pas hidden ?
    en faite...
    si mon article - qui est bien dans l'emplacement spécifique hidden - est affiché
    mon icone d'accueil est en class="active"
    pourtant je suis bien en mode 'article' et pas en mode 'home'
    ???
    quelqu'un a une idée!
  • Bonjour Grenouille, malheuresement cette modification à été faite il y a de ça plus d'un an, et donc sur une version antérieur de Pluxml , pas étonnant que tu ais donc un bug avec les versions plus récentes qui sont différente au niveau du code.
Connectez-vous ou Inscrivez-vous pour répondre.