自从我上次更新已经超过一周了,我想给社区一个更新。过去一周带来了很多关于我的 Google Summer of Code 多站点项目实现的讨论和有趣的变化。如果你没听说过这个项目或者想阅读完整的项目细节,你可以在这里查看


感谢 Joomla 社区对我上一次博客文章的所有反馈,它打开了很多讨论,并最终改善了项目的实现。在与 Marius(我的导师)的几次讨论后,我们决定使用 MySQL 视图的方法更具可扩展性,并且对 Joomla 核心需要的修改更少。之前的基于菜单的方法需要组件为非共享站点添加代码。使用 MySQL 视图的想法与我的原始项目提案非常相似。这种方法的不利之处在于需要 MySQL5 来支持视图。具体细节如下。

如何工作

* 超级管理员可以在多站点组件中创建一个新站点,并指定与 siteid 相关联的 URL 和表前缀

这将触发以下操作
     - 在创建多站点时,超级管理员将有一些选项,可以选择哪些表(如果有的话)要共享(用户、会话、内容、组件等)
    - 新站点的安装将触发一个 mysql 查询,该查询将使用定义的表前缀创建数据库结构。如果表被共享,这个新表将指向共享站点的表。
    - 将分配一个类似于主站点的配置文件给特定的 siteid,允许超级管理员更改他们的站点的选项

* 超级管理员将能够进入多站点组件的一个部分,选择是否希望在不同站点之间共享特定的组件,保留其他组件独立
* 在前端,JRoute将会处理URL检测并使用适当的配置文件来加载正确的网站。

计划方法概述
步骤 1:构建一个可以被超级管理员用来创建/编辑多站点的组件
步骤 2:创建一个安装程序来部署独立的多站点
步骤 3:创建一个安装程序来部署共享的多站点
步骤 4:为站点创建配置加载方案
步骤 5:为多站点添加核心安装程序的修改

我已经完成了管理员组件,目前正在开发非共享站点的安装程序。我已经更新了原始的项目页面以反映新的方法。

请继续关注更新,我始终乐于听取反馈!