SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano

279 Plugins, 195 contribs sur SPIP-Zone, 65 visiteurs en ce moment

Accueil > Améliorations de l’espace privé > Champs extra > Champ Extra sur les articles d’une rubrique et de ses sous-rubriques.

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

26 octobre 2004 – par Ara – commentaire

Toutes les versions de cet article : [français] [français]

2 votes

Ceci est une ARCHIVE, peut-être périmée. Vérifiez bien les compatibilités !

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

Zip - 11.5 ko

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

Retour en haut de la page

Tout afficher

Vos commentaires

Répondre à cet article

Qui êtes-vous ?
  • [Se connecter]

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici Les choses à faire avant de poser une question (Prolégomènes aux rapports de bugs. )
Ajouter un document

Retour en haut de la page

Ça discute par ici

  • Le plugin « Autorité »

    20 mai 2007 – 314 commentaires

    Ce plugin permet de configurer des « autorisations » différentes de celles par défaut.

  • Sarka-SPIP 3

    15 septembre 2009 – 198 commentaires

    Si la lignée 3 de Sarka-SPIP a été l’occasion de refaire presque entièrement le code du squelette elle continue à évoluer et à s’améliorer au fil des versions. Nous ne saurions trop conseiller aux nouveaux utilisateurs - et aussi aux anciens - d’utiliser (...)

  • GIS 4

    11 août 2012 – 698 commentaires

    Présentation et nouveautés La version 4 de GIS abandonne la libraire Mapstraction au profit de Leaflet. Cette librairie permet de s’affranchir des librairies propriétaires tout en gardant les mêmes fonctionnalités, elle propose même de nouvelles (...)

  • Mailsubscribers

    16 janvier 2013 – 124 commentaires

    Ce plugin permet de gérer les inscriptions (ou abonnements) à la diffusion de contenu par email. Mailsubscribers permet de gérer les inscriptions par Opt-in simple ou double et la désinscription par URL. Ce plugin gère également plusieurs listes de (...)

  • Afficher des répertoires ou un site externe dans un site SPIP

    29 novembre 2004 – commentaires

    L’objectif de cette contrib est de permettre, à l’intérieur d’un site SPIP, d’afficher simplement le contenu de répertoires du disque, de naviguer dans ceux-ci et même d’afficher un site web externe.