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

dev-main 2025-09-25 09:23 UTC

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: 手动安装

  1. 下载扩展文件到Flarum的extensions目录
  2. 运行以下命令:
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文件中使用这些类来为不同域名设置不同的样式。

内容过滤

扩展支持多种内容过滤方式:

  1. 通过标签过滤(需要Tags扩展):

    • 创建以domain-域名格式命名的标签
    • 例如:domain-example-com
  2. 通过关键词过滤

    • 根据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文件:

  1. public/assets/extensions/ylping5330-multi-domain/css/目录下创建以域名命名的CSS文件
  2. 例如:domain1.com.cssdomain2.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配置文件示例

扩展开发

如果你需要修改或扩展功能:

  1. 修改相应的PHP类文件
  2. 更新前端JavaScript代码
  3. 运行npm run build编译前端资源
  4. 清除Flarum缓存:php flarum cache:clear

兼容性

  • Flarum版本: ^1.0 1
  • PHP版本: >= 7.4
  • 可选依赖: flarum/tags(用于标签过滤功能)

许可证

MIT License

支持

如果你遇到问题或有建议,请:

  1. 查看Flarum官方文档 2
  2. 在GitHub上提交Issue
  3. 在Flarum社区论坛寻求帮助

更新日志

v1.0.0

  • 初始版本发布
  • 支持多域名SEO设置
  • 支持模板样式切换
  • 支持内容过滤功能