【问题标题】:How to get rid of whitespace in Smarty {block}s?如何摆脱 Smarty {block} 中的空白?
【发布时间】:2012-06-17 14:23:01
【问题描述】:

我遇到了一个问题,定义 {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 模板时,&lt;title&gt;...&lt;/title&gt; 标记内有很多空白。

例如,它看起来像这样:

<title>
    Showing all wiki topics  </title>

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

<title>Showing all wiki topics</title>

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

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

但这并没有改变什么。

我也试过这个:

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

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

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

但这也是一个语法错误。

我也试过了:

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

但这也无济于事,因为我已经在 {block title} 之后引入了一个新行,所以它保留在编译的模板中。

任何帮助表示赞赏!

【问题讨论】:

  • 好像其他人也有同样的问题,请查stackoverflow.com/questions/9207163/…
  • 我很惊讶{strip}{block title}... 没用,你确定吗?
  • @WesleyMurch 那行不通。请参阅下面的罗德尼回答。

标签: php templates smarty removing-whitespace


【解决方案1】:

从 Smarty 3.1 开始,您不能将 {block}s 包装在其他构造中。 (这可能会随着 Smarty 3.2 改变) 你试过把{strip}标签放在{block}s里面吗?否则看看my answer here

【讨论】:

  • 我尝试将{strip} 放在{block} 之后,在{block} 之后没有换行符,它有效,但看起来不太好。 :) 我还尝试将 ifs/else 放在外面,并在 ifs/else 中放置块,但 smarty 不喜欢那样。
  • 正如我所说,{block}s 现在不能被任何东西包裹……
猜你喜欢
  • 2014-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-21
  • 2021-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多