Inclusions

L'inclusion se fait via le tag {inc:FICHIER}. Alors le contenu du fichier FICHIER sera copié tel quel à la place du tag. C'est seulement après l'inclusion de tous les fichiers que le modèle résultant est complètement analysé.

Différences entre {parse:FICHIER} et {inc:FICHIER}

la commande parse est décrite en détails dans la section "Commmandes prédéfinies". inc fonctionne de façon tout-à-fait différente:

Exemple d'inclusion dans un bloc

inc.htm:
    {block:variables}
        - {var} ({inc:vals.htm})
    {end:block}

vals.htm:
    {block:valeurs}{valeur}{if:not {last}}, {end:if}{end:block}

inc.php:
    $tpl->set('variables/valeurs/valeur', 1);
    $tpl->set('variables/valeurs/valeur', 2);
    $tpl->set('variables/valeurs/valeur', 3);
    $tpl->set('variables/valeurs/last', 1);
    $tpl->set('variables/var', 'numbers', TRUE);

    $tpl->set('variables/valeurs/valeur', 'one');
    $tpl->set('variables/valeurs/valeur', 'two');
    $tpl->set('variables/valeurs/valeur', 'three');
    $tpl->set('variables/valeurs/last', 'words');
    $tpl->set('variables/var', 'digits', FALSE);

    $tpl->parse('inc.htm');

Résultat:

- numbers (1, 2, 3)
- digits (one, two, three)

Si l'on avait utilisé parse, le résultat aurait été tout-à-fait différent, en effet le bloc valeurs aurait été à la racine lors de l'analyse de "vals.htm".

Exemple de cycle

inc1.htm:
    {inc:inc2.htm}

inc2.htm:
    {inc:inc3.htm}

inc3.htm:
    {inc:inc1.htm}

Si l'on tente de parser "inc1.htm" le cycle sera détectée, et l'analyse sera interrompue avant d'aller plus loin.

Conclusion

L'instruction {inc:FICHIER} est bien plus sûre (détection des cycles), plus "logique" (le sous-modèle est inclus AVANT d'être analysé), mais moins souple (le nom du fichier inclus doit être inscrit en dur dans le modèle).

Dans tous les cas, c'est bien cette instruction qu'il faut utiliser pour inclure des sous-modèles.



Generation time: 30.371ms