Champ Extra sur les articles d’une rubrique et de ses sous-rubriques.

All contributions published for previous SPIP versions

Les champs extra proposés par Spip pour les articles ne peuvent être appliqué que sur tous les articles ou sur un secteur en particulier, c’est à dire une rubrique de 1er niveau. Cette contrib, basée sur la contrib “Interface graphique pour les extras”, permet de définir des extras aux articles de n’importe quelle rubrique et des sous-rubriques (secteur ou pas).

Cette contrib porte sur les extras des articles et est basée sur la contrib : Interface graphique pour les extras.

Pour les rubriques, je verrai ça après les tests. Ces modifications ont été testé avec Spip 1.7.1

Les modifications principales :

ecrire/article_edit.php3 :
extra_saisie($extra, ’articles’, $id_rubrique);
au lieu de :
extra_saisie($extra, ’articles’, $id_secteur);

ecrire/inc_extra.php3 :

// recherche rubrique parente éventuelle sur lequel s'applique des extras
function rub_extra($id_rub='') {
        if($id_rub) {
                $query="SELECT id_parent FROM spip_rubriques WHERE id_rubrique='$id_rub'";
                 $result=spip_query($query) or die($query);
                list($id_rubparent)=spip_fetch_array($result);
                if( $id_rubparent && isset($GLOBALS['champs_extra_proposes']['articles'][$id_rubparent]) ) {
                        return $id_rubparent;                        
                } else {
                        return rub_extra($id_rubparent);
                }
        } else return 0;
}

// a partir de la liste des champs, generer la liste des input
function extra_saisie($extra, $type, $ensemble='') {
        $extra = unserialize($extra);

        // quels sont les extras de ce type d'objet
        if (!$champs = $GLOBALS['champs_extra'][$type])
                $champs = Array();

        // prendre en compte, eventuellement, les champs presents dans la base
        // mais oublies dans mes_options.
        if (is_array($extra))
                while (list($key,) = each($extra))
                        if (!$champs[$key])
                                $champs[$key] = "masque||($key?)";
                                
        
        // quels sont les extras proposes...
        
        // pas d'extra pour cette ensemble, on va chercher un extra en remontant les niveaux
        if ( $ensemble && $type=='articles' && !isset($GLOBALS['champs_extra_proposes'][$type][$ensemble]) ) {
                $ensemble = rub_extra($ensemble); // on recherche si pour une rubrique de plus haut niveau, existe des extras        
        }
        
        // ... si l'ensemble est connu
        if ( $ensemble && isset($GLOBALS['champs_extra_proposes'][$type][$ensemble]) ) {
                $champs_proposes = explode('|', $GLOBALS['champs_extra_proposes'][$type][$ensemble]);

        // ... sinon, les champs proposes par defaut
        } else if ( isset($GLOBALS['champs_extra_proposes'][$type]['tous']) ) {
                $champs_proposes = explode('|', $GLOBALS['champs_extra_proposes'][$type]['tous']);
        

        // sinon tous les champs extra du type
        } else {
                $champs_proposes =  Array();
                reset($champs);
                while (list($ch, ) = each($champs)) $champs_proposes[] = $ch;
        }
........

ecrire/mes_options.php3 :
ça ne change pas beaucoup par rapport à ce qu’il y avait:

$GLOBALS['champs_extra_proposes'] = Array(
        'articles'=>Array(
                // nous aurons le champ source et lignes_art sur tous les articles de la rubrique 121 et de ses sous-rubriques
                '121'=>'source|lignes_art',
                // nous aurons le champ liens et ligne_art sur tous les articles de la rubrique 2 et de ses sous-rubriques
                '2'=>'liens|lignes_art',
                'tous'=>'lignes_art',
        ),
........

interface_mes_options.php3:
Le script n’est pas complètement prêt, j’ai juste rajouter le menu déroulant avec l’arborescence du site, pour la rubrique à restreindre . Celà fonctionne en écriture, mais pas en lecture de la rubrique restreinte.

A installer d’abord : Interface graphique pour les extras

Script expérimental, à vous de tester ! J’attends vos remarques pour améliorer tout ça et continuer, parce que ce n’est pas fini...

updated on 26 October 2004

Discussion

Une discussion

  • bonjour,

    J ai rajouté des champs extra à mes articles ... pas de problemes...mais quand j active le multilinguisme , ces champs extras ne sont pas repris !!!

    Comment faire

    Merci d’avance

    Reply to this message

Comment on this article

Who are you?
  • [Log in]

To show your avatar with your message, register it first on gravatar.com (free et painless) and don’t forget to indicate your Email addresse here.

Enter your comment here

This form accepts SPIP shortcuts {{bold}} {italic} -*list [text->url] <quote> <code> and HTML code <q> <del> <ins>. To create paragraphs, just leave empty lines.

Add a document

Follow the comments: RSS 2.0 | Atom