主题控制器
TsgcHTMLThemeController / TsgcHTMLThemeBuilder — 管理所有页面的明亮、暗黑和系统主题,并为自定义品牌颜色生成 Bootstrap CSS 变量块。
TsgcHTMLThemeController / TsgcHTMLThemeBuilder — 管理所有页面的明亮、暗黑和系统主题,并为自定义品牌颜色生成 Bootstrap CSS 变量块。
TsgcHTMLThemeController 读取 cookie 或查询参数以确定要激活的 Bootstrap 主题,并注入所需的初始化脚本。TsgcHTMLThemeBuilder 生成一个 <style> 块,用您的品牌颜色覆盖 Bootstrap CSS 变量。
TsgcHTMLThemeController, TsgcHTMLThemeBuilder
明/暗主题切换 & 自定义 CSS
Delphi, C++ Builder, .NET
使用 TsgcHTMLThemeController 读取 cookie 或查询参数并应用正确的 Bootstrap 主题属性。使用 TsgcHTMLThemeBuilder 为您的品牌颜色生成自定义 CSS 变量块。
uses
sgcHTML_ThemeController;
// Detect theme from request cookie:
var
oTheme: TsgcHTMLThemeController;
begin
oTheme := TsgcHTMLThemeController.Create(nil);
try
oTheme.CookieName := 'app_theme';
oTheme.DefaultTheme := htSystem;
// Inject into the Bootstrap template:
oTemplate.HeadContent :=
oTemplate.HeadContent + oTheme.GetThemeScript(ARequest);
finally
oTheme.Free;
end;
end;
// Generate brand CSS variables:
var
oBuilder: TsgcHTMLThemeBuilder;
begin
oBuilder := TsgcHTMLThemeBuilder.Create(nil);
try
oBuilder.PrimaryColor := '#7C3AED';
oBuilder.SecondaryColor := '#1E293B';
oTemplate.HeadContent :=
oTemplate.HeadContent + oBuilder.Build;
finally
oBuilder.Free;
end;
end;
TsgcHTMLThemeController *oTheme = new TsgcHTMLThemeController(NULL);
try
{
oTheme->CookieName = "app_theme";
oTheme->DefaultTheme = htSystem;
oTemplate->HeadContent += oTheme->GetThemeScript(ARequest);
}
__finally { delete oTheme; }
TsgcHTMLThemeBuilder *oBuilder = new TsgcHTMLThemeBuilder(NULL);
try
{
oBuilder->PrimaryColor = "#7C3AED";
oTemplate->HeadContent += oBuilder->Build();
}
__finally { delete oBuilder; }
var themeCtrl = new TsgcHTMLThemeController();
themeCtrl.CookieName = "app_theme";
themeCtrl.DefaultTheme = TsgcHTMLTheme.htSystem;
template.HeadContent += themeCtrl.GetThemeScript(request);
var themeBuilder = new TsgcHTMLThemeBuilder();
themeBuilder.PrimaryColor = "#7C3AED";
template.HeadContent += themeBuilder.Build();
最常用的成员。
存储用户主题偏好的 cookie 名称(htLight / htDark / htSystem)。
当没有 cookie 或查询参数时的后备主题。
从请求中读取当前主题(cookie 或 ?theme= 参数),并返回要注入 <head> 的 Bootstrap 主题初始化脚本。
用您的品牌颜色覆盖 Bootstrap 的 --bs-primary CSS 变量。
追加到生成的 <style> 块中的原始 CSS 自定义属性声明,可用于任何 Bootstrap 或应用级变量。
返回包含 :root 覆盖的 <style> 块;将其赋值给 TsgcHTMLTemplate_Bootstrap.HeadContent。