2010-11-26 2 views
3

У меня есть несколько шаблонов, написанных с помощью Smarty 3:Smarty3 блока добавить в прилежащем шаблоне

  1. страницы макета
  2. индекса страницы
  3. включаемой страницы

layout.tpl:

{block "css"}{/block} 
{block "js"}{/block} 
{block "content"}{/block} 

index.tpl:

{extends "layout.tpl"} 
{block "content"} 
content text 
{include "include.tpl"} 
{/block} 

include.tpl

{block "js" append} 
include some extra js files for this included content 
{/block} 
include text 

Но я получил исключение компилятора:

Фатальная ошибка: Uncaught исключение 'SmartyCompilerException' с сообщением «Ошибка синтаксиса в шаблоне include.tpl {блок«Js "preend} слишком много сокращенных атрибутов

Является ли блок append недоступным в включенном шаблоне, даже если он включен в дочерний шаблон?

Я думаю, что это будет очень полезно, если я могу использовать block append таким образом, как это, или могут быть другие способы сделать это? Благодаря!

ответ

2

Наследование шаблона Smarty обрабатывается до того, как парсер даже знает о вашем {include}. Таким образом, он не может обрабатывать встроенные шаблоны. То есть, если включенный шаблон не расширяет другой шаблон.

Смежные вопросы