PARTIE VI — Référence

CHAPITRE 29 — Référence des shortcodes

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

Namespace product

Sélecteurs : ref=<ref> ou id=<rowid> ou ref=$current (marqueur).

Champ

Source

label

llx_product

et

llx_product_lang

selon la langue

description

idem

note

si

PRODUCT_USE_OTHER_FIELD_IN_TRANSLATION

est activée

ref

llx_product.ref

price

,

price_ttc

,

cost_price

Prix formatés selon la langue

tosell

,

tobuy

Statuts commercialisable et achetable (0 ou 1)

ef_<slug>

Tout champ personnalisé

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

Namespace category

Sélecteurs : id=<rowid> ou ref=<ref>.

Champs : label, description, color, ref.

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

Namespace dict

Sélecteurs : <table>.<col>=<valeur>.

Table de dictionnaire

Exemple

c_country

{{dict:c_country.code=FR.label}}

c_currencies

{{dict:c_currencies.code_iso=EUR.label}}

c_civility

{{dict:c_civility.code=MR.label}}

Namespace mysoc

Sélecteur : aucun (singleton).

Champs : name, address, zip, town, country_code, phone, fax, email, url, capital, tva_intra, idprof1 à idprof6, logo, logo_small, logo_squarred.

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

Namespace extrafield

Sélecteurs : table=<table>|ref=<ref> ou table=<table>|id=<id> avec field=<name>.

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

Namespace media

Sélecteur : ref=<ref>.

Champ

Retour

url

URL du fichier original

thumb

URL de la variante 200 × 200

card

URL de la variante 640 × 480

wide

URL de la variante 1600 × 1200

alt

Texte alternatif (résolu selon la langue)

label

Libellé affiché

width

,

height

Dimensions en pixels

Étendre avec un namespace personnalisé

Déposez un fichier dans htdocs/custom/infrasstudio/shortcodes/<nom>.shortcode.php qui exporte une fonction infrasstudio_shortcode_<nom>_resolve($args, $context).

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 30 — Référence des hooks et triggers

Hooks Dolibarr utilisés par le module

Hook

Méthode appelée

Rôle

main

checkSecureAccess

Sécurité de l'accès aux médias via

document.php?modulepart=infrasstudio

.

login

divers

Initialisations à la connexion.

websitepage

completeHtmlOutput

Résolution des slots et shortcodes au moment du rendu public. Cœur du module.

websitenav

divers

Personnalisation des menus du module Website.

Implémentation : htdocs/custom/infrasstudio/class/actions_infrasstudio.class.php.

Triggers Dolibarr écoutés

Trigger InterfaceInfrasstudiotrigger dans core/triggers/interface_99_modinfrasstudio_Infrasstudiotrigger.class.php.

Événement

Réaction

PRODUCT_CREATE

Régénération des wrappers solution-*.php

PRODUCT_MODIFY

idem

PRODUCT_DELETE

idem

PRODUCT_PRICE_MODIFY

idem

CATEGORY_LINK

idem (uniquement si

$object->element === 'product'

)

CATEGORY_UNLINK

idem

Triggers Dolibarr émis par le module

Trigger émis

Quand

PRODUCT_MODIFY

Modification du libellé ou de la description en français depuis le Studio (via

Product::update()

).

PRODUCT_SET_MULTILANGS

Modification des traductions natives produit depuis le Studio.

Tâches planifiées déclarées

Tâche

Fréquence

Rôle

StudioSolutionWrapper::rebuildAllConfigured

Toutes les heures

Filet de sécurité pour la régénération des wrappers solution.

Purge des slots orphelins

Quotidien

Suppression des slots orphelins de plus de 30 jours.

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

llx_infrasstudio_slot

Stockage des valeurs de slot. Une ligne par combinaison (fk_website_page, slot_name, lang, entity).

Colonne

Type

Description

rowid

INT PK

Identifiant auto-incrémenté

fk_website_page

INT

Référence vers

llx_website_page

slot_name

VARCHAR(64)

Identifiant du slot

slot_type

VARCHAR(16)

text, textarea, richtext, image, url, etc.

lang

VARCHAR(8)

Vide = canonique, sinon locale (fr_FR, en_US, etc.)

value

LONGTEXT

Valeur publique

value_draft

LONGTEXT

Brouillon en attente

label

,

default_value

,

group_name

,

help

,

options

VARCHAR/TEXT

Métadonnées (sur la ligne canonique uniquement)

maxlength

INT

Limite de caractères

status

INT

1 = actif, 0 = orphelin

tms

,

fk_user_*

DATETIME, INT

Audit standard Dolibarr

entity

INT

Multicompany

Index unique : uk_infrasstudio_slot_uniq (fk_website_page, slot_name, lang, entity).

llx_infrasstudio_media

Colonne

Type

Description

rowid

INT PK

Identifiant auto-incrémenté

ref

VARCHAR(64)

Identifiant unique par entity

label

VARCHAR(255)

Nom affiché

kind

VARCHAR(16)

image, video, document

filepath

VARCHAR(255)

Chemin relatif à

DOL_DATA_ROOT

filesize

,

mime

,

width

,

height

INT/VARCHAR

Métadonnées physiques

alt

VARCHAR(255)

Texte alternatif canonique

tags

VARCHAR(255)

CSV de tags

fk_website

INT

Site associé

variants_json

TEXT

Cartographie des variantes générées

status

INT

1 = actif, 0 = corbeille

entity

INT

Multicompany

llx_infrasstudio_media_alt

Surcharges du texte alternatif par langue.

Colonnes

Type

rowid

PK,

fk_media

,

lang

,

alt

,

entity

,

tms

Standards

Index unique : (fk_media, lang, entity).

llx_infrasstudio_revision

Historique en mode ajout uniquement des modifications.

Colonnes : rowid, object_type (slot ou media), fk_object, action, payload (JSON), fk_user, date_creation, entity.

llx_infrasstudio_product_translation

Surcharges par langue des champs personnalisés produit traduisibles.

Colonne

Type

rowid

PK

fk_product

INT

lang

VARCHAR(8)

field

VARCHAR(64) — slug du champ personnalisé

value

MEDIUMTEXT

tms

,

entity

Standards

Index unique : (fk_product, lang, field, entity).

Tables Dolibarr utilisées sans modification

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

Tous les scripts en ligne de commande livrés avec le module. Chemin : htdocs/custom/infrasstudio/scripts/.

rescan_slots.php

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]

Option

Effet

--entity=N

Force l'entity Dolibarr.

--purge-orphans

Supprime immédiatement les slots orphelins (sans attendre 30 jours).

--dry-run

Affiche les changements sans les appliquer.

--lint

Vérifie la syntaxe des slots. Code de sortie : 0 sans anomalie, 1 avec avertissement, 2 avec erreur.

rebuild_solution_wrappers.php

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

generate_sitemap.php

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

preset_default.php

Chargeur générique de presets JSON. Crée et met à jour catégories Dolibarr, champs personnalisés (produits, tickets, contacts…) et configurations de formulaires en un seul passage. Le module n'embarque plus de préset spécifique à un client : chaque site livre ses propres descripteurs JSON dans son dossier source DOL_DATA_ROOT/<entity>/website/<ref>/presets/.

php preset_default.php <chemin-vers-preset.json> [--entity=N]

# Exemple : appliquer le préset formulaires d'un site sur l'entité 2
php preset_default.php /mnt/data/dolibarr/2/website/monsite/presets/forms.json --entity=2

# Exemple : appliquer le préset extrafields produit sur l'entité 2
php preset_default.php /mnt/data/dolibarr/2/website/monsite/presets/product.json --entity=2

Format JSON attendu : voir le Chapitre 25 (presets multi-section : categories, extrafields_by_element, form_configs, email_templates). Le script est idempotent — relancer la même commande ne crée pas de doublon.

consolidate_sister_pages.php

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]

convert_tpl_to_slots.php

Transforme les echo $langs->trans('Key') d'un fichier tpl.php en tokens {{slot:...|default=@lang:Key}}.

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

Option

Effet

--group=xxx

Attribut group par défaut.

--prefix=yyy

Préfixe des noms de slot.

--dry-run

Aperçu des modifications sans application.

--hook-engine

Ajoute également l'inclusion du moteur du module.

Bonnes pratiques en ligne de commande

Fin de la Partie VI — 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.

CHAPITRE 33 — 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.

Sites gérés

Constante

Type

Défaut

Description

INFRASSTUDIO_MANAGED_SITES

CSV

vide

Identifiants des sites Website gérés (par exemple

1,2,5

).

INFRASSTUDIO_SITE_<id>_MEDIA_MODE

chaîne

native

Mode média par site :

native

ou

module

.

INFRASSTUDIO_SITE_<id>_BLOG_INDEX_PAGE

entier

0

Identifiant de la page d'index du blog (active l'assistant « + Nouvel article »).

INFRASSTUDIO_SITE_<id>_DOCROOT

chemin

vide

Surcharge du docroot Apache de ce site.

INFRASSTUDIO_SITE_<id>_LAST_IMPORT

timestamp

0

Géré automatiquement. Horodatage du dernier rescan automatique des médias.

Portabilité du système de fichiers

Constante

Type

Défaut

Description

INFRASSTUDIO_DOCROOT_PATTERN

modèle

vide

Modèle partagé avec marqueur

{ref}

. Exemple :

/srv/sites/{ref}

.

INFRASSTUDIO_TEMPLATE_EXTRA_DIR

chemin

vide

Dossier supplémentaire pour les gabarits.

Catalogue produit

Constante

Type

Défaut

Description

INFRASSTUDIO_WEBSITE_KEY

chaîne

vide

Référence du site cible des wrappers.

INFRASSTUDIO_PUBLIC_DOCROOT

chemin

vide

Docroot Apache absolu où écrire les wrappers.

INFRASSTUDIO_PRODUCT_UNIVERS_MAP

JSON

vide

Surcharge de la cartographie catégorie vers univers.

INFRASSTUDIO_TRANSLATABLE_PRODUCT_FIELDS

CSV

vide

Slugs de champs personnalisés à ajouter au registre traduisible.

INFRASSTUDIO_TRANSLATABLE_PRODUCT_FIELDS_JSON

JSON

vide

Surcharge complète du registre.

INFRASSTUDIO_SITE_<id>_WRAPPER_PREFIX

chaîne

solution-

Préfixe des wrappers générés.

INFRASSTUDIO_SITE_<id>_WRAPPER_TEMPLATE_PAGEURL

chaîne

solution-detail

Slug Dolibarr du gabarit.

Apparence du Studio

Constante

Valeurs

Défaut

INFRASSTUDIO_UI_THEME

light

,

dark

light

INFRASSTUDIO_UI_ACCENT

indigo

,

ochre

,

plum

,

forest

indigo

Multilingue

Constante

Type

Description

INFRASSTUDIO_LANG_ISO

chaîne

Langue active. Définie dynamiquement par les gabarits.

INFRASSTUDIO_LANG_COOKIE

chaîne

Nom du cookie de persistance de la langue.

INFRASSTUDIO_LANG_MAP_JSON

JSON

Surcharge de la cartographie ISO2 vers locale.

INFRASSTUDIO_BLOG_FALLBACK_IMAGE

URL

Image par défaut pour les articles sans image principale.

Compatibilité et débogage

Constante

Description

INFRASSTUDIO_DOL_VERSION

Géré automatiquement. Version de Dolibarr lors de l'activation.

INFRASSTUDIO_MAIN_VERSION

Géré automatiquement. Version du module.

INFRASSTUDIO_DISABLE_CHECK_VERSION_MIN

Régler sur

1

pour contourner la vérification de version Dolibarr minimale.

INFRASSTUDIOBKP_*

Sauvegarde automatique des constantes lors d'une désactivation. Préfixe accolé au nom d'origine.