3.4. 创建主题
主题包括:
- HTML 模板(自由标记模板)
- 镜像
- 消息捆绑包
- 风格表
- 脚本
- me 属性
除非计划替换每个页面,否则您应该扩展另一个主题。您最有可能想扩展 Red Hat Single Sign-On 主题,但如果您对页面的外观有很大更改,您还可能考虑对基础进行扩展。其基础主题主要由 HTML 模板和消息捆绑包组成,而 Red Hat Single Sign-On theme 主要包含镜像和样式表。
在扩展主题时,您可以覆盖单个资源(模板、风格表等)。如果您决定覆盖 HTML 模板,在升级到新版本时您可能需要更新自定义模板。
在创建主题时,最好禁用缓存,因为这样可以直接从主题目录中编辑主题资源,而无需重启 Red Hat Single Sign-On。
流程
-
编辑
standalone.xml。 对于
主题,将staticMaxAge设置为-1,将cacheTemplates和cacheThemes设置为false:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意确保在生产环境中重新启用缓存,因为它会对性能有严重影响。
在
主题目录中创建一个目录。目录的名称成为主题的名称。例如,要创建一个名为
mytheme的主题,请创建目录themes/mytheme。在me 目录中,为您要提供的每种类型创建一个目录。
例如,要将登录类型添加到
mythemetheme 中,请创建目录themes/mytheme/login。对于每个类型,创建一个文件
theme.properties,允许为主题设置一些配置。例如,要配置主题主题/mytheme/login 以扩展基础主题并导入一些常见资源,请创建文件
及以下内容:themes/mytheme/login/theme.propertiesparent=base import=common/keycloak
parent=base import=common/keycloakCopy to Clipboard Copied! Toggle word wrap Toggle overflow 您现在已创建了支持登录类型的主题。
- 登录到 Admin Console 以签出您的新主题
- 选择您的域
- 从菜单中点 Realm Settings。
- 点 Themes 选项卡。
- 对于 Login Theme,选择 mytheme 并点 Save。
打开域的登录页面。
您可以通过应用程序登录或打开帐户管理控制台(
/realms/{realm name}/account)来执行此操作。-
要查看更改父主题的效果,请在me
.properties中设置parent=keycloak并刷新登录页面。
3.4.1. me 属性 复制链接链接已复制到粘贴板!
me 属性在主题目录中的 < ;THEME TYPE>/theme.properties 中设置。
- 父项 - 要扩展的主题
- import - 从另一主题导入资源
- 样式 - 空格分隔的样式列表包括
- locales - 以逗号分隔的支持区域列表
有一个属性列表可用于更改用于某些元素类型的 cs 类。如需这些属性的列表,请查看对应类型 keycloak theme 中的 theme.properties 文件(themes/keycloak/<THEME TYPE>/theme.properties)。
您还可以添加自己的自定义属性,并从自定义模板使用它们。
在这样做时,您可以使用以下格式替换系统属性或环境变量:
-
${some.system.property}- for system properties -
${env.ENV_VAR}- 用于环境变量。
如果系统属性或环境变量没有使用 ${foo:defaultValue} 找到,也可以提供默认值。
如果没有提供默认值,且没有对应的系统属性或环境变量,则不会替换任何内容,您会在模板中以 格式结束。
以下是可能的问题示例:
javaVersion=${java.version}
unixHome=${env.HOME:Unix home not found}
windowsHome=${env.HOMEPATH:Windows home not found}
javaVersion=${java.version}
unixHome=${env.HOME:Unix home not found}
windowsHome=${env.HOMEPATH:Windows home not found}