From 9be97b597246ec9a70999f0a2903660ce5f369a9 Mon Sep 17 00:00:00 2001 From: Jack McDade Date: Thu, 27 Jun 2024 13:35:02 +0100 Subject: [PATCH] Add Collection Filter Param Closes #1. --- src/Modifiers/WikilinksModifier.php | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/Modifiers/WikilinksModifier.php b/src/Modifiers/WikilinksModifier.php index e93bda6..ad273e4 100644 --- a/src/Modifiers/WikilinksModifier.php +++ b/src/Modifiers/WikilinksModifier.php @@ -2,8 +2,8 @@ namespace Statamic\Wikilinks\Modifiers; -use Statamic\Facades\Entry; use Illuminate\Support\Arr; +use Statamic\Facades\Entry; use Statamic\Modifiers\Modifier; class WikilinksModifier extends Modifier @@ -13,9 +13,9 @@ class WikilinksModifier extends Modifier /** * Maps to {{ var | wikilinks }} * - * @param mixed $value The value to be modified - * @param array $params Any parameters used in the modifier - * @param array $context Contextual values + * @param mixed $value The value to be modified + * @param array $params Any parameters used in the modifier + * @param array $context Contextual values * @return mixed */ public function index($value, $params, $context) @@ -25,21 +25,24 @@ public function index($value, $params, $context) preg_match_all("/\[([^\]]*)\]/", $value, $matches); $replacements = []; + $field = Arr::get($params, 0, 'title'); + $collection = Arr::get($params, 1, false); - $field = data_get($params, 0, 'title'); + foreach ($matches[1] as $index => $query) { + $result = Entry::query()->where($field, $query); - foreach($matches[1] as $index => $query) { - $result = Entry::query() - ->where($field, $query) - ->first(); + if ($collection) { + $result = $result->where('collection', $collection); + } if ($result) { - - $uri = $result->uri; - + $uri = $result->first()?->uri; $replacements[] = ($uri) ? "{$query}" : $query; + } else { + $replacements[] = $matches[0][$index]; } } + return str_replace($matches[0], $replacements, $value); } }