Humeurs, trucs, tutos...
Vous êtes ici : Accueil » SPIP » Redéfinissons les "define" (paramétrer son site en SPIP)

Redéfinissons les "define" (paramétrer son site en SPIP)

D 6 septembre 2012     H 00:00     A François Rygaert (aka Suske)     C 3 messages


C’est un des "trucs" de SPIP : il y a des configurations "cachées" que l’on peut modifier pour modifier le fonctionnement du logiciel (ou d’un plugin). En fait, le code en est "truffé" et bien souvent, une simple surcharge de la valeur par défaut permet de résoudre au moins partiellement un "petit" problème... Un exemple avec le plugin "Sites".

Je découvre ce jour que les fichiers de syndication au format "atom" transmettent deux dates sous les entrées :

<published>2012-08-20T11:33:00.000-07:00</published><updated>2012-09-05T14:25:58.393-07:00</updated>

Et je découvre par là même que sur un site qui reprend ce type de flux de publication, SPIP utilise la valeur "updated" pour mettre à jour la date de publication. En l’occurrence, une simple correction d’alignement (un recentrage) d’une image sur le site d’origine entraîne la remontée d’un billet ancien en tête de liste à la date "updated"...

Comme je commence à connaître l’écureuil, je suppose a priori que certains réglages sont possibles, même si l’espace de gestion des plugins ou le menu interne ne propose pas de configuration. Cela se passe alors dans des valeurs constantes, définies dans le code.

On les trouve aisément en faisant une recherche sur les fichiers contenant le code "define(" par lequel ces réglages sont déclarés par défaut. Dans le cas qui m’occupe, je limite cette recherche au plugin "Sites", qui gère la syndication des sites. Bingo.

Dans plugins-dist/sites/genie/syndic.php :

- lignes 18 à 21 :

        define('_PERIODE_SYNDICATION', 2*60);
...
        define('_PERIODE_SYNDICATION_SUSPENDUE', 24*60);


- ligne 154 :         define('_SYNDICATION_URL_UNIQUE', false);
- ligne 160 :         define('_SYNDICATION_CORRECTION', true);

Cette dernière définition me semble intéressante, d’autant que les commentaires du développeur m’aident à voir que c’est ce que je recherche...

// Si false, on ne met pas a jour un lien deja syndique avec ses nouvelles
// donnees ; par defaut [true] : on met a jour si le contenu a change

J’ouvre donc les fichier config/mes_options.php et j’y insère simplement la ligne define('_SYNDICATION_CORRECTION', false);

Du coup, une fois un article syndiqué dans mon site, il ne sera plus modifié, vu que les constantes définies dans mes_options.php prennent la priorité sur leur définition éventuelle par ailleurs [1]

Des "define", il y en a plein dans SPIP et ils sont là pour permettre de paramétrer votre site comme vous l’entendez, du coup : pourquoi s’en priver ?


[1http://be2.php.net/manual/fr/language.constants.php précise "Comme son nom le suggère, cette valeur ne peut jamais être modifiée durant l’exécution du script...", hors mes_options.php est appelé par SPIP avant tout autre traitement, donc ce qui est défini là aura la priorité.

3 Messages

Un message, un commentaire ?
Forum sur abonnement

Pour participer à ce forum, vous devez vous enregistrer au préalable. Merci d’indiquer ci-dessous l’identifiant personnel qui vous a été fourni. Si vous n’êtes pas enregistré, vous devez vous inscrire.

Connexions’inscriremot de passe oublié ?