2009-11-03 4 views
2

Est-il possible d'étendre un modèle de base avec un autre modèle dans Smarty?
Je sais que c'est possible dans Django en utilisant la balise {% entend%}. Existe-t-il un équivalent (ou une solution de contournement) dans Smarty?Étendre le modèle de base dans Smarty

Merci

Répondre

5

Il n'y a pas de modèle d'héritage build-in dans Smarty. Mais vous pouvez faire la même chose avec {include} et {capture}.

Votre modèle de page peut ressembler à:

{capture assign="context"} 
    <h2>Here is my page</h2> 
    {... some other smarty suff here ...} 
{/capture} 

{assign var="title" value="Just simple title text here"} 

{include file="base.tpl"} 

Et base.tpl peut ressembler à ce qui suit:

<html> 
    <title>{$title}</title> 
    <body> 
    {$context} 
    </body> 
</html> 
+0

Merci, c'est exactement ce que je cherchais – Cameron

10

Bien que cette question est un peu vieux, je pensais que peut-être quelqu'un à la recherche de cette information d'août 2011 serait bénéfique de savoir que cela peut être fait maintenant avec Smarty 3.

Exemple avec l'héritage

layout.tpl

<html> 
<head> 
    <title>{block name=title}Default Page Title{/block}</title> 
</head> 
<body> 
{block name=body}{/block} 
</body> 
</html> 

mypage.tpl

{extends file="layout.tpl"} 
{block name=title}My Page Title{/block} 
{block name=body}My HTML Page Body goes here{/block} 

sortie mypage.tpl

<html> 
<head> 
    <title>My Page Title</title> 
</head> 
<body> 
My HTML Page Body goes here 
</body> 
</html> 

repris textuellement de: http://www.smarty.net/inheritance

+1

+1 Génial, merci d'avoir ajouté cette réponse! (Je n'utilise plus Smarty, mais comme tu dis, c'est une bonne référence pour les autres) – Cameron

Questions connexes