# PARTIE VI — Référence

# CHAPITRE 32 — Référence des scripts en ligne de commande

<span style="white-space: pre-wrap;">Tous les scripts en ligne de commande livrés avec le module. Chemin : </span>`<span class="editor-theme-code">htdocs/custom/infrasstudio/scripts/</span>`.

### <span style="color: rgb(35, 111, 161);">rescan\_slots.php</span>

Rescanne les fichiers tpl.php d'un site et synchronise la table des slots.

```
php rescan_slots.php <website_ref_or_id> [--entity=N] [--purge-orphans] [--dry-run] [--lint]
```

<table id="bkmrk-optioneffet--entity%3D" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.92em;"><colgroup><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Option

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Effet

</th></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">--entity=N</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Force l'entity Dolibarr.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">--purge-orphans</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Supprime immédiatement les slots orphelins (sans attendre 30 jours).

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">--dry-run</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Affiche les changements sans les appliquer.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">--lint</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Vérifie la syntaxe des slots. Code de sortie : 0 sans anomalie, 1 avec avertissement, 2 avec erreur.

</td></tr></tbody></table>

### <span style="color: rgb(35, 111, 161);">rebuild\_solution\_wrappers.php</span>

Reconstruit manuellement les wrappers solution-\*.php du catalogue produit.

```
php rebuild_solution_wrappers.php <websitekey-or-id> <public-docroot> [entity]

# Exemple
php rebuild_solution_wrappers.php monsite /var/www/monsite 2
```

### <span style="color: rgb(35, 111, 161);">generate\_sitemap.php</span>

Génère le fichier sitemap.xml d'un site.

```
php generate_sitemap.php <website_ref> [entity]
```

Idéal pour une planification quotidienne via cron :

```
# crontab -e
0 3 * * * php /var/www/dolibarr/htdocs/custom/infrasstudio/scripts/generate_sitemap.php monsite 2
```

### <span style="color: rgb(35, 111, 161);">preset\_default.php</span>

Chargeur générique de presets JSON. Crée des champs personnalisés produit en série.

```
php preset_default.php <chemin-vers-preset.json>

# Exemple avec le preset livré
php preset_default.php htdocs/custom/infrasstudio/presets/keaticweb.json
```

Format JSON attendu : voir la documentation des presets.

### <span style="color: rgb(35, 111, 161);">preset\_keatic.php</span>

<span style="white-space: pre-wrap;">Wrapper de compatibilité — équivalent à </span>`<span class="editor-theme-code">preset_default.php presets/keaticweb.json</span>`.

### <span style="color: rgb(35, 111, 161);">consolidate\_sister\_pages.php</span>

Consolide une famille de pages sœurs (modèle B legacy) en une page canonique et plusieurs stubs (modèle A moderne).

```
php consolidate_sister_pages.php <site_ref> \
    [--entity=N] \
    [--base-slug=<slug>] \
    [--dry-run] \
    [--extractor=/path/to/extractor.php]
```

### <span style="color: rgb(35, 111, 161);">convert\_tpl\_to\_slots.php</span>

<span style="white-space: pre-wrap;">Transforme les </span>`<span class="editor-theme-code">echo $langs->trans('Key')</span>`<span style="white-space: pre-wrap;"> d'un fichier tpl.php en tokens </span>`<span class="editor-theme-code">{{slot:...|default=@lang:Key}}</span>`.

```
php convert_tpl_to_slots.php <tpl_path> [--group=xxx] [--prefix=yyy] [--dry-run] [--hook-engine]
```

<table id="bkmrk-optioneffet--group%3Dx" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.92em;"><colgroup><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Option

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Effet

</th></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">--group=xxx</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Attribut group par défaut.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">--prefix=yyy</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Préfixe des noms de slot.

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">--dry-run</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Aperçu des modifications sans application.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">--hook-engine</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Ajoute également l'inclusion du moteur du module.

</td></tr></tbody></table>

### <span style="color: rgb(35, 111, 161);">Bonnes pratiques en ligne de commande</span>

- <span style="white-space: pre-wrap;">Toujours utiliser </span>`<span class="editor-theme-code">--dry-run</span>`<span style="white-space: pre-wrap;"> avant une migration importante.</span>
- Lancer en tant qu'utilisateur Apache (`<span class="editor-theme-code">sudo -u www-data php script.php</span>`) pour éviter les problèmes de permissions sur les fichiers générés.
- <span style="white-space: pre-wrap;">En multicompany, toujours préciser </span>`<span class="editor-theme-code">--entity=N</span>`.
- <span style="white-space: pre-wrap;">Capturer la sortie dans un journal : </span>`<span class="editor-theme-code">php script.php 2>&1 | tee /tmp/script.log</span>`.

**Fin de la Partie VI —**<span style="white-space: pre-wrap;"> Vous disposez désormais d'un mémo complet : constantes, shortcodes, hooks, tables SQL, scripts en ligne de commande. Tout est rassemblé en un seul endroit pour une consultation rapide.</span>

# CHAPITRE 31 — Référence SQL : tables et colonnes

### <span style="color: rgb(35, 111, 161);">llx\_infrasstudio\_slot</span>

<span style="white-space: pre-wrap;">Stockage des valeurs de slot. Une ligne par combinaison </span>`<span class="editor-theme-code">(fk_website_page, slot_name, lang, entity)</span>`.

<table id="bkmrk-colonnetypedescripti" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.92em;"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Colonne

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Type

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Description

</th></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">rowid</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">INT PK

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Identifiant auto-incrémenté

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">fk_website_page</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">INT

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);"><span style="white-space: pre-wrap;">Référence vers </span>

`<span class="editor-theme-code">llx_website_page</span>`

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">slot_name</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">VARCHAR(64)

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Identifiant du slot

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">slot_type</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">VARCHAR(16)

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">text, textarea, richtext, image, url, etc.

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">lang</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">VARCHAR(8)

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Vide = canonique, sinon locale (fr\_FR, en\_US, etc.)

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">value</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">LONGTEXT

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Valeur publique

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">value_draft</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">LONGTEXT

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Brouillon en attente

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">label</span>`

<span style="white-space: pre-wrap;">, </span>

`<span class="editor-theme-code">default_value</span>`

<span style="white-space: pre-wrap;">, </span>

`<span class="editor-theme-code">group_name</span>`

<span style="white-space: pre-wrap;">, </span>

`<span class="editor-theme-code">help</span>`

<span style="white-space: pre-wrap;">, </span>

`<span class="editor-theme-code">options</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">VARCHAR/TEXT

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Métadonnées (sur la ligne canonique uniquement)

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">maxlength</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">INT

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Limite de caractères

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">status</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">INT

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">1 = actif, 0 = orphelin

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">tms</span>`

<span style="white-space: pre-wrap;">, </span>

`<span class="editor-theme-code">fk_user_*</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">DATETIME, INT

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Audit standard Dolibarr

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">entity</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">INT

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Multicompany

</td></tr></tbody></table>

**Index unique**<span style="white-space: pre-wrap;"> : </span>`<span class="editor-theme-code">uk_infrasstudio_slot_uniq (fk_website_page, slot_name, lang, entity)</span>`.

### <span style="color: rgb(35, 111, 161);">llx\_infrasstudio\_media</span>

<table id="bkmrk-colonnetypedescripti-1" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.92em;"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Colonne

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Type

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Description

</th></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">rowid</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">INT PK

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Identifiant auto-incrémenté

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">ref</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">VARCHAR(64)

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Identifiant unique par entity

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">label</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">VARCHAR(255)

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Nom affiché

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">kind</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">VARCHAR(16)

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">image, video, document

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">filepath</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">VARCHAR(255)

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);"><span style="white-space: pre-wrap;">Chemin relatif à </span>

`<span class="editor-theme-code">DOL_DATA_ROOT</span>`

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">filesize</span>`

<span style="white-space: pre-wrap;">, </span>

`<span class="editor-theme-code">mime</span>`

<span style="white-space: pre-wrap;">, </span>

`<span class="editor-theme-code">width</span>`

<span style="white-space: pre-wrap;">, </span>

`<span class="editor-theme-code">height</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">INT/VARCHAR

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Métadonnées physiques

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">alt</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">VARCHAR(255)

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Texte alternatif canonique

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">tags</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">VARCHAR(255)

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">CSV de tags

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">fk_website</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">INT

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Site associé

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">variants_json</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">TEXT

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Cartographie des variantes générées

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">status</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">INT

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">1 = actif, 0 = corbeille

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">entity</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">INT

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Multicompany

</td></tr></tbody></table>

### <span style="color: rgb(35, 111, 161);">llx\_infrasstudio\_media\_alt</span>

Surcharges du texte alternatif par langue.

<table id="bkmrk-colonnestyperowid-pk" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.92em;"><colgroup><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Colonnes

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Type

</th></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">rowid</span>`

<span style="white-space: pre-wrap;"> PK, </span>

`<span class="editor-theme-code">fk_media</span>`

<span style="white-space: pre-wrap;">, </span>

`<span class="editor-theme-code">lang</span>`

<span style="white-space: pre-wrap;">, </span>

`<span class="editor-theme-code">alt</span>`

<span style="white-space: pre-wrap;">, </span>

`<span class="editor-theme-code">entity</span>`

<span style="white-space: pre-wrap;">, </span>

`<span class="editor-theme-code">tms</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Standards

</td></tr></tbody></table>

**Index unique**<span style="white-space: pre-wrap;"> : </span>`<span class="editor-theme-code">(fk_media, lang, entity)</span>`.

### <span style="color: rgb(35, 111, 161);">llx\_infrasstudio\_revision</span>

Historique en mode ajout uniquement des modifications.

<span style="white-space: pre-wrap;">Colonnes : </span>`<span class="editor-theme-code">rowid</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">object_type</span>`<span style="white-space: pre-wrap;"> (slot ou media), </span>`<span class="editor-theme-code">fk_object</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">action</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">payload</span>`<span style="white-space: pre-wrap;"> (JSON), </span>`<span class="editor-theme-code">fk_user</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">date_creation</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">entity</span>`.

### <span style="color: rgb(35, 111, 161);">llx\_infrasstudio\_product\_translation</span>

Surcharges par langue des champs personnalisés produit traduisibles.

<table id="bkmrk-colonnetyperowidpkfk" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.92em;"><colgroup><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Colonne

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Type

</th></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">rowid</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">PK

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">fk_product</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">INT

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">lang</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">VARCHAR(8)

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">field</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">VARCHAR(64) — slug du champ personnalisé

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">value</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">MEDIUMTEXT

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">tms</span>`

<span style="white-space: pre-wrap;">, </span>

`<span class="editor-theme-code">entity</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Standards

</td></tr></tbody></table>

**Index unique**<span style="white-space: pre-wrap;"> : </span>`<span class="editor-theme-code">(fk_product, lang, field, entity)</span>`.

### <span style="color: rgb(35, 111, 161);">Tables Dolibarr utilisées sans modification</span>

- `<span class="editor-theme-code">llx_website</span>`<span style="white-space: pre-wrap;"> — sites</span>
- `<span class="editor-theme-code">llx_website_page</span>`<span style="white-space: pre-wrap;"> — pages (titre SEO, meta description, status, gabarit)</span>
- `<span class="editor-theme-code">llx_product</span>`<span style="white-space: pre-wrap;"> — produits (label et description FR canoniques, prix, tosell)</span>
- `<span class="editor-theme-code">llx_product_lang</span>`<span style="white-space: pre-wrap;"> — traductions natives label et description</span>
- `<span class="editor-theme-code">llx_product_extrafields</span>`<span style="white-space: pre-wrap;"> — champs personnalisés canoniques (FR)</span>
- `<span class="editor-theme-code">llx_categorie</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">llx_categorie_product</span>`<span style="white-space: pre-wrap;"> — catégories</span>
- `<span class="editor-theme-code">llx_const</span>`<span style="white-space: pre-wrap;"> — constantes du module</span>
- `<span class="editor-theme-code">llx_extrafields</span>`<span style="white-space: pre-wrap;"> — définitions des champs personnalisés</span>
- `<span class="editor-theme-code">llx_cronjob</span>`<span style="white-space: pre-wrap;"> — tâches planifiées</span>
- `<span class="editor-theme-code">llx_ecm_files</span>`<span style="white-space: pre-wrap;"> — fichiers attachés aux produits (mode du sélecteur à deux onglets)</span>

# CHAPITRE 30 — Référence des hooks et triggers

### <span style="color: rgb(35, 111, 161);">Hooks Dolibarr utilisés par le module</span>

<table id="bkmrk-hookm%C3%A9thode-appel%C3%A9er" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.92em;"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Hook

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Méthode appelée

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Rôle

</th></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">main</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">checkSecureAccess</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);"><span style="white-space: pre-wrap;">Sécurité de l'accès aux médias via </span>

`<span class="editor-theme-code">document.php?modulepart=infrasstudio</span>`

.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">login</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">divers

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Initialisations à la connexion.

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">websitepage</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">completeHtmlOutput</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Résolution des slots et shortcodes au moment du rendu public. Cœur du module.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">websitenav</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">divers

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Personnalisation des menus du module Website.

</td></tr></tbody></table>

<span style="white-space: pre-wrap;">Implémentation : </span>`<span class="editor-theme-code">htdocs/custom/infrasstudio/class/actions_infrasstudio.class.php</span>`.

### <span style="color: rgb(35, 111, 161);">Triggers Dolibarr écoutés</span>

<span style="white-space: pre-wrap;">Trigger </span>`<span class="editor-theme-code">InterfaceInfrasstudiotrigger</span>`<span style="white-space: pre-wrap;"> dans </span>`<span class="editor-theme-code">core/triggers/interface_99_modinfrasstudio_Infrasstudiotrigger.class.php</span>`.

<table id="bkmrk-%C3%89v%C3%A9nementr%C3%A9actionpro" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.92em;"><colgroup><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Événement

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Réaction

</th></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">PRODUCT_CREATE</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Régénération des wrappers solution-\*.php

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">PRODUCT_MODIFY</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">idem

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">PRODUCT_DELETE</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">idem

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">PRODUCT_PRICE_MODIFY</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">idem

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">CATEGORY_LINK</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);"><span style="white-space: pre-wrap;">idem (uniquement si </span>

`<span class="editor-theme-code">$object->element === 'product'</span>`

)

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">CATEGORY_UNLINK</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">idem

</td></tr></tbody></table>

### <span style="color: rgb(35, 111, 161);">Triggers Dolibarr émis par le module</span>

<table id="bkmrk-trigger-%C3%A9misquandpro" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.92em;"><colgroup><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Trigger émis

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Quand

</th></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">PRODUCT_MODIFY</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);"><span style="white-space: pre-wrap;">Modification du libellé ou de la description en français depuis le Studio (via </span>

`<span class="editor-theme-code">Product::update()</span>`

).

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">PRODUCT_SET_MULTILANGS</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Modification des traductions natives produit depuis le Studio.

</td></tr></tbody></table>

### <span style="color: rgb(35, 111, 161);">Tâches planifiées déclarées</span>

<table id="bkmrk-t%C3%A2chefr%C3%A9quencer%C3%B4lest" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.92em;"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Tâche

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Fréquence

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Rôle

</th></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">StudioSolutionWrapper::rebuildAllConfigured</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Toutes les heures

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Filet de sécurité pour la régénération des wrappers solution.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Purge des slots orphelins

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Quotidien

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Suppression des slots orphelins de plus de 30 jours.

</td></tr></tbody></table>

# CHAPITRE 29 — Référence des shortcodes

Tous les shortcodes livrés par le module, avec leurs sélecteurs et leurs champs disponibles.

### <span style="color: rgb(35, 111, 161);">Namespace product</span>

**Sélecteurs**<span style="white-space: pre-wrap;"> : </span>`<span class="editor-theme-code">ref=<ref></span>`<span style="white-space: pre-wrap;"> ou </span>`<span class="editor-theme-code">id=<rowid></span>`<span style="white-space: pre-wrap;"> ou </span>`<span class="editor-theme-code">ref=$current</span>`<span style="white-space: pre-wrap;"> (marqueur).</span>

<table id="bkmrk-champsourcelabelllx_" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.92em;"><colgroup><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Champ

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Source

</th></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">label</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">llx_product</span>`

<span style="white-space: pre-wrap;"> et </span>

`<span class="editor-theme-code">llx_product_lang</span>`

<span style="white-space: pre-wrap;"> selon la langue</span>

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">description</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">idem

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">note</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);"><span style="white-space: pre-wrap;">si </span>

`<span class="editor-theme-code">PRODUCT_USE_OTHER_FIELD_IN_TRANSLATION</span>`

<span style="white-space: pre-wrap;"> est activée</span>

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">ref</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">llx_product.ref</span>`

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">price</span>`

<span style="white-space: pre-wrap;">, </span>

`<span class="editor-theme-code">price_ttc</span>`

<span style="white-space: pre-wrap;">, </span>

`<span class="editor-theme-code">cost_price</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Prix formatés selon la langue

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">tosell</span>`

<span style="white-space: pre-wrap;">, </span>

`<span class="editor-theme-code">tobuy</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Statuts commercialisable et achetable (0 ou 1)

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">ef_<slug></span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Tout champ personnalisé

</td></tr></tbody></table>

```
{{product:ref=supplyflow.label}}
{{product:ref=$current.ef_tagline}}
{{product:id=42.price}}
```

### <span style="color: rgb(35, 111, 161);">Namespace category</span>

**Sélecteurs**<span style="white-space: pre-wrap;"> : </span>`<span class="editor-theme-code">id=<rowid></span>`<span style="white-space: pre-wrap;"> ou </span>`<span class="editor-theme-code">ref=<ref></span>`.

**Champs**<span style="white-space: pre-wrap;"> : </span>`<span class="editor-theme-code">label</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">description</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">color</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">ref</span>`.

```
{{category:id=5.label}}
{{category:ref=blog-marketing.label}}
```

### <span style="color: rgb(35, 111, 161);">Namespace dict</span>

**Sélecteurs**<span style="white-space: pre-wrap;"> : </span>`<span class="editor-theme-code"><table>.<col>=<valeur></span>`.

<table id="bkmrk-table-de-dictionnair" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.92em;"><colgroup><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Table de dictionnaire

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Exemple

</th></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">c_country</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">{{dict:c_country.code=FR.label}}</span>`

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">c_currencies</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">{{dict:c_currencies.code_iso=EUR.label}}</span>`

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">c_civility</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">{{dict:c_civility.code=MR.label}}</span>`

</td></tr></tbody></table>

### <span style="color: rgb(35, 111, 161);">Namespace mysoc</span>

**Sélecteur**<span style="white-space: pre-wrap;"> : aucun (singleton).</span>

**Champs**<span style="white-space: pre-wrap;"> : </span>`<span class="editor-theme-code">name</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">address</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">zip</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">town</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">country_code</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">phone</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">fax</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">email</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">url</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">capital</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">tva_intra</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">idprof1</span>`<span style="white-space: pre-wrap;"> à </span>`<span class="editor-theme-code">idprof6</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">logo</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">logo_small</span>`<span style="white-space: pre-wrap;">, </span>`<span class="editor-theme-code">logo_squarred</span>`.

```
{{mysoc.name}} — {{mysoc.address}}, {{mysoc.zip}} {{mysoc.town}}
SIRET {{mysoc.idprof2}} — TVA {{mysoc.tva_intra}}
```

### <span style="color: rgb(35, 111, 161);">Namespace extrafield</span>

**Sélecteurs**<span style="white-space: pre-wrap;"> : </span>`<span class="editor-theme-code">table=<table>|ref=<ref></span>`<span style="white-space: pre-wrap;"> ou </span>`<span class="editor-theme-code">table=<table>|id=<id></span>`<span style="white-space: pre-wrap;"> avec </span>`<span class="editor-theme-code">field=<name></span>`.

```
{{extrafield:table=product|ref=supplyflow|field=tagline}}
{{extrafield:table=societe|id=42|field=segment}}
{{extrafield:table=product|ref=$current|field=tagline}}
```

### <span style="color: rgb(35, 111, 161);">Namespace media</span>

**Sélecteur**<span style="white-space: pre-wrap;"> : </span>`<span class="editor-theme-code">ref=<ref></span>`.

<table id="bkmrk-champretoururlurl-du" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.92em;"><colgroup><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Champ

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Retour

</th></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">url</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">URL du fichier original

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">thumb</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">URL de la variante 200 × 200

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">card</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">URL de la variante 640 × 480

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">wide</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">URL de la variante 1600 × 1200

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">alt</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Texte alternatif (résolu selon la langue)

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">label</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Libellé affiché

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">width</span>`

<span style="white-space: pre-wrap;">, </span>

`<span class="editor-theme-code">height</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Dimensions en pixels

</td></tr></tbody></table>

### <span style="color: rgb(35, 111, 161);">Étendre avec un namespace personnalisé</span>

<span style="white-space: pre-wrap;">Déposez un fichier dans </span>`<span class="editor-theme-code">htdocs/custom/infrasstudio/shortcodes/<nom>.shortcode.php</span>`<span style="white-space: pre-wrap;"> qui exporte une fonction </span>`<span class="editor-theme-code">infrasstudio_shortcode_<nom>_resolve($args, $context)</span>`.

```
function infrasstudio_shortcode_myorg_resolve($args, $context)
{
    global $db;
    $id    = isset($args['id']) ? (int) $args['id'] : 0;
    $field = isset($args['_field']) ? $args['_field'] : 'name';
    // ... logique de résolution
    return $value;
}
```

# CHAPITRE 28 — Référence des constantes

Toutes les constantes Dolibarr utilisées par le module, classées par catégorie d'usage. Format : nom, type, valeur par défaut, description.

### <span style="color: rgb(35, 111, 161);">Sites gérés</span>

<table id="bkmrk-constantetyped%C3%A9fautd" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.92em;"><colgroup><col></col><col></col><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Constante

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Type

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Défaut

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Description

</th></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_MANAGED_SITES</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">CSV

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">vide

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);"><span style="white-space: pre-wrap;">Identifiants des sites Website gérés (par exemple </span>

`<span class="editor-theme-code">1,2,5</span>`

).

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_SITE_<id>_MEDIA_MODE</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">chaîne

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">native</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);"><span style="white-space: pre-wrap;">Mode média par site : </span>

`<span class="editor-theme-code">native</span>`

<span style="white-space: pre-wrap;"> ou </span>

`<span class="editor-theme-code">module</span>`

.

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_SITE_<id>_BLOG_INDEX_PAGE</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">entier

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">0

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Identifiant de la page d'index du blog (active l'assistant « + Nouvel article »).

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_SITE_<id>_DOCROOT</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">chemin

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">vide

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Surcharge du docroot Apache de ce site.

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_SITE_<id>_LAST_IMPORT</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">timestamp

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">0

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Géré automatiquement. Horodatage du dernier rescan automatique des médias.

</td></tr></tbody></table>

### <span style="color: rgb(35, 111, 161);">Portabilité du système de fichiers</span>

<table id="bkmrk-constantetyped%C3%A9fautd-1" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.92em;"><colgroup><col></col><col></col><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Constante

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Type

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Défaut

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Description

</th></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_DOCROOT_PATTERN</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">modèle

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">vide

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);"><span style="white-space: pre-wrap;">Modèle partagé avec marqueur </span>

`<span class="editor-theme-code">{ref}</span>`

<span style="white-space: pre-wrap;">. Exemple : </span>

`<span class="editor-theme-code">/srv/sites/{ref}</span>`

.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_TEMPLATE_EXTRA_DIR</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">chemin

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">vide

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Dossier supplémentaire pour les gabarits.

</td></tr></tbody></table>

### <span style="color: rgb(35, 111, 161);">Catalogue produit</span>

<table id="bkmrk-constantetyped%C3%A9fautd-2" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.92em;"><colgroup><col></col><col></col><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Constante

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Type

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Défaut

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Description

</th></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_WEBSITE_KEY</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">chaîne

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">vide

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Référence du site cible des wrappers.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_PUBLIC_DOCROOT</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">chemin

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">vide

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Docroot Apache absolu où écrire les wrappers.

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_PRODUCT_UNIVERS_MAP</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">JSON

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">vide

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Surcharge de la cartographie catégorie vers univers.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_TRANSLATABLE_PRODUCT_FIELDS</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">CSV

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">vide

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Slugs de champs personnalisés à ajouter au registre traduisible.

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_TRANSLATABLE_PRODUCT_FIELDS_JSON</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">JSON

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">vide

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Surcharge complète du registre.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_SITE_<id>_WRAPPER_PREFIX</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">chaîne

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">solution-</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Préfixe des wrappers générés.

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_SITE_<id>_WRAPPER_TEMPLATE_PAGEURL</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">chaîne

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">solution-detail</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Slug Dolibarr du gabarit.

</td></tr></tbody></table>

### <span style="color: rgb(35, 111, 161);">Apparence du Studio</span>

<table id="bkmrk-constantevaleursd%C3%A9fa" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.92em;"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Constante

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Valeurs

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Défaut

</th></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_UI_THEME</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">light</span>`

<span style="white-space: pre-wrap;">, </span>

`<span class="editor-theme-code">dark</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">light</span>`

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_UI_ACCENT</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">indigo</span>`

<span style="white-space: pre-wrap;">, </span>

`<span class="editor-theme-code">ochre</span>`

<span style="white-space: pre-wrap;">, </span>

`<span class="editor-theme-code">plum</span>`

<span style="white-space: pre-wrap;">, </span>

`<span class="editor-theme-code">forest</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">indigo</span>`

</td></tr></tbody></table>

### <span style="color: rgb(35, 111, 161);">Multilingue</span>

<table id="bkmrk-constantetypedescrip" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.92em;"><colgroup><col></col><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Constante

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Type

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Description

</th></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_LANG_ISO</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">chaîne

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Langue active. Définie dynamiquement par les gabarits.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_LANG_COOKIE</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">chaîne

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Nom du cookie de persistance de la langue.

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_LANG_MAP_JSON</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">JSON

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Surcharge de la cartographie ISO2 vers locale.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_BLOG_FALLBACK_IMAGE</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">URL

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Image par défaut pour les articles sans image principale.

</td></tr></tbody></table>

### <span style="color: rgb(35, 111, 161);">Compatibilité et débogage</span>

<table id="bkmrk-constantedescription" style="width: 100%; border-collapse: collapse; margin: 1rem 0px; font-size: 0.92em;"><colgroup><col></col><col></col></colgroup><tbody><tr style="background: rgb(25, 5, 45); color: rgb(254, 252, 232);"><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Constante

</th><th class="align-left" style="padding: 0.5rem; text-align: left; border: 1px solid rgb(25, 5, 45);">Description

</th></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_DOL_VERSION</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Géré automatiquement. Version de Dolibarr lors de l'activation.

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_MAIN_VERSION</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Géré automatiquement. Version du module.

</td></tr><tr><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIO_DISABLE_CHECK_VERSION_MIN</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);"><span style="white-space: pre-wrap;">Régler sur </span>

`<span class="editor-theme-code">1</span>`

<span style="white-space: pre-wrap;"> pour contourner la vérification de version Dolibarr minimale.</span>

</td></tr><tr style="background: rgb(250, 245, 255);"><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">`<span class="editor-theme-code">INFRASSTUDIOBKP_*</span>`

</td><td style="padding: 0.5rem; border: 1px solid rgb(229, 231, 235);">Sauvegarde automatique des constantes lors d'une désactivation. Préfixe accolé au nom d'origine.

</td></tr></tbody></table>