网站配置
MkSaaS 网站的核心配置
包含网站核心设置的主配置文件。
MkSaaS 模板已经为您设置了默认的核心设置,您可以在此文件 src/config/website.tsx
中自定义核心设置。
export const websiteConfig: WebsiteConfig = {
metadata: {
// 主题、模式、图片和社交设置
},
features: {
// 功能设置
},
routes: {
// 路由设置
},
analytics: {
// 分析设置
},
auth: {
// 认证设置
},
i18n: {
// 国际化设置
},
blog: {
// 博客设置
},
docs: {
// 文档设置
},
mail: {
// 邮件设置
},
newsletter: {
// 邮件订阅设置
},
storage: {
// 存储设置
},
payment: {
// 支付设置
},
price: {
// 价格设置
},
credits: {
// 积分设置
},
};
元数据
控制您网站的外观和品牌。元数据配置由几个子部分组成:
主题
控制网站的颜色主题:
属性 | 类型 | 描述 |
---|---|---|
defaultTheme | 'default' | 'blue' | 'green' | 'amber' | 'neutral' | 设置网站的默认颜色主题 |
enableSwitch | boolean | 为 true 时,允许用户更改颜色主题 |
示例:
metadata: {
theme: {
defaultTheme: 'default', // 选择:default、blue、green、amber、neutral
enableSwitch: true, // 允许用户切换主题
},
// ...
}
您可以在 主题 文档中了解更多关于自定义主题的信息。
模式
控制明/暗模式设置:
属性 | 类型 | 描述 |
---|---|---|
defaultMode | 'light' | 'dark' | 'system' | 设置默认显示模式 |
enableSwitch | boolean | 为 true 时,允许用户在明/暗模式之间切换 |
示例:
metadata: {
mode: {
defaultMode: 'system', // 选择:light、dark、system
enableSwitch: true, // 允许用户切换模式
},
// ...
}
图片
定义用于品牌和社交分享的图片:
属性 | 类型 | 描述 |
---|---|---|
ogImage | string | 用于社交媒体预览的 Open Graph 图片 URL |
logoLight | string | 明亮模式下的 logo 图片 URL |
logoDark | string | 暗黑模式下的 logo 图片 URL |
示例:
metadata: {
images: {
ogImage: '/og.png', // 社交分享的 Open Graph 图片
logoLight: '/logo.png', // 明亮模式下显示的 logo
logoDark: '/logo-dark.png', // 暗黑模式下显示的 logo
},
// ...
}
您可以在 图片 文档中了解更多关于自定义图片的信息。
社交媒体
配置社交媒体资料链接:
属性 | 类型 | 描述 |
---|---|---|
twitter | string | Twitter/X 资料 URL |
github | string | GitHub 资料或仓库 URL |
discord | string | Discord 服务器 URL |
blueSky | string | BlueSky 资料 URL |
youtube | string | YouTube 频道 URL |
linkedin | string | LinkedIn 资料或页面 URL |
facebook | string | Facebook 页面 URL |
instagram | string | Instagram 资料 URL |
tiktok | string | TikTok 资料 URL |
示例:
metadata: {
social: {
github: 'https://github.com/YourOrganization',
twitter: 'https://twitter.com/YourHandle',
discord: 'https://discord.gg/your-invitation-code',
youtube: 'https://youtube.com/@YourChannel',
// 根据需要添加其他社交平台
},
// ...
}
这些社交媒体链接被 social-config.tsx
文件用来在整个网站上生成适当的图标链接。
功能
为某些情况配置功能,例如是否显示升级卡等:
属性 | 类型 | 描述 |
---|---|---|
enableDiscordWidget | boolean | 是否启用 Discord 小部件,已弃用,默认为 false |
enableUpgradeCard | boolean | 是否启用升级卡,默认为 true |
enableUpdateAvatar | boolean | 是否启用更新头像,默认为 true |
enableAffonsoAffiliate | boolean | 是否启用 affonso 联盟,默认为 false |
enablePromotekitAffiliate | boolean | 是否启用 promotekit 联盟,默认为 false |
enableDatafastRevenueTrack | boolean | 是否启用 datafast 收入跟踪,默认为 false |
enableCrispChat | boolean | 是否启用 Crisp 聊天,默认为 true |
enableTurnstileCaptcha | boolean | 是否启用 Cloudflare Turnstile 验证码,默认为 false |
示例:
features: {
enableDiscordWidget: false,
enableUpgradeCard: true,
enableUpdateAvatar: true,
enableAffonsoAffiliate: false,
enablePromotekitAffiliate: false,
enableDatafastRevenueTrack: false,
enableCrispChat: process.env.NEXT_PUBLIC_DEMO_WEBSITE === 'true',
enableTurnstileCaptcha: process.env.NEXT_PUBLIC_DEMO_WEBSITE === 'true',
}
您可以在 联盟营销、验证码、聊天框 文档中了解更多关于功能配置的信息。
路由
为某些情况配置路由,例如默认登录重定向路由:
属性 | 类型 | 描述 |
---|---|---|
defaultLoginRedirect | string | 默认登录重定向路由,默认为 /dashboard |
示例:
routes: {
defaultLoginRedirect: '/settings/profile',
}
统计分析
为网站网站配置统计分析服务:
属性 | 类型 | 描述 |
---|---|---|
enableVercelAnalytics | boolean | 为 true 时,启用 Vercel Web Analytics |
enableSpeedInsights | boolean | 为 true 时,启用 Vercel Speed Insights |
示例:
analytics: {
enableVercelAnalytics: true, // 启用 Vercel Web Analytics
enableSpeedInsights: true, // 启用 Vercel Speed Insights
}
您可以在 统计分析 文档中了解更多关于统计分析服务的信息。
认证
为网站网站配置认证选项:
属性 | 类型 | 描述 |
---|---|---|
enableGoogleLogin | boolean | 设置为 true 时,启用 Google 作为登录提供商 |
enableGithubLogin | boolean | 设置为 true 时,启用 GitHub 作为登录提供商 |
enableCredentialLogin | boolean | 设置为 true 时,启用邮箱密码登录 |
示例:
auth: {
enableGoogleLogin: true, // 允许 Google 登录
enableGithubLogin: true, // 允许 GitHub 登录
enableCredentialLogin: true, // 允许邮箱密码登录
}
MkSaaS 默认支持多个认证提供商。您可以使用这些配置选项选择性地禁用特定提供商:
- 将
enableGoogleLogin
设置为false
以移除 Google 作为登录选项 - 将
enableGithubLogin
设置为false
以移除 GitHub 作为登录选项 - 将
enableCredentialLogin
设置为false
以移除邮箱密码登录
注意: 请确保至少启用一种登录方式,否则用户将无法登录。
您可以在 身份验证 文档中了解更多关于认证选项的信息。
国际化 (i18n)
为网站配置语言支持:
属性 | 类型 | 描述 |
---|---|---|
defaultLocale | string | 默认语言区域设置(例如 'en') |
locales | Record<string, { flag?: string; name: string }> | 可用语言及其标志表情符号和显示名称 |
MkSaaS 通过其 i18n 系统支持多种语言。以下是配置方法:
i18n: {
defaultLocale: 'en',
locales: {
en: {
flag: '🇺🇸',
name: 'English',
},
zh: {
flag: '🇨🇳',
name: '中文',
},
// 根据需要添加更多语言
},
}
对于每种支持的语言:
- 键是区域设置代码(例如
en
、es
、fr
) flag
是可选的表情符号,用于直观地表示语言,若不需要,可以留空name
是语言的本地形式显示名称
添加新语言时,您还需要在 messages
目录中创建相应的翻译文件,为所有 UI 字符串提供翻译。应用程序将使用这些翻译以用户选择的语言显示内容。
您可以在 国际化 文档中了解更多关于国际化设置的信息。
博客
配置博客功能:
属性 | 类型 | 描述 |
---|---|---|
paginationSize | number | 每页显示的文章数量 |
relatedPostsSize | number | 显示的相关文章数量 |
示例:
blog: {
paginationSize: 6,
relatedPostsSize: 3,
}
如果不需要博客功能,可以将 enable
设置为 false
。如果禁用博客功能,博客菜单将不会显示在导航栏和页脚中,并且博客相关页面将不会包含在 sitemap 中。
您可以在 博客 文档中了解更多关于博客配置的信息。
文档
配置文档功能:
属性 | 类型 | 描述 |
---|---|---|
enable | boolean | 是否启用文档,默认为 true |
示例:
docs: {
enable: true,
}
如果不需要文档功能,可以将 enable
设置为 false
。如果禁用文档功能,文档菜单将不会显示在导航栏和页脚中,并且文档相关页面将不会包含在 sitemap 中。
您可以在 文档 文档中了解更多关于文档配置的信息。
邮件
配置邮件服务:
属性 | 类型 | 描述 |
---|---|---|
provider | 'resend' | 邮件服务提供商(目前仅支持 Resend) |
contact | string | 用于发送和接收邮件的联系邮箱 |
示例:
mail: {
provider: 'resend',
contact: 'contact@example.com',
}
您可以在 邮件 文档中了解更多关于邮件配置的信息。
邮件订阅
配置邮件订阅服务:
属性 | 类型 | 描述 |
---|---|---|
enable | boolean | 是否启用邮件订阅,默认为 true |
provider | 'resend' | 邮件订阅服务提供商(目前仅支持 Resend) |
autoSubscribeAfterSignUp | boolean | 是否在用户注册后自动订阅 |
示例:
newsletter: {
enable: true,
provider: 'resend',
autoSubscribeAfterSignUp: true,
}
如果不需要邮件订阅功能,可以将 enable
设置为 false
。如果禁用邮件订阅功能,订阅表单将不会显示在首页和博客页面上,并且订阅状态将不会显示在通知设置页面中。
您可以在 邮件订阅 文档中了解更多关于邮件订阅配置的信息。
存储
配置文件存储:
属性 | 类型 | 描述 |
---|---|---|
enable | boolean | 是否启用存储,默认为 true |
provider | 's3' | 存储提供商(目前仅支持 S3) |
示例:
storage: {
enable: true,
provider: 's3',
}
如果不需要存储功能,可以将 enable
设置为 false
。如果禁用存储功能,更新用户头像功能将不可用。
您可以在 存储 文档中了解更多关于存储配置的信息。
支付
配置支付处理服务:
属性 | 类型 | 描述 |
---|---|---|
provider | 'stripe' | 支付处理器(目前仅支持 Stripe) |
示例:
payment: {
provider: 'stripe',
}
您可以在 支付 文档中了解更多关于支付配置的信息。
价格
配置价格计划:
属性 | 类型 | 描述 |
---|---|---|
plans | Record<string, PricePlan> | 定价计划配置 |
plans
对象中的每个价格计划可以具有以下属性:
属性 | 类型 | 描述 |
---|---|---|
id | string | 计划的唯一标识符 |
name | string? | 计划的显示名称 |
description | string? | 计划功能的描述 |
features | string[]? | 此计划包含的功能列表 |
limits | string[]? | 此计划的限制列表 |
prices | Price[] | 计划的价格选项列表(月付、年付、一次性等) |
isFree | boolean | 是否为免费计划 |
isLifetime | boolean | 是否为终身(一次性支付)计划 |
popular | boolean? | 是否将此计划突出显示为推荐 |
disabled | boolean? | 是否在 UI 中禁用此计划 |
credits | object? | 积分配置 |
prices
数组包含具有以下结构的对象:
属性 | 类型 | 描述 |
---|---|---|
type | 'subscription' | 'one_time' | 支付类型(订阅或一次性) |
priceId | string | Stripe 价格 ID(不是产品 ID) |
amount | number | 货币单位的价格金额(美元、欧元等) |
currency | string | 货币代码(例如 USD) |
interval | 'month' | 'year'? | 定期付款的计费间隔 |
trialPeriodDays | number? | 免费试用期天数 |
allowPromotionCode | boolean? | 是否允许此价格使用促销代码 |
disabled | boolean? | 是否在 UI 中禁用此价格 |
credits
对象的结构:
属性 | 类型 | 描述 |
---|---|---|
enable | boolean | 是否启用积分 |
amount | number | 积分数量 |
expireDays | number? | 积分过期期限(天数),可选 |
MkSaaS 模板默认使用三个价格计划:免费计划、专业订阅计划(月付/年付)和终身计划(一次性支付):
price: {
plans: {
free: {
id: 'free',
prices: [],
isFree: true,
isLifetime: false,
credits: {
enable: true,
amount: 50,
expireDays: 30,
},
},
pro: {
id: 'pro',
prices: [
{
type: PaymentTypes.SUBSCRIPTION,
priceId: process.env.NEXT_PUBLIC_STRIPE_PRICE_PRO_MONTHLY!,
amount: 990,
currency: 'USD',
interval: PlanIntervals.MONTH,
},
{
type: PaymentTypes.SUBSCRIPTION,
priceId: process.env.NEXT_PUBLIC_STRIPE_PRICE_PRO_YEARLY!,
amount: 9900,
currency: 'USD',
interval: PlanIntervals.YEAR,
},
],
isFree: false,
isLifetime: false,
popular: true,
credits: {
enable: true,
amount: 1000,
expireDays: 30,
},
},
lifetime: {
id: 'lifetime',
prices: [
{
type: PaymentTypes.ONE_TIME,
priceId: process.env.NEXT_PUBLIC_STRIPE_PRICE_LIFETIME!,
amount: 19900,
currency: 'USD',
allowPromotionCode: true,
},
],
isFree: false,
isLifetime: true,
credits: {
enable: true,
amount: 1000,
expireDays: 30,
},
},
},
},
何时将计划或价格设置为禁用?
-
当计划不再对新客户开放,但您需要为已购买的现有用户保留它时,将计划设置为
disabled: true
。 -
当特定定价选项不再可用,但该价格的现有订阅者仍应能够在账单页面中看到它时,将价格设置为
disabled: true
。
向用户显示价格计划时,价格配置 通过翻译内容(如名称、描述和功能列表)来显示这些价格计划。
您可以在 支付 文档中了解更多关于价格配置的信息。
积分
为网站配置积分系统:
属性 | 类型 | 描述 |
---|---|---|
enableCredits | boolean | 是否启用积分系统 |
enableForFreePlan | boolean | 免费计划用户是否可以购买积分(默认情况下,只有付费用户可以购买额外的积分套餐) |
registerGiftCredits | object | 注册赠送积分的配置 |
packages | Record<string, CreditPackage> | 可购买的积分套餐 |
registerGiftCredits
对象的结构:
属性 | 类型 | 描述 |
---|---|---|
enable | boolean | 是否启用注册赠送积分 |
credits | number | 注册时赠送的积分数量 |
expireDays | number? | 赠送积分的过期期限(天数),可选 |
packages
中每个积分套餐的结构:
属性 | 类型 | 描述 |
---|---|---|
id | string | 套餐的唯一标识符 |
name | string? | 套餐的显示名称 |
description | string? | 套餐的描述 |
popular | boolean | 是否推荐此套餐 |
credits | number | 套餐包含的积分数量 |
price | object | 价格信息,包括 priceId、金额、货币、allowPromotionCode |
expireDays | number? | 积分的有效期(天数),可选,undefined 表示不过期 |
disabled | boolean? | 是否在 UI 中禁用此套餐,可选 |
示例:
credits: {
enableCredits: false,
enableForFreePlan: false,
registerGiftCredits: {
enable: true,
credits: 50,
expireDays: 30,
},
packages: {
basic: {
id: 'basic',
popular: false,
credits: 100,
expireDays: 30,
price: {
priceId: process.env.NEXT_PUBLIC_STRIPE_PRICE_CREDITS_BASIC!,
amount: 990,
currency: 'USD',
allowPromotionCode: true,
},
},
// ... 其他积分套餐 ...
},
},
您可以在 积分 文档中了解更多关于积分配置的信息。
视频教程
下一步
现在您了解了网站配置,请探索其他相关主题: