我正在尝试将 HTTP 响应标头添加/覆盖到 WHMCS 公共主页。 使用 PHP,它们应该看起来像这样:
header("Cache-Control: public, max-age=10800, must-revalidate"); // HTTP 1.1.
header("Pragma: cache"); // HTTP 1.0.
但是,在 smarty 3+ 中,不再支持使用 php 标签。
我已在 header.tpl 文件上尝试了以下操作但失败了:
{if $templatefile == 'homepage'}
header("Cache-Control: public, max-age=86400, must-revalidate"); // HTTP 1.1.
header("Pragma: cache"); // HTTP 1.0.
{/if}
如何将这些标头添加到 header.tpl 文件中,以便将它们读取为 PHP? 谢谢。
正如我在评论中建议的那样,您可以使用
ClientAreaHeadOutput
钩子来做到这一点,例如:
add_hook('ClientAreaHeadOutput', 1, function ($vars) {
// Check if the current file name is index aka home
if ($vars['filename'] == 'index') {
header("Cache-Control: public, max-age=10800, must-revalidate"); // HTTP 1.1.
header("Pragma: cache"); // HTTP 1.0.
}
});
您还可以使用
App::getCurrentFilename()
代替 $vars['filename']
来获取当前文件名。