sheadawson / silverstripe-multisites
此包已废弃且不再维护。作者建议使用 silverstripe-australia/silverstripe-multisites 包。
此包最新版本(1.1.2)没有提供许可证信息。
允许通过单个站点树管理多个网站。
1.1.2
2015-10-22 05:53 UTC
Requires
- composer/installers: *
- silverstripe/cms: 3.1.*
- silverstripe/framework: 3.1.*
- silverstripe/multivaluefield: ~2.0
Replaces
README
概述
允许通过单个站点树管理多个网站。
这是Subsites模块的替代模块;它避免了任何对“当前”网站的会话跟踪,并且在运行时不修改查询以更改查询的“站点”上下文
要求
- SilverStripe 3.1.*
- 多值字段
安装
- 添加模块和多值字段模块
- 运行
dev/build
设置站点(以及附加站点)
- 在CMS中转到“页面”部分,然后单击“网站”
- 在“主机”字段中输入站点的完整路径,无需
http://
前缀 - 例如mysitedomain.com
或localhost/sub/folder
用于开发站点 - 保存
- 要添加新站点,单击“页面”部分;您应该有一个“添加站点”按钮
- 输入新站点的详细信息,其中“主机”字段是最重要的
资产管理
您可以选择在每个站点的根 assets/ 目录的子文件夹中管理每个站点的资产。在您的 mysite/config.yml 文件中添加以下扩展,并运行 ?flush=1。当在CMS中编辑站点时,您现在可以选择包含该站点所有资产的 assets/ 子文件夹。当保存站点或在cms中访问具有上传字段的页面时,此文件夹将自动创建。
FileField: extensions: - MultisitesFileFieldExtension HtmlEditorField_Toolbar: extensions: - MultisitesHtmlEditorField_ToolbarExtension
通过 HTMLEditor 上传的文件现在将上传到 assets/yoursite/Uploads。但是,如果您在cms中有自定义上传字段,则需要明确添加以下配置。
$fields->fieldByName('Root.Main.Image')->setFolderName('images/page-images')->useMultisitesFolder();
上述 useMultisitesFolder() 调用将文件夹名称从 'images/page-images' 更改为 'currentsitesubfolder/images/page-images'
已知问题
当链接到属于不同站点的页面时,SiteTree::Link() 会返回一个错误的链接,因为它会在前面添加基本URL。目前,解决此问题的最佳方法是实现以下内容在你的 Page.php(模型类)中。
/** * Overrides SiteTree->Link. Adds a check for cases where we are linking to a page on a * different site in this multisites instance. * @return String **/ public function Link($action = null) { if($this->SiteID && $this->SiteID == Multisites::inst()->getCurrentSiteId()) { return parent::Link($action); } else { return $this->RelativeLink($action); } }
- 参见 GitHub