在过去几周里,我进行了大量研究和头脑风暴,以找出为 Joomla 添加多站点支持的最佳方法。我与 Marius(我亲爱的导师)进行了多次讨论,在我们一起提出了一些不同的想法后,有一个想法脱颖而出,最大化了兼容性和灵活性(如下所述)。
由于多站点支持是一个非常大的项目,涉及许多子问题,我决定将这个夏天的项目重点放在为单个代码库和单个数据库添加多站点支持。这个方法是将单个 Joomla 安装增强,以处理来自多个不同域的调用。这具有数据可以在各个站点之间非常容易共享的优点。接下来将添加限制特定数据访问的功能。在夏天之后,项目可以进一步扩展,以添加多种多站点支持的组合,例如:单个代码库与多个数据库,多个代码库与共享数据库。
工作原理
* 超级管理员可以在多站点组件中创建新站点,并指定与 siteid 相关联的 URL 和表前缀
这将触发以下操作
- 在创建多站点时,超级管理员将有权选择要共享的表(如果有的话,例如用户、会话、内容、组件等)
- 新站点安装将触发一个 mysql 查询,该查询将使用定义的表前缀创建数据库结构。如果表正在共享,这个新表将指向共享站点的相应表。
- 将分配一个类似于主站的配置文件给特定的 siteid,允许超级管理员更改其站点的选项
* 超级管理员将能够进入多站点组件的一部分,选择是否希望在各个站点之间共享特定的组件,而将其他组件分开
* 在前端,JRoute 将处理 URL 检测并使用相应的配置文件加载正确的站点。
优点
* 用于安装多站点配置的简单界面。
* 单一代码库与单一数据库
* 系统兼容所有现有的模块/组件/插件
* 将使更多大型组织能够采用Joomla
* 在网站之间共享用户、会话、模块、组件和内容
* 允许完全控制Joomla的URL,赋予您缩短URL、使用户友好和对搜索引擎友好的能力。 (例如:www.yourdomain.com/index.php?option=com_forum&itemid=54 转换为 forum.yourdomain.com)
缺点
- 需要 MySQL5(早期版本中不支持views)
目标
· 代码必须是跨平台和浏览器的
o 应该在所有主流浏览器中工作
- Firefox
- Google Chrome
- Internet Explorer
- 基于Gecko的浏览器
- Opera
- Safari
· 安装简便性
o 界面必须便于安装和管理多个网站
o 必须与其他模块和组件接口
· 易用性
o Joomla中的多站点选项应简单
o 提供禁用某些网站的功能
o 提供更多数据共享的选项
- 允许用户选择在多个站点间共享哪些模块/组件
计划方法的概述
步骤 1: 构建一个超级管理员可以用来创建/编辑多站点的组件
步骤 2: 创建一个安装程序来部署独立的多个站点
步骤 3: 创建一个安装程序来部署共享的多站点
步骤 4: 为站点创建配置加载方案
步骤 5: 为多站点添加对核心安装程序修改
站点管理员将能够创建新网站并配置数据共享或限制特定网站的数据。该项目将为Joomla 1.6设计。对核心代码的修改将保持在最低程度,并尽可能非侵入性。
暂定时间表
我将尽可能接近这个时间表;然而,不幸的是,总是会遇到一些障碍。
(5月23日 – 6月4日) – 实施步骤 1
(6月4日 – 6月19日) – 实施步骤 2
(6月19日 – 7月3日) – 实施步骤 3
(7月3日 – 7月10日) – 实施步骤 4
(7月10日 – 7月17日) – 实施步骤 5
(7月17日 – 7月30日) – 测试和调试
(7月30日 – 8月10日) – 额外的杂项时间 … 追赶 + 测试
我还在论坛上为这个项目创建了一个主题,可以作为一个讨论场所
https://forum.joomla.org/viewtopic.php?f=231&t=404118
我期待一个充满代码的夏天,我总是渴望您的建议、反馈和测试帮助。
请继续关注更新,我将在这里博客我的整个夏季旅程,您也可以在 twitter 上关注我。