Ordre de définition des constantes

Salut,

je crois avoir déjà posé la question mais je ne retrouve pas où.

J’ai un plugin perso qui définit une constante via son fichier fonctions :

if (!defined('_BLOCS_DEPLIABLES_ZCM_BALISE')) {
    define('_BLOCS_DEPLIABLES_ZCM_BALISE', 'h2');
}

Via un autre plugin, mon squelette, j’essaye de surcharger cette constante via son fichier fonctions avec :

define('_BLOCS_DEPLIABLES_ZCM_BALISE', 'p');

mais ça ne marche pas et j’ai un warning

 Warning: Constant _BLOCS_DEPLIABLES_ZCM_BALISE already defined in XXXX\plugins\mon_plugin_squelette\prefixe_fonctions.php on line 17

Le test !defined du premier plugin devrait éviter ça, non ?

La seule solution que j’ai trouvée est de passer par le fichier options du plugin squelette mais je ne comprends pas pourquoi.

C’est normal ?

Hop,

De ce que je lis sur spip.net on recommande toujours de défénir les constantes dans mes_options, exemple https://www.spip.net/fr_article4647.html#_DOC_MAX_SIZE

Là dessus faudrait chercher plus en détail, mais je pense que oui :slight_smile:

Ok, ça me va :slight_smile:

Le but était d’avoir le moins de chose possible dans le fichier options car, de ce que j’ai compris, il appelé à chaque affichage de page alors que fonctions n’est appelé qu’au recalcule.

Bonsoir,

Tu peux peut-être tester le var_mode dans ton fichier options pour n’avoir le define qu’au recalcul ?

Merci pour la piste.
Bon, l’idée est de rester simple, c’était juste pour essayer de gagner un peu en perf :laughing: