在Smarty中格式化模板

时间:2011-12-25 05:26:55

标签: php html smarty

Smarty中处理后的模板丢失格式

之前(来源于n ++):

<!DOCTYPE html>
<html lang='ru'>
    <head>

之后(浏览器中的来源):

<!DOCTYPE html><html lang='ru'><head>

我不知道如何解决它。救命啊!

3 个答案:

答案 0 :(得分:2)

正如@GordonM解释的那样,在处理浏览器时不需要“源格式化”。它可能对人类有所帮助,但这就是它。

a)使用(Firefox | Chrome | Safari)的开发者控制台,将为您提供一个交互式,结构良好的DOM视图。忽略任何可能存在或可能不存在的空白。这些是我们想要使用的工具。

b)Smarty附带一个名为trimwhitespace的outputfilter。如果应用该过滤器,则会删除所有不必要的空格和注释。这样做是为了减少必须传输到浏览器的文本的大小。您希望尽可能少地发送以获得更好的性能。我们称之为“缩小”。您可能已经在Javascript和CSS世界中听说过它。

c)在我通过Smarty 3.1

运行之后,您的示例代码会显示换行符和空格

答案 1 :(得分:0)

格式化对于HTML解析器并不重要。无论是否包含空格,浏览器都将显示相同的输出。

但这真的很重要,那么你确实有一些选择。

第一个是安装PHP的Tidy扩展(http://php.net/manual/en/book.tidy.php)。然后,您可以将Smarty的输出捕获到字符串,并通过整洁的函数传递它以获取格式化的HTML字符串。

第二种是使用外部命令行实用程序,例如htmltidy。您可以将输出捕获到字符串,并使用exec()将其传递给命令行实用程序。

但老实说,我不认为所涉及的努力确实值得,就像我说的那样,HTML解析器不关心空白区域。

答案 2 :(得分:0)

检查Smarty是否设置为从HTML输出中删除所有空格(假设您使用的是Smarty 3,请检查您是否使用输出过滤器,信息 here )并检查您的模板内容是否包含在 {strip} 标记中(info here < / EM> )。

如果您没有使用其中一个过滤器/标签,我担心问题不是Smarty,而是其他地方的缩小过程....