SPIP-Contrib

SPIP-Contrib

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

289 Plugins, 197 contribs sur SPIP-Zone, 73 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. (Mise (...)

Champ Extra sur les articles d’une rubrique et de ses sous-rubriques. (Mise à jour)

2 mars 2005 – par Ara – commentaires

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

0 vote

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 personnalisé source et liens sur tous les articles de la rubrique 121 et de ses sous-rubriques
                '121'=>'source|liens',
                // nous aurons le champ liens sur tous les articles de la rubrique 2 et de ses sous-rubriques
                '2'=>'liens',
                // Attention, il faut obligatoirement mettre la ligne suivante si vos autres articles n'ont pas d'extras sinon ça ne fonctionne pas.
                'tous'=>'',
        ),
........

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...

Dernière modification de cette page le 12 mai 2005

Retour en haut de la page

Vos commentaires

  • Le 16 janvier 2006 à 22:33, par ppcm En réponse à : Champ Extra sur les articles d’une rubrique et de ses sous-rubriques. (Mise à jour)

    Pour que ceci fonctionne bien en 1.8.x, voici quelques modifications à apporter au hack :

    Dans ecrire/inc_extra.php3

    // recherche rubrique parente éventuelle sur lequel s’applique des extras
    function rub_extra($type, $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’][$type][$id_rubparent]) )
    return $id_rubparent ;
    else
    return rub_extra($type, $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 && !isset($GLOBALS[’champs_extra_proposes’][$type][$ensemble]) )
    $ensemble = rub_extra($type, $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 ;

    ...

    Ainsi ceci marchera avec les rubriques, sous-rubriques et articles

    Répondre à ce message

  • Le 14 juillet 2005 à 17:17, par Alain100 En réponse à : > Champ Extra sur les articles d’une rubrique et de ses sous-rubriques. (Mise à jour)

    Bonjour,

    très belle contribution, utile pour les utilisateue 1.7 mais ne fonctionne pas sur 1.8. :( Est-ce que quelqu’un pourrais l’adapter, cela serait très utile

    merci

    Alain

    Répondre à ce message

Répondre à cet article

Qui êtes-vous ?

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

  • Mises en exposant

    28 décembre 2006 – 108 commentaires

    Cet outil du Couteau Suisse améliore le rendu typographique des abréviations courantes, en mettant en exposant les éléments nécessaires (ainsi, Mme devient Mme) et en corrigeant les erreurs courantes (2ème ou 2me, par exemple, deviennent 2e, seule (...)

  • Rubrique à l’inscription

    28 juin 2010 – 131 commentaires

    Ce plugin propose lors de l’inscription d’un auteur de lui créer automatiquement une rubrique, où il peut être adminstrateur restreint. Installation Le plugin s’installe comme n’importe quel plugin. Il nécessite SPIP 2.0 à minima, mais fonctionne (...)

  • ScolaSPIP 4

    19 janvier 2016 – 284 commentaires

    ScolaSPIP est plugin-squelette responsive personnalisable pour sites Web d’établissements scolaires basé sur SPIPr Présentation de ScolaSPIP Ce plugin pour SPIP 3 est développé par la Dane de l’académie de Versailles pour les webmestres de cette (...)

  • Lecteur pdf javascript pdf.js

    20 février 2012 – 172 commentaires

    Ce plugin est basé sur le projet pdf.js qui permet une lecture en ligne des pdfs depuis le navigateur. Ce plugin est expérimental et les contributions sur la zone sont les bienvenues. Avantages Open source Ne requiert pas flash et donc (...)

  • Éditorial (HTML5UP)

    27 novembre 2017 – 54 commentaires

    Squelette SPIP pour intégrer le modèle Editorial de HTML5UP https://html5up.net/editorial Configuration La page de configuration permet quelques réglages. On y défini la couleur principale du site, des informations de contact et le contenu de la (...)