ylping5330 / flarum-multi-domain
Flarum extension for multi-domain support with different SEO settings, templates, and posts
Installs: 0
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
Type:flarum-extension
pkg:composer/ylping5330/flarum-multi-domain
Requires
- flarum/core: ^1.0
This package is auto-updated.
Last update: 2025-12-25 09:53:25 UTC
README
一个支持单站点多域名的Flarum扩展,可以为不同域名显示不同的SEO设置(TKD)、模板样式和帖子内容。
功能特性
- ✅ 多域名SEO支持: 为不同域名设置不同的标题(Title)、关键词(Keywords)和描述(Description)
- ✅ 动态模板切换: 根据访问域名显示不同的样式和模板
- ✅ 内容过滤: 不同域名可以显示不同的帖子和讨论
- ✅ 配置文件管理: 通过简单的文本文件管理域名配置
- ✅ 前端API支持: 提供API接口获取当前域名配置
安装方法
方法1: 通过Composer安装(推荐)
composer require ylping5330/flarum-multi-domain
方法2: 手动安装
- 下载扩展文件到Flarum的
extensions目录 - 运行以下命令:
composer install --no-dev php flarum migrate php flarum cache:clear
配置说明
1. 创建SEO配置文件
在Flarum根目录下创建seo.txt文件,格式如下:
域名|标题|关键词|描述
示例:
domain1.com|网站1标题|关键词1,关键词2,关键词3|这是域名1的描述信息
domain2.com|Website 2 Title|keyword1,keyword2,keyword3|This is the description for domain2
example.com|示例网站|示例,测试,论坛|这是一个示例网站的描述
2. 启用扩展
在Flarum管理后台的扩展页面启用"Multi Domain"扩展。
使用说明
SEO设置
扩展会自动根据访问的域名读取seo.txt文件中对应的配置,并设置:
- 页面标题 (
<title>) - Meta关键词 (
<meta name="keywords">) - Meta描述 (
<meta name="description">) - Open Graph标签
- Twitter Card标签
模板样式
扩展会为不同域名添加CSS类:
/* 域名为domain1.com时 */ body.domain-domain1_com { /* 自定义样式 */ } /* 域名为domain2.com时 */ body.domain-domain2_com { /* 自定义样式 */ }
你可以在主题的CSS文件中使用这些类来为不同域名设置不同的样式。
内容过滤
扩展支持多种内容过滤方式:
-
通过标签过滤(需要Tags扩展):
- 创建以
domain-域名格式命名的标签 - 例如:
domain-example-com
- 创建以
-
通过关键词过滤:
- 根据SEO配置中的关键词过滤相关内容
前端API
扩展提供API接口获取当前域名配置:
// 获取当前域名配置 app.request({ method: 'GET', url: app.forum.attribute('apiUrl') + '/multi-domain/config' }).then(response => { const config = response.data.attributes; console.log('当前域名:', config.domain); console.log('标题:', config.title); console.log('关键词:', config.keywords); console.log('描述:', config.description); });
高级配置
自定义CSS文件
你可以为每个域名创建独立的CSS文件:
- 在
public/assets/extensions/ylping5330-multi-domain/css/目录下创建以域名命名的CSS文件 - 例如:
domain1.com.css、domain2.com.css
自定义主题色
在前端JavaScript中,扩展会根据域名自动应用不同的主题色:
const themeColors = { 'domain1.com': '#e74c3c', // 红色 'domain2.com': '#3498db', // 蓝色 'example.com': '#2ecc71' // 绿色 };
你可以修改js/src/forum/index.js文件来自定义主题色。
开发说明
文件结构
├── composer.json # Composer配置
├── extend.php # 扩展器配置
├── src/
│ ├── Middleware/
│ │ └── DomainMiddleware.php # 域名检测中间件
│ ├── Service/
│ │ ├── DomainConfigService.php # 域名配置服务
│ │ └── PostFilterService.php # 帖子过滤服务
│ ├── Listener/
│ │ ├── AddSeoData.php # SEO数据监听器
│ │ ├── ModifyTemplate.php # 模板修改监听器
│ │ └── FilterDiscussions.php # 讨论过滤监听器
│ └── Api/Controller/
│ └── GetConfigController.php # 配置API控制器
├── js/src/
│ ├── forum/index.js # 前端JavaScript
│ └── admin/index.js # 管理后台JavaScript
├── resources/
│ ├── less/
│ │ ├── forum.less # 前端样式
│ │ └── admin.less # 管理后台样式
│ └── locale/
│ ├── en.yml # 英文本地化
│ └── zh.yml # 中文本地化
└── seo.txt # SEO配置文件示例
扩展开发
如果你需要修改或扩展功能:
- 修改相应的PHP类文件
- 更新前端JavaScript代码
- 运行
npm run build编译前端资源 - 清除Flarum缓存:
php flarum cache:clear
兼容性
- Flarum版本: ^1.0 1
- PHP版本: >= 7.4
- 可选依赖: flarum/tags(用于标签过滤功能)
许可证
MIT License
支持
如果你遇到问题或有建议,请:
- 查看Flarum官方文档 2
- 在GitHub上提交Issue
- 在Flarum社区论坛寻求帮助
更新日志
v1.0.0
- 初始版本发布
- 支持多域名SEO设置
- 支持模板样式切换
- 支持内容过滤功能