Dotnetnuke DNN-提供基于成员资格的皮肤的最佳方法?

Dotnetnuke DNN-提供基于成员资格的皮肤的最佳方法?,dotnetnuke,dotnetnuke-module,Dotnetnuke,Dotnetnuke Module,我将在dotnetnuke中开发基于成员资格的门户 同样,我希望允许portal manager为用户定义皮肤 告诉我怎么做?要根据用户角色动态更改皮肤,请访问DotnetNuke.com: 'import DotNetNuke.Entities.Users' If Not Me.UserInfo Is Nothing AndAlso Me.UserInfo.UserID > Null.NullInteger Then If Me.UserInfo.IsInRole("My Secur

我将在dotnetnuke中开发基于成员资格的门户

同样,我希望允许portal manager为用户定义皮肤


告诉我怎么做?

要根据用户角色动态更改皮肤,请访问DotnetNuke.com:

'import DotNetNuke.Entities.Users'
If Not Me.UserInfo Is Nothing AndAlso Me.UserInfo.UserID > Null.NullInteger Then
  If Me.UserInfo.IsInRole("My Security Role") Then
    ' import System.Web.HttpCookie 
    Response.Cookies.Add(New HttpCookie("SkinSrc", "[G]Skins/DarkKnight/Home-Mega-Menu.ascx"))
  Else
      ' either assign another skin, or do nothing 
  End If
Else
  ' either assign another skin, or do nothing 
End If
有几种不同的方法可以动态地或编程地 更改特定页面加载的外观。DotNetNuke将首先查看 用于URL中的重写值。如果找到特定值,则为DNN 将加载该页面上的皮肤和/或容器。第二,DNN 将查看本地cookie以查看是否定义了外观。 最后,如果前两种方法没有指定要加载的蒙皮,则为DNN 将加载页面或站点定义的默认外观。万一 如果皮肤不存在,则将使用DNN附带的默认皮肤 被加载

这就是为什么不删除原始皮肤包很重要的原因 安装后

可能是基于 安全角色是使用 DotNetNuke模块或HttpModule。无论哪种方式,你都可以 检索用户信息,并基于IsInSecurityRole() 属性,生成实际上将加载所需外观的cookie

本质上,在每个页面上放置的DotNetNuke模块中,您必须检查以下内容:

  • 用户在哪个门户中
  • 用户处于哪个安全角色
  • 基于1和2,用户应该看到哪个皮肤
  • 如果#3的答案是“一个非默认皮肤”,那么您将需要执行以下代码,这些代码取自DotNetNuke.com:

    'import DotNetNuke.Entities.Users'
    If Not Me.UserInfo Is Nothing AndAlso Me.UserInfo.UserID > Null.NullInteger Then
      If Me.UserInfo.IsInRole("My Security Role") Then
        ' import System.Web.HttpCookie 
        Response.Cookies.Add(New HttpCookie("SkinSrc", "[G]Skins/DarkKnight/Home-Mega-Menu.ascx"))
      Else
          ' either assign another skin, or do nothing 
      End If
    Else
      ' either assign another skin, or do nothing 
    End If
    
    上面截取的代码显示了如何通过添加cookie键值对来设置外观

    我可能会将上述逻辑放入一个不可见的DNN模块,并自动添加到站点上的所有页面;否则,您可能可以将逻辑注入Default.aspx(由于编辑DNN核心,不建议这样做)


    注意:PortalID是每个模块项目中都可以访问的字段
    Response.Write(“我的门户ID:&PortalID.ToString())

    需要更多详细信息。已经可以为每个门户设置默认外观,还是需要为每个用户角色设置每个门户的外观?我想“为每个用户角色设置每个门户的外观”。是否可以?如果是,怎么做?