taitava / silverstripe-cloakemail
模块,可以轻松地在模板、页面内容和PHP代码中编码电子邮件地址,这样垃圾邮件机器人就无法理解它们,但人类读者可以清楚地看到它们。
Requires
- ext-json: *
- silverstripe/cms: ~4.0
- silverstripe/framework: ~4.0
This package is auto-updated.
Last update: 2024-09-13 08:14:39 UTC
README
模块,可以轻松地在模板、页面内容和PHP代码中编码电子邮件地址,这样垃圾邮件机器人就无法理解它们,但人类读者可以清楚地看到它们。
维护者联系方式
Jarkko Linnanvirta(邮箱)posti (at) taitavasti (dot) fi(英语或芬兰语) www.taitavasti.fi(仅芬兰语)
要求
- SilverStripe 4.0.0 或更高版本
- PHP 扩展:
json
- jQuery(除非您使用
nojs
模式
,但这样看起来很丑)
安装
安装此模块的推荐方法是使用 composer
composer require "taitava/silverstripe-cloakemail:*"
文档
此模块可以轻松地在网页内容和模板中隐藏电子邮件地址,以防止垃圾邮件机器人获取它们。该模块使用 JavaScript + jQuery 来揭示电子邮件地址,尽管您可以选择不使用 JavaScript 来避免使您的网站变得庞大。
以下数据类型扩展为能够隐藏电子邮件地址:文本、varchar 和 enum。要在模板文件中隐藏电子邮件地址,只需将包含电子邮件地址的变量尾随 .Cloak()。
例如
$SiteConfig.ContactEmailAddress.Cloak()
您还可以在模板(仅限于页面上下文)中使用 $Cloak('hide.my@email.address')。
页面对象的文本内容中的电子邮件地址会自动隐藏,但前提是在 cloakemail.yml 中将 page_content 设置为 true。
配置
app/_config/cloakemail.yml
---
after: cloakemail
---
Taitava\CloakEmail\CloakEmail:
mode: simple
convert_page_content: true
page_insert_links: false
template_insert_links: false
purge_mailto_links: true
at: ' [a] '
dot: ' [dot] '
hard_noscript_error: 'JavaScript must be turned on in order to see this email address'
mode
有多个隐藏模式
- hard:如果垃圾邮件机器人无法解释 JavaScript,则无法绕过。如果没有 JavaScript 支持,用户在任何形式下都无法看到电子邮件地址。
- simple:以人类可读的方式隐藏电子邮件地址:my.name@my.place 变成类似 my (dot) name (a) my (dot) place 的东西。然而,JavaScript 用于将其反转回原始形式,以便在浏览器中更友好。如果关闭 JavaScript,用户仍然可以以隐藏的格式看到它。这是在回退能力、用户友好性和性能之间的最佳折衷。
- nojs:与 'simple' 相同,但不使用 JavaScript。
- none:不对电子邮件地址进行任何更改。适用于调试。
默认值:'simple'
convert_page_content
如果为真,CloakEmail 将处理页面内容并自动隐藏页面对象内容中的所有电子邮件地址。
警告!此功能可能会轻松破坏某些内容。简单的电子邮件地址简单地位于文本之间应该可以正常工作,但如果电子邮件地址位于 HTML 标签内(例如 Feedback),则将破坏该标签,因为其填充了自身的 HTML 代码!例外:[i]nojs[/i] 模式不会填充任何 HTML 代码,除非您已将 [i]page_insert_links[/i] 设置为 true。
默认值:false
page_insert_links 和 template_insert_links
如果为真,将隐藏的电子邮件地址包裹在 mailto 链接(CLOAKED ADDRESS)内。但是,如果 [i]mode[/i] 设置为 [i]none[/i],则不会执行此操作。
默认值:两个变量都为 false
purge_mailto_links
如果设置为 true,此选项的目的是防止生成格式不正确的 HTML 代码,如果源 HTML 内容包含类似 <a href="mailto:email@address.com">email@address.com</a>
的电子邮件地址链接。如果此选项关闭,则模块会将 href
属性中的电子邮件地址进行转换,从而在属性中插入 HTML,这将简单地破坏输出的 HTML。
此选项通过在处理之前从HTML内容中移除所有mailto链接来解决此问题的一种“奇特”的方法。因此,它将链接替换为从href
属性中找到的电子邮件地址。请注意,链接的锚文本以任何方式都不会保留!
您可以使用page_insert_links和/或template_insert_links选项重新创建mailto链接,但您仍然无法恢复原始的锚文本,而是将电子邮件地址本身用作锚文本 - 这通常是正确的。
因此,尽管此功能并不能完美修复它所关联的bug,但至少提供了一个比没有更好的解决方案。如果您想就这个话题开始讨论,请参阅问题#3。请随时询问有关此功能/bug的任何问题! :)
默认值:false
at 和 dot
当模式为'simple'或'nojs'时,@和.将被这些字符串替换为电子邮件地址。在'hard'模式下,这些字符串不使用,因为在这种情况下电子邮件地址会被完全混淆。在此处允许HTML代码。
默认值:' at '和' dot '
hard_noscript_error
如果JavaScript被关闭,将显示的错误信息。这仅影响'hard'模式。该消息出现在电子邮件地址的位置。
默认值:'为了查看此电子邮件地址,必须开启JavaScript。'
待办事项
这是一些想法的列表。我对未来的开发没有承诺,但我热切欢迎拉取请求,如果您想实现这些或您自己的想法! :)
- 提高页面对象内容中隐藏电子邮件地址的性能。
- 使您能够在模板中对.Cloak()调用临时更改[i]mode[/i]和[i]insert_link[/i]设置。
- 创建一个翻译文件,并将[i]hard_noscript_error[/i]移动到那里
- 写一些更多的JavaScript,并放弃jQuery,使模块更轻。