From e287918121b83ed5487e979f6618e493345ff153 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Thu, 20 Feb 2025 00:24:46 +0100 Subject: [PATCH] Extract category from reichelt provider --- .../Providers/ReicheltProvider.php | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/Services/InfoProviderSystem/Providers/ReicheltProvider.php b/src/Services/InfoProviderSystem/Providers/ReicheltProvider.php index 2afb978f..6aa4c001 100644 --- a/src/Services/InfoProviderSystem/Providers/ReicheltProvider.php +++ b/src/Services/InfoProviderSystem/Providers/ReicheltProvider.php @@ -131,6 +131,7 @@ class ReicheltProvider implements InfoProviderInterface provider_id: $id, name: $json[0]['article_artnr'], description: $json[0]['article_besch'], + category: $this->parseCategory($dom), manufacturer: $json[0]['manufacturer_name'], preview_image_url: $json[0]['article_picture'], provider_url: $productPage, @@ -141,6 +142,29 @@ class ReicheltProvider implements InfoProviderInterface } + + private function parseCategory(Crawler $dom): string + { + // Look for ol.breadcrumb and iterate over the li elements + $category = ''; + $dom->filter('ol.breadcrumb li.triangle-left')->each(function (Crawler $element) use (&$category) { + //Do not include the .breadcrumb-showmore element + if ($element->attr('id') === 'breadcrumb-showmore') { + return; + } + + $category .= $element->text() . ' -> '; + }); + //Remove the trailing ' -> ' + $category = substr($category, 0, -4); + + return $category; + } + + /** + * @param Crawler $dom + * @return ParameterDTO[] + */ private function parseParameters(Crawler $dom): array { $parameters = [];