symiote/silverstripe-multisites

此包的最新版本(5.2.6)没有提供许可信息。

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

安装次数: 13,581

依赖关系: 4

建议者: 2

安全性: 0

星标: 13

关注者: 5

分支: 30

开放问题: 2

类型:silverstripe-vendormodule


README

Build Status

概述

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

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

与SilverStripe 4.0.x兼容

  • 请参阅4.0.x以了解3.5兼容性
  • 请参阅1.2.x版本以了解3.1兼容性

升级到SS4

以下重要变更已发生

  • 现在必须在项目配置中显式配置主题。在yml配置中设置Site.available_themes。这必须是一个themename: 标签的映射
  • 由于对资产管理的基本更改,目前不支持特定于站点的资产文件夹。这将在一段时间内进行审查

要求

安装

  • 添加模块和multivaluefield模块
  • 运行dev/build

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

  • 在CMS中转到页面部分,然后点击网站
  • 在“主机”字段中输入站点的完整路径,不包含http://引导 - 例如,开发站点的mysitedomain.comlocalhost/sub/folder
  • 保存
  • 要添加新站点,点击页面部分;您应该有一个“添加站点”按钮
  • 输入有关新站点的详细信息,其中主机字段是最重要的

配置

Site:
  available_themes:
    name: Label

为了支持级联主题,在配置中为“名称”提供以逗号分隔的主题列表。

资产管理

注意:由于对资产管理层的更改,目前此功能在SS4中不工作。一旦更清晰,此功能将被重新启用。

您可以选择在每个网站根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);
	}
}