基于登录状态的样式

时间:2014-06-04 04:40:07

标签: templates sitefinity

我正在尝试将登录/注销按钮小部件设置为一种登录样式,另一种是注销。我目前正在考虑可能有一个特殊的值,我可以作为一个类来确定用户是否登录(例如{isLoggedIn}),但我不确定是否有这样的事情。

我能用这样的东西吗?否则我想我可能只是在模板中添加2个按钮,但只有在用户登录/注销时才会显示它们。这样我可以为每个人应用自定义类。

我不敢相信它应该那么复杂。

2 个答案:

答案 0 :(得分:1)

您可以通过覆盖Sitefinity登录窗口小部件使用的模板来执行此操作,然后确定当前用户是否经过身份验证,如果是,则在某处输出“isLoggedIn”类。

要覆盖Sitefinity登录窗口小部件使用的模板,您首先需要从SDK下载默认模板。这些小部件模板是here。您可以使用以下路径找到登录窗口小部件模板:\ WidgetTemplates \ Templates \ PublicControls \ LoginWidget.ascx

复制控件并将其添加到项目中,我通常会在您需要为另一个窗口小部件执行此操作时创建“WidgetTemplates”文件夹。

编辑LoginWidget.ascx控件,并在顶部导入以下命名空间:

<%@ Import Namespace="Telerik.Sitefinity.Security.Claims" %>

然后在编辑控件的同时,搜索具有“sfSubmitBtnWrp”类的div并将标记编辑为以下内容:

<div class="sfSubmitBtnWrp <%= ClaimsManager.GetCurrentIdentity().IsAuthenticated ? "isLoggedIn" : string.Empty %>">

如果当前用户已通过身份验证,则会将“isLoggedIn”类输出到该包装器div,以便您可以对提交按钮应用不同的样式。

要告诉Sitefinity使用您的小部件模板,请使用登录小部件编辑该页面,然后编辑您的登录小部件。在LayoutTemplatePath字段中,输入窗口小部件的路径,因此如果将其添加到“WidgetTemplates”文件夹,则应为“〜/ WidgetTemplates / LoginWidget.ascx”

enter image description here

答案 1 :(得分:0)

所以,我没有太多时间,而且我发现了一种可怕的可怕方式,这种做法非常糟糕。

而不是Ben的非常好的建议,我只是在我的所有包装器之外的模板顶部用一个命名类触发了一个登录/注销按钮(实际上它可能是任何东西),给它{{ 1}}和撤销匿名用户的权限。

现在,我可以使用display:none为任何已登录的样式添加前缀,并且仅在用户登录时才适用。

编辑:实际上,我决定使用一个空的内容块,因此它在HTML中没有那么具有侵入性。