如何摆脱Smarty {block}中的空白?

时间:2012-06-17 14:23:01

标签: php templates smarty removing-whitespace

我遇到了一个问题,即定义{block}的值会引入很多不必要的空格。

我有一个主模板,我们称之为main.html,看起来像这样(简化):

<html>
<title>{block name=title}{$default_title}{/block}</title>
...
</html>

然后我继续使用它来说topics.html,并在其中定义标题栏:

{extends file="main.html"}

{block title}
{if $topic}
  {if $topic == "all"}
    {eval $Config['titles']['topics']['all']}
  {else}
    {eval $Config['titles']['topics']['particular']}
  {/if}
{else}
  {eval $Config['titles']['topics']['list']}
{/if}
{/block}

现在,当我编译topics.html模板时,<title>...</title>标记内有很多空格。

例如,它看起来像这样:

<title>
    Showing all wiki topics  </title>

如何从评估块的结果中修剪/剥离空白,使其看起来如下所示:?

<title>Showing all wiki topics</title>

我尝试在{strip}...{/strip}周围添加{block title}...{/block},如下所示:

{strip}
{block title}
...
{/block}
{/strip}

但这并没有改变任何事情。

我也试过这个:

{block title|strip}
...
{/block}

但这是语法错误。我也试过这个:

{block title|trim}
...
{/block}

但这也是语法错误。

我也尝试过:

{block title}
{strip}
...
{/strip}
{/block}

但是这也没有帮助,因为我已经在{block title}之后引入了一个新行,所以它保留在编译模板中。

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:2)

从Smarty 3.1开始,你无法将{block}包装在其他结构中。 (这可能会随Smarty 3.2而改变) 您是否尝试将{strip}标记放入{block}s内?否则请查看my answer here