Ne pas afficher certains articles en page d’accueil

samedi 3 février 2007
par  _Sylvain_
popularité : 3%

- Version SPIP de base : spip 1.9.1
- Version squelette de base : sarka 1.9.1
- Public : débutant / confirmé

Motivation

Cette contribution fait suite à la demande d’un utilisateur :

Auriez-vous une idée sur la manière de constituer des archives. Il faudrait que celui qui le souhaite puisse consulter les archives dans une rubrique spéciale qui ne ferait pas apparaître les articles stockés dans la page d’accueil.

Objectif

Cette contribution permet aux rédacteurs de marquer certains articles pour qu’ils ne s’affichent pas sur la page d’accueil. Un article ainsi marqué pourra être identifié, dans la zone publique, via l’affichage d’une "étiquette" visible dans la colonne de gauche.

Mise en oeuvre du point de vue squelette

Modification de \squelettes\sommaire.html

Le fichier sommaire.html doit être modifier pour ne pas afficher les articles contenus dans la rubrique marquée par un mot-clé appartenant au groupe squelette_no-sommaire.

Pour cela, nous travaillons sur la boucle ARTICLES, lignes 101 à 131, qui se présente initialement sous la forme suivante :

<!-- Une : derniers articles publies -->

<div class="derniers-articles">
        <div id="articles_recents" class="en-tete"><:articles_recents:></div>
        <BOUCLE_article(ARTICLES) {doublons} {id_rubrique!=#RUBRIQUE_AGENDA}{id_rubrique!=#RUBRIQUE_GALERIE}{par date} {inverse} {0,5}>
                <div class="annonce">
                        [<div class="image">(#LOGO_ARTICLE||image_reduire{150})</div>]
                        <div class="detail">
                                [(#DATE|nom_jour)] [(#DATE|affdate)]<br>
                                <B_auteurs-article>
                                        <:par_auteur:>
                                        <BOUCLE_auteurs-article(AUTEURS) {id_article} {", "}>
                                                <a href="#URL_AUTEUR">#NOM</a>
                                        </BOUCLE_auteurs-article>
                                </B_auteurs-article>
                        </div>
                        <div class="chemin">
                                <BOUCLE_rubrique-mere(RUBRIQUES){id_rubrique}>
                                        [<a HREF="#URL_RUBRIQUE">(#TITRE|supprimer_numero)</a>]
                                </BOUCLE_rubrique-mere>
                        </div>
                        [<div class="surtitre">(#SURTITRE)</div>]
                        [<a class="titre" href="#URL_ARTICLE" title="<:lire_suite_article:>">(#TITRE|supprimer_numero)</a>]
                        [<div class="soustitre">(#SOUSTITRE)</div>]
                        <div class="introduction">
                                [(#INTRODUCTION|typo_couleur)]
                                <br><br>
                                <a class="suite" href="#URL_ARTICLE"><:lire_suite_article:></a>
                        </div>
                </div>
        </BOUCLE_article>
        </div>
</div>

Au-dessus de cette boucle, nous ajoutons une boucle ARTICLES filtrée pour "passer en revue" l’ensemble des articles associés à un mot clé contenu dans le groupe squelettes_no-sommaire. Étant donné que la boucle article principale comprend le critère doublon, les articles précédemment "passé en revue" dans notre petite boucle ne s’afficheront pas :

<BOUCLE_article-no-sommaire(ARTICLES) {type_mot=squelette_no-sommaire}>
        <!-- Cette boucle "passe en revue" les articles à ne pas afficher en page d'accueil, grâce au critère {doublon} de la boucle suivante -->
</BOUCLE_article-no-sommaire>

<div class="derniers-articles">
        <div id="articles_recents" class="en-tete"><:articles_recents:></div>
        <BOUCLE_article(ARTICLES) {doublons} {id_rubrique!=#RUBRIQUE_AGENDA}{id_rubrique!=#RUBRIQUE_GALERIE}{par date} {inverse} {0,5}>
                <div class="annonce">
                        [<div class="image">(#LOGO_ARTICLE||image_reduire{150})</div>]
                        <div class="detail">
                                [(#DATE|nom_jour)] [(#DATE|affdate)]<br>
                                <B_auteurs-article>
                                        <:par_auteur:>
                                        <BOUCLE_auteurs-article(AUTEURS) {id_article} {", "}>
                                                <a href="#URL_AUTEUR">#NOM</a>
                                        </BOUCLE_auteurs-article>
                                </B_auteurs-article>
                        </div>
                        <div class="chemin">
                                <BOUCLE_rubrique-mere(RUBRIQUES){id_rubrique}>
                                        [<a HREF="#URL_RUBRIQUE">(#TITRE|supprimer_numero)</a>]
                                </BOUCLE_rubrique-mere>
                        </div>
                        [<div class="surtitre">(#SURTITRE)</div>]
                        [<a class="titre" href="#URL_ARTICLE" title="<:lire_suite_article:>">(#TITRE|supprimer_numero)</a>]
                        [<div class="soustitre">(#SOUSTITRE)</div>]
                        <div class="introduction">
                                [(#INTRODUCTION|typo_couleur)]
                                <br><br>
                                <a class="suite" href="#URL_ARTICLE"><:lire_suite_article:></a>
                        </div>
                </div>
        </BOUCLE_article>
        </div>
</div>

Modification de \squelettes\inclusions\bloc-gauche.html

Pour afficher l’"étiquette" de l’article dans la colonne de gauche, nous allons ajouter quelques lignes au fichier bloc-gauche.html. par "étiquette", nous entendons le mot-clé du groupe squelette-no-sommaire utilisé par le rédacteur pour marquer l’article.

Ligne 4 du fichier, ajoutons les lignes :

        <B_etiquette-no-sommaire>
                <div class="stats">
                        <BOUCLE_etiquette-no-sommaire(MOTS) {id_article}{type=squelette_no-sommaire}>
                                [<div class="titre">(#TITRE)</div>]
                        </BOUCLE_etiquette-no-sommaire>
                </div>
        </B_etiquette-no-sommaire>

Les classes de bloc utilisés ici constituent un détournement des classes destinées à l’affichage des statistiques. Cette solution présente le mérite d’éviter une modification de la feuille de style, mais le résultat est graphiquement très contestable. Il est recommandé de créer dans le fichier styles.css une nouvelle classe spécifique à cette étiquette.

Retour sur le fichier article.html pour contextualiser l’inclusion du bloc de gauche

En l’état, cette modification est inopérante. En effet, nous utilisons dans la boucle MOT le critère id_article pour sélectionner le mot clé associé à l’article affiché. Or, comme nous travaillons sur un fichier inclus dans la page article.html, il faut passer id_article comme critère lors de l’inclusion.

Dans le fichier article.html, la ligne 50 devient :

<INCLURE{fond=bloc-gauche}{id_rubrique}{id_article}>

Mise en oeuvre du point de vue rédacteur

Une fois ces modifications apportées au squelette, il faut créer un nouveau groupe de mots-clés, nommé squelette_no-sommaire, et ajouter un ou plusieurs mot(s)-clé(s) dans ce groupe (par exemple : archive).

Pour masquer certains articles du sommaire, il suffira alors de leur associer un des mots-clés de ce groupe, auquel cas le mot-clé utilisé s’affichera dans la colonne de gauche lors de la visualisation de l’article par un visiteur.


Commentaires  forum ferme

Logo de jacques
Ne pas afficher certains articles en page d’accueil
vendredi 11 janvier 2008 à 12h49 - par  jacques

Une simple question :
- Comment fait-on pour limiter la taille de l’introduction d’un article ?
P.ex. ne voir que les 2 premières lignes

Et si l’article est vraiement trop court et que dans celui-ci se retrouve
un hyperlien comment le faire apparaître dans les quelques lignes de ce court article puisque si court articles de p.ex 2 ou 3 lignes , l’intro est = à la longueur de ce court article . voir www.estha.11vm-serv.net
j’ai un article localisation ,très court avec un hyperlien vers googlemaps
or dans l’intro il n’apparait pas en surligné , il n’apparait en hyperlien que dans l’article développé.

Dans quel CSS ou Html faut-il bidouiller pour tout cela ?

Logo de jacques
vendredi 11 janvier 2008 à 20h04 - par  _Toufik_

Et l’hyperlien s’afficherait-il aussi dans le descriptif rapide ?

oui sans problème, le lien devra être du type
[Sarka-SPIP->http://www.sarka-spip.com]

Logo de _Toufik_
vendredi 11 janvier 2008 à 16h22 - par  jacques

Et l’hyperlien s’afficherait-il aussi dans le descriptif rapide ?

Logo de jacques
vendredi 11 janvier 2008 à 14h13 - par  _Toufik_

Bonjour,

il faut tout simplement, lors de la création de l’article, de mettre le contenu que vous voulez voir s’afficher dans "Descriptif rapide(Contenu de l’article en quelques mots.)" (sous "À l’intérieur de la rubrique")

et ceci s’affichera dans l’intro de l’article avant "Lire la suite de l’article"

@+

Site web : MS.LP-Dijon
Logo de seguraj
ça ne marchait pas mais résolu
dimanche 1er avril 2007 à 18h57 - par  seguraj

bonjour,
bravo pour ces améliorations constantes.
Pour pouvoir afficher des logos sur la colonne de gauche, je me suis servi de votre boucle. Mais pourtant cela ne fonctionnait pas, l’article continuait à apparaître dans la page accueuil, articles les plus récents...J’ai solutionné mon problème en ajoutant le critère doublonsdans la boucle no_sommaire, juste après le critère titre_mot. Et là ça a marché sans que j epuisse expliquer pourquoi.

Site web : SNUipp 09
Logo de seguraj
mercredi 11 avril 2007 à 15h06 - par  Martin Champetier

Exactement même remarque que seguraj, pour que tout fonctionne on doit écrire.

<BOUCLE_article-no-sommaire(ARTICLES) {type_mot=squelette_no-sommaire} {doublons}>
       <!-- Cette boucle "passe en revue" les articles à ne pas afficher en page d'accueil, grâce au critère {doublon} de la boucle suivante -->
</BOUCLE_article-no-sommaire>

Je suis en 1.9.1 pour SPIP et idem en SARKA (rev 162).

Logo de Jacq-test
Ne pas afficher certains articles en page d’accueil
jeudi 29 mars 2007 à 03h39 - par  Jacq-test

Felicitations ces squelettes sont superbes,

Je travaille sur un site multilingue (3 langues) dont une n’est pas encore traduite. La page sommaire affiche tous les rubriques ainsi que les articles de toutes langues. Le formulaire de langues ne traduit que la colonne de gauche. J’aimerais que le formulaire lors des choix des langues n’affiche que les rubriques et asticles appropriées à cette langue.

comment puis-je m’y prendre ?

Merci

Logo de Jacq-test
jeudi 28 juin 2007 à 04h07 - par  cdseo

Bonjour à tous,

bravo tout d’abord pour ce superbe squelette que j’essaie d’apprivoiser pour le site de mon collège.

Voilà mon "problème" : j’utilise en même temps l’affichage intégral des articles et le menu dynamique. Or sur une page n’affichant qu’un seul article, les sous-rubriques du menu n’apparaissent pas. Est-ce normal ? Si oui, que faudrait-il faire pour réafficher les sous-rubriques du menu si on le désire ?

Merci d’avance.

Site web : 四川旅游
Logo de windaubexp
Ne pas afficher certains articles en page d’accueil
mercredi 14 mars 2007 à 16h09 - par  windaubexp

Bonjour,

Ce serait possible d’avoir les fichiers pret-modifier pour ceux qui n’on rien toucher au skin ?

Site web : Mon taff
Logo de windaubexp
jeudi 29 mars 2007 à 03h32 - par  Jacq-test

Felicitations ces squelettes sont superbes,

Je travaille sur un site multilingue (3 langues) dont une n’est pas encore traduite. La page sommaire affiche tous les rubriques ainsi que les articles de toutes langues. Le formulaire de langues ne traduit que la colonne de gauche. J’aimerais que le formulaire lors des choix des langues n’affiche que les rubriques et articles appropriées à cette langue.

comment puis-je m’y prendre ?

Merci