sheadawson/silverstripe-multisites

此包已废弃且不再维护。作者建议使用 silverstripe-australia/silverstripe-multisites 包。
此包最新版本(1.1.2)没有提供许可证信息。

允许通过单个站点树管理多个网站。

安装量: 1,832

依赖者: 0

建议者: 0

安全: 0

星级: 0

关注者: 1

分支: 26

类型:silverstripe-module

1.1.2 2015-10-22 05:53 UTC

This package is auto-updated.

Last update: 2019-10-08 00:21:11 UTC


README

概述

允许通过单个站点树管理多个网站。

这是Subsites模块的替代模块;它避免了任何对“当前”网站的会话跟踪,并且在运行时不修改查询以更改查询的“站点”上下文

要求

安装

  • 添加模块和多值字段模块
  • 运行 dev/build

设置站点(以及附加站点)

  • 在CMS中转到“页面”部分,然后单击“网站”
  • 在“主机”字段中输入站点的完整路径,无需 http:// 前缀 - 例如 mysitedomain.comlocalhost/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);
	}
}