我们如何确定访问我们网站的访问者是否不是使用 Smarty 的 v3 模板 (.tpl) 文件系统的机器人或爬虫?
例如,在PHP中,一个简单的解决方案是:
if (!preg_match('/bot|proxy|crawl|slurp|spider/i', $_SERVER['HTTP_USER_AGENT'])){}
有没有简单的方法可以直接进入smarty.net的模板文件?
Smarty 是模板引擎,它的目的是做演示,但是,它也可以做逻辑,这样,它就不那么有意义了,让你的代码更依赖,因此更难改变。
你能做什么?
最好的解决方案是将具有处理逻辑的模板分配给 Smarty 的变量,例如:
.PHP:
$smarty->assign('is_bot', preg_match('/bot|proxy|crawl|slurp|spider|^$/i', $_SERVER['HTTP_USER_AGENT'])));
模板:
{if !$is_bot}
<!-- non bot stuff -->
{/if}
除此之外,您还可以创建智能插件。这很容易做到。例:
聪明的插件:
<?php
function smarty_function_isBot(array $params, Smarty_Internal_Template $template)
{
return preg_match('/bot|proxy|crawl|slurp|spider|^$/i', $_SERVER['HTTP_USER_AGENT']));
}
?>
模板:
{isBot}
使用条件
{if isBot}
<!-- non bot stuff -->
{/if}