我想修改登录页面的外观。我在 DesktopModules/AuthenticationServices/DNN/Login.ascx 中添加了一些 jquery 和 javascript,因此我可以拥有一个虚拟键盘,用户可以使用它来输入用户名和密码。问题是当登录失败时,在我看来 jquery 和 javascript 脚本没有执行,因此虚拟键盘没有出现。
我已经对此进行了很多搜索。我正在考虑制作一个新的登录模块,但我不确定这如何或是否能让我解决问题。
有什么建议吗?
DNN 版本:6.1.3
我想修改登录页面的外观。我在 DesktopModules/AuthenticationServices/DNN/Login.ascx 中添加了一些 jquery 和 javascript,因此我可以拥有一个虚拟键盘,用户可以使用它来输入用户名和密码。问题是当登录失败时,在我看来 jquery 和 javascript 脚本没有执行,因此虚拟键盘没有出现。
我已经对此进行了很多搜索。我正在考虑制作一个新的登录模块,但我不确定这如何或是否能让我解决问题。
有什么建议吗?
DNN 版本:6.1.3
我建议不要直接更改核心登录,因为它被认为是“核心更改”并且会在升级中被覆盖。这将要求您在每次升级之前合并您的更改。
相反,如果您需要该级别的访问权限,我建议您创建自己的登录模块。
不过,在查看您的问题时,我认为这没有必要。您可以通过创建和实现皮肤小部件来实现相同的效果。皮肤小部件将允许您以几乎任何您能想到的方式操作 UI,因为您可以使用 jQuery 和注入 jQuery 插件。
这是一个更优雅的解决方案,可以扩展、可测试、安全升级,并允许您根据需要在多个站点和安装中重用它。
可以在以下两个链接中找到小部件和文档的示例:
正如 Will 所说,您绝对不应该在核心文件中编辑或添加代码,因为它们会在 DNN 升级中被覆盖。您应该能够仅使用 Javascript 解决此问题,但您也可以查看像这样的第 3 方登录模块:http : //www.dnnspot.com/Modules/DotNetNuke-Custom-Login 具有自定义登录的功能查看,登录查看,甚至错误消息。所以你应该能够在不同的情况下根据需要注入不同的 javascript。
免责声明 - 我隶属于 DNNspot。
我使用了这个可爱的 javascript On-Screen-Keyboard (OSK)。(http://www.greywyvern.com/code/javascript/keyboard)
我正在使用 DNN 5.6.8 所以我不确定我的解决方案是否适用于 DNN 6.x 。
我修改了我正在使用的“皮肤”的“page.ascx”文件,但我认为您也可以修改默认皮肤的“page.ascx”。
在 page.ascx 的顶部,在“Register”列表下方,我写道:
<script type="text/javascript" src="/js/keyboard.js" charset="UTF-8"></script>
<link rel="stylesheet" type="text/css" href="/js/keyboard.css">
这两个文件(keyboard.js 和keyboard.css)是屏幕键盘。当然,您可以将它们存储在“/js”以外的其他文件夹中。
在 page.ascx 的底部,我放了这个脚本:
<script type="text/javascript">
$(document).ready(function () {
if (document.getElementById('dnn_ctr_Login_Login_DNN_txtUsername') != null) {
$("#dnn_ctr_Login_Login_DNN_txtUsername").attr("lang", "es");
$("#dnn_ctr_Login_Login_DNN_txtPassword").attr("lang", "es");
VKI_attach(document.getElementById('dnn_ctr_Login_Login_DNN_txtUsername'));
VKI_attach(document.getElementById('dnn_ctr_Login_Login_DNN_txtPassword'));
}
});
</script>
这些名称:'dnn_ctr_Login_Login_DNN_txtUsername' 和 'dnn_ctr_Login_Login_DNN_txtPassword' 是我通过右键单击和“查看源代码”运行的 DNN 站点看到的名称,我认为没有理由认为它们在其他 DNN 站点中会有所不同,但尽管如此你可以检查你的。
Obviously you must have jQuery active in your DNN installation. :)
That's it. It works great!!
HTH!