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()