如何转换所有css链接在内联样式使用smarty - seo速度优化


How to convert all css links in inline styles using smarty - seo speed optimization

我试图使我的css链接内联(为速度优化)。下面是一个纯php示例:

echo '<style>';
foreach ($module_css_files as $css_lib) { 
    include(DIR_FS_ROOT. 'htdocs/css/' . $css_lib);
} //foreach
echo '</style>';

但是在smarty这个想法不工作-当我试图

{include file="mysite/htdocs/style.css" } 

每次smarty返回白色屏幕,PHP日志中没有错误。如果尝试包含一个正常的。tpl或小的javascript文件,这是没有问题的,但如果尝试与css smarty只是崩溃。请帮助!

有以下几种可能的解释:

根据你的配置,Smarty可能会在htdocs/css/templates_c中生成解析后的文件。如果文件夹不存在或不可写,将产生一个错误

Smarty会尝试将css解析为Smarty模板,也就是

.test {overflow:hidden}

也会产生错误。您可以尝试以下操作:

添加{literal}到你的CSS注释之间,这样它不会破坏CSS文件,如果你想调用它,而不是使用它内联:

/*{literal}*/
.test {overflow:hidden}
...
/*{/literal}*/

或者,如果你使用smarty 3,你可以确保每个左括号后面至少有一个空格,这样smarty就不会把它和模板指令

混淆了
.test { overflow:hidden}
但是,最好的选择是使用php读取css文件内容,并将其作为变量传递给smarty,以避免不必要的处理时间,因为它可能需要将css作为模板读取和解析。