From 3b8207d70cb98c42f1fdf204e815a0a078fdaa5e Mon Sep 17 00:00:00 2001 From: Robbie Averill Date: Fri, 31 May 2019 10:28:36 +1200 Subject: [PATCH] Ensure URL segment field type before using its API, and add docs around subsite and fluent domain compatibility --- docs/en/introduction.md | 11 +++++++++++ src/Extensions/SiteTreeSubsites.php | 4 +++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/docs/en/introduction.md b/docs/en/introduction.md index 24eabff4..e9dba82e 100644 --- a/docs/en/introduction.md +++ b/docs/en/introduction.md @@ -48,3 +48,14 @@ to speak to your website administrator or hosting provider to facilitate this. You can simulate subsite access without setting up virtual hosts by appending ?SubsiteID= to the request. + +### How do Subsite domains work with Fluent domains? + +The Subsites module and Fluent translation module both provide the concept of defining "domains" and let you +configure the host name for it. This functionality is essentially performing the same duty in both modules. + +In the "URL segment" field for CMS pages both Subsites and Fluent will add their context to the value. If you +have a Subsite domain configured but no Fluent domain, Fluent will respect the existing domain and add its +locale context to the value. If you have a Subsite domain configured and a Fluent domain configure, Fluent will +use its own domain host name value, and the Subsite domain value will be lost. For this reason, you will need +to ensure that you use the same host name in both Subsite and Fluent domain entries. diff --git a/src/Extensions/SiteTreeSubsites.php b/src/Extensions/SiteTreeSubsites.php index 728feca8..ed79f98f 100644 --- a/src/Extensions/SiteTreeSubsites.php +++ b/src/Extensions/SiteTreeSubsites.php @@ -3,6 +3,7 @@ namespace SilverStripe\Subsites\Extensions; use Page; +use SilverStripe\CMS\Forms\SiteTreeURLSegmentField; use SilverStripe\CMS\Model\SiteTree; use SilverStripe\Control\Controller; use SilverStripe\Control\Director; @@ -150,6 +151,7 @@ public function updateCMSFields(FieldList $fields) // replace readonly link prefix $subsite = $this->owner->Subsite(); $nested_urls_enabled = Config::inst()->get(SiteTree::class, 'nested_urls'); + /** @var Subsite $subsite */ if ($subsite && $subsite->exists()) { // Use baseurl from domain $baseLink = $subsite->absoluteBaseURL(); @@ -163,7 +165,7 @@ public function updateCMSFields(FieldList $fields) } $urlsegment = $fields->dataFieldByName('URLSegment'); - if ($urlsegment) { + if ($urlsegment && $urlsegment instanceof SiteTreeURLSegmentField) { $urlsegment->setURLPrefix($baseLink); } }