Carnet Wiki

AutreColonnedUneTableSpip

Déclarer une nouvelle colonne d’une table Spip existante

Avant de se lancer dans des créations de tables, on peut commencer par tripoter les existantes, histoire de se faire la main.
Par exemple pour ajouter des dates de début et fin à un article, pour gérer un agenda :

-  on les ajoute coté mysql, par un ordre sql de ce genre :

  ALTER TABLE spip_articles
    ADD date_debut DATETIME DEFAULT '0000-00-00 00:00:00',
    ADD date_fin DATETIME DEFAULT '0000-00-00 00:00:00';


Si ça vous parait du chinois, pas de panique, phpMyAdmin fait ça très bien en 4 clics ;-)
Ne mettez pas de majuscules aux noms des champs car spip interprète la balise #NOM_DE_CHAMP comme correspondant au champ nom_de_champ.

-  on explique à SPIP que la table spip_articles a maintenant des colonnes en plus. Désormais, plus besoin de modifier la déclaration dans le fichier inc_serialbase et de risquer de tout se faire bousiller à la première mise à jour. Comme pour les ajouts de tables, la déclaration se fait le fichier mes_fonctions.php3

Avant la déclaration des nouvelles colonnes il faut inclure inc_serialbase.php3. Le code devient donc :

include_ecrire ('inc_serialbase.php3');
global $tables_principales;
$tables_principales['spip_articles']['field']['date_debut']= "datetime DEFAULT '0000-00-00 00:00:00'";
$tables_principales['spip_articles']['field']['date_fin']= "datetime DEFAULT '0000-00-00 00:00:00'";

-  Attention, l’instruction global $tables_principales; est critique.
-  et c’est tout ! vous avez maintenant la possibilité d’utiliser une balise #DATE_DEBUT et une autre #DATE_FIN dans les boucles articles.
vous pouvez également les utiliser comme critères de boucles, par exemple, pour sortir les évènement foireux, qui finissent avant d’avoir commencé :

<BOUCLE_pipo(ARTICLES){date_debut>date_fin}> ... </BOUCLE_pipo>

Marc 27 Fév 2005 : C’est intéressant, mais comment accéder ensuite aux données depuis la partie privée ?

-  Il n’est pas possible actuellement de gérer ces nouveaux champs ou table via la partie privée de SPIP. On peut le faire cependant par l’intermédiaire d’un autre outil comme PHPMyAdmin par exemple.
-  La version 2.0 de spip pourrait apporter une solution à ce problème.

Pierre 1er Mars 2006: Il m’a été possible d’ajouter un champ dans la table spip_article en modifiant articles_edit.php3 et articles_php3 dans spip/ecrire. Je me suis basé sur le sous_titre

Yannick 07 Juillet 2006 : Comment adapter ce code à SPIP 1.9 ?
Le code ne semble pas fonctionner avec SPIP 1.9
En effet l’appel aux nouveaux champs par leurs balises directement (ex: #AVATAR) ne fonctionne plus. Une idée ?

Stan 18 septembre 2006
Salut, sur une autre page j’ai trouvé include_spip ('base/serial'); et ça fonctionne maintenant

Pierre 13 octobre 2006

[SPIP 1.9.1] Suite à la création d’un nouveau champ dans spip_breves, j’ai :
1-créé un repertoire /base dans mon repertoire squelette;
2- copié dans ce nouveau repertoire le fichier serial.php (qui se trouve dans /ecrire/base/);
3- edité le fichier /squelettes/base/serial.php et déclaré le nouveau champ au bon endroit.

Je peux maintenant faire <BOUCLE_BREVE {mon_champ=tralala}> ou #MON_CHAMP

Cyril, 7 novembre 2006

[SPIP 1.9.2] Je suis parvenu à ajouter le champ “prenom” à la table “auteurs”, faire une boucle (AUTEURS) avec par prenom comme critère et utiliser une balise #PRENOM dans la boucle; là ou ça coince c’est que je ne parviens pas à éditer ce champ depuis l’interface d’admin, bien que je parvienne à l’afficher correctement. Si l’un d’entre vous veut suivre la piste, la trace est là :

1. modif de la table spip_auteurs, ajouté le champ “prenom” tinytext, après “nom”
2. ajout dans ./dans mes_fonctions.php de la description des modifs:
include_spip (’base/serial’);
global $tables_principales;
$tables_principales[’spip_auteurs’][’field’][’prenom’]= “tinytext”;
3. modif de inc/legender_auteur (page exec=auteur_infos)
4. modif de inc/formater_auteur (page exec=auteurs)

Le plus curieux c’est que je ne trouve pas le formulaire dans le code de la page exec=auteur_infos... encoure un coup d’ajax ???

- Mise à jour :18 November 2007 at 17:52