From 156d8d4bf65a9d4762feb3ba05045855bcf36d4a Mon Sep 17 00:00:00 2001 From: Ryan Mitchell Date: Fri, 4 Aug 2023 15:37:18 +0100 Subject: [PATCH] [5.x] Support `search_index` tag supplemental data (#312) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Support search_index tag supplemental data * Supplement method should return $this * 🍺 --------- Co-authored-by: Duncan McClean Co-authored-by: Duncan McClean <19637309+duncanmcclean@users.noreply.github.com> --- src/Data/AugmentedModel.php | 11 ++++++++++- src/Search/Searchable.php | 6 ++++-- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/Data/AugmentedModel.php b/src/Data/AugmentedModel.php index c654471b..32cf5c07 100644 --- a/src/Data/AugmentedModel.php +++ b/src/Data/AugmentedModel.php @@ -15,12 +15,21 @@ class AugmentedModel extends AbstractAugmented protected $resource; + protected $supplements = []; + public function __construct($model) { $this->data = $model; $this->resource = Runway::findResourceByModel($model); } + public function supplement(array $data) + { + $this->supplements = $data; + + return $this; + } + public function keys() { return collect() @@ -94,6 +103,6 @@ protected function blueprintFields() protected function getFromData($handle) { - return $this->data->$handle; + return $this->supplements[$handle] ?? $this->data->$handle; } } diff --git a/src/Search/Searchable.php b/src/Search/Searchable.php index d28ba58c..64b6ea2d 100644 --- a/src/Search/Searchable.php +++ b/src/Search/Searchable.php @@ -9,13 +9,14 @@ use Statamic\Contracts\Query\ContainsQueryableValues; use Statamic\Contracts\Search\Result; use Statamic\Contracts\Search\Searchable as Contract; +use Statamic\Data\ContainsSupplementalData; use Statamic\Data\HasAugmentedInstance; use Statamic\Facades\Site; use Statamic\Search\Result as ResultInstance; class Searchable implements Contract, ContainsQueryableValues, Augmentable { - use HasAugmentedInstance; + use HasAugmentedInstance, ContainsSupplementalData; protected $model; @@ -76,6 +77,7 @@ public function getCpSearchResultBadge() public function newAugmentedInstance(): Augmented { - return new AugmentedModel($this->model); + return (new AugmentedModel($this->model)) + ->supplement($this->supplements()); } }