diff --git a/resources/js/components/fieldtypes/bard/LinkToolbar.vue b/resources/js/components/fieldtypes/bard/LinkToolbar.vue index 2753706489a..4714ec9a8ca 100644 --- a/resources/js/components/fieldtypes/bard/LinkToolbar.vue +++ b/resources/js/components/fieldtypes/bard/LinkToolbar.vue @@ -80,6 +80,16 @@
+ + + after('statamic://')->before('?')->before('#')->toString(); [$type, $id] = explode('::', $ref, 2); $data = null; diff --git a/src/Fieldtypes/Bard/LinkMark.php b/src/Fieldtypes/Bard/LinkMark.php index 955011d86f8..1277d60c8f1 100644 --- a/src/Fieldtypes/Bard/LinkMark.php +++ b/src/Fieldtypes/Bard/LinkMark.php @@ -62,7 +62,7 @@ protected function convertHref($href) return $href; } - $ref = Str::after($href, 'statamic://'); + $ref = str($href)->after('statamic://')->before('?')->before('#')->toString(); if (! $item = Data::find($ref)) { return ''; @@ -70,11 +70,13 @@ protected function convertHref($href) $selectAcrossSites = Augmentor::$currentBardConfig['select_across_sites'] ?? false; + $extras = Str::after($href, $ref); + if (! $selectAcrossSites && ! $this->isApi() && $item instanceof Entry) { - return ($item->in(Site::current()->handle()) ?? $item)->url(); + return ($item->in(Site::current()->handle()) ?? $item)->url().$extras; } - return $selectAcrossSites ? $item->absoluteUrl() : $item->url(); + return $selectAcrossSites ? $item->absoluteUrl().$extras : $item->url().$extras; } private function isApi()