Carnet Wiki

BoucleArticlesNonPublies

Accéder, par boucles et balises, aux articles proposés et en cours de rédaction

Depuis la version 1.8.2, SPIP permet nativement d’aller chercher les articles ayant un statut autre que publié.
Cette page n’a donc plus qu’un intérêt didactique.

Il suffit désormais d’utiliser le critère {statut='publie'}.

* *

Fut un temps, j’avais cherché, et je ne crois pas avoir été le seul, à mettre en place, sur un spip, une liste des articles « en préparation » ou « proposé ». L’objectif, serait par exemple, de prévenir les lecteurs du site, des prochains articles à paraitre, en direct live.

Avec les possibilités du nouveau compilo http://www.spip-contrib.net/NouvelleBoucle , il apparait qu’il est possible de déclarer des nouvelles tables, et du coup, d’avoir accès à des nouvelles balises.

Actuellement, la boucle ARTICLES, ne permet d’accéder qu’aux articles « PUBLIES ». Voilà la marche à suivre, pour se créer une nouvelle boucle, qui donnera accès, depuis les squelettes, aux articles ordinairement non accessible sur l’espace public.


Méthode

1) Dans le fichier /mes_fonctions.php3 , je me suis rajouté ceci, pour
pouvoir accéder, dans mes squelettes et par une boucle, aux articles
’prop’(osé) ou en ’prepa’(ration)

function boucle_PREARTICLES_dist($id_boucle, &$boucles) {
$boucle = &$boucles[$id_boucle];
$id_table = $boucle->id_table;
$boucle->from[] =  "articles AS $id_table";
$boucle->where[] = "$id_table.statut IN ('prop','prepa')";
return calculer_boucle($id_boucle, $boucles);
}


2)Toujours, dans le fichier /mes_fonctions.php3, j’ai posé ceci

$spip_articles = array(
"id_article" => "bigint(21) NOT NULL",
"surtitre" => "text NOT NULL",
"titre" => "text NOT NULL",
"soustitre" => "text NOT NULL",
"id_rubrique" => "bigint(21) DEFAULT '0' NOT NULL",
"descriptif" => "text NOT NULL",
"chapo" => "mediumtext NOT NULL",
"texte" => "longblob NOT NULL",
"ps" => "mediumtext NOT NULL",
"date" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
"statut" => "varchar(10) DEFAULT '0' NOT NULL",
"id_secteur" => "bigint(21) DEFAULT '0' NOT NULL",
"maj" => "TIMESTAMP",
"export" => "VARCHAR(10) DEFAULT 'oui'",
"date_redac" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
"visites" => "INTEGER DEFAULT '0' NOT NULL",
"referers" => "INTEGER DEFAULT '0' NOT NULL",
"popularite" => "DOUBLE DEFAULT '0' NOT NULL",
"accepter_forum" => "CHAR(3) NOT NULL",
"auteur_modif" => "bigint(21) DEFAULT '0' NOT NULL",
"date_modif" => "datetime DEFAULT '0000-00-00 00:00:00' NOT NULL",
"lang" => "VARCHAR(10) DEFAULT '' NOT NULL",
"langue_choisie" => "VARCHAR(3) DEFAULT 'non'",
"id_trad" => "bigint(21) DEFAULT '0' NOT NULL",
"extra" => "longblob NULL",
"idx" => "ENUM('', '1', 'non', 'oui', 'idx') DEFAULT '' NOT NULL",
"id_version" => "int unsigned DEFAULT '0' NOT NULL",
"nom_site" => "tinytext NOT NULL",
"url_site" => "VARCHAR(255) NOT NULL",
"url_propre" => "VARCHAR(255) NOT NULL");

$spip_articles_key = array(
"PRIMARY KEY" => "id_article",
"KEY id_rubrique" => "id_rubrique",
"KEY id_secteur" => "id_secteur",
"KEY id_trad" => "id_trad",
"KEY lang" => "lang",
"KEY statut" => "statut, date",
"KEY url_site" => "url_site",
"KEY date_modif" => "date_modif",
"KEY idx" => "idx",
"KEY url_propre" => "url_propre");

$GLOBALS['tables_principales']['prearticles']   =  array(
               'field' => &$spip_articles,
               'key' => &$spip_articles_key);

3) Et du coup, je peux tranquillement mettre dans mes squelettes, par
exemple :

<BOUCLE_test(PREARTICLES){id_rubrique=1}>
#ID_ARTICLE - #TITRE - #SOUSTITRE - #STATUT
</BOUCLE_test>

En cours d’étude
Tout ceci est encore en cours de discussion sur la liste Spip-devel. On espère que ça pourra se faire de façon encore plus allégée. En attendant, ça offre un nouvel aperçu des possibilités du nouveau compilo.

- Mise à jour :18 novembre 2007 à 16h33min