From f57d64d188dab89718ee2501aee4e58d1d9ebc21 Mon Sep 17 00:00:00 2001 From: Akamaru Date: Thu, 3 Apr 2025 21:15:47 +0200 Subject: [PATCH] Update FoodwatchBridge.php --- FoodwatchBridge.php | 78 +++++++++++++++++++++++++++++++++++++-------- 1 file changed, 65 insertions(+), 13 deletions(-) diff --git a/FoodwatchBridge.php b/FoodwatchBridge.php index 32ffddb..9c5c7ed 100644 --- a/FoodwatchBridge.php +++ b/FoodwatchBridge.php @@ -8,7 +8,7 @@ class FoodwatchBridge extends BridgeAbstract { const DESCRIPTION = 'Get the latest news from Foodwatch.org.'; public function getIcon(){ - return 'https://www.foodwatch.org/typo3conf/ext/wwt3_site/Resources/Public/Images/Favicons/favicon.ico'; + return 'https://www.foodwatch.org/typo3conf/ext/wwt3_sitepackage_base/Resources/Public/frontend/favicons/generated/apple-touch-icon-57x57.png'; } public function collectData() { @@ -18,29 +18,81 @@ class FoodwatchBridge extends BridgeAbstract { or returnServerError('Could not request webpage: ' . $pageUrl); // Process articles - foreach($html->find('div.list-teaser__content') as $element) { + foreach($html->find('article.list-teaser') as $element) { if(count($this->items) >= 10) { break; } - $article_title = trim(strip_tags($element->find('h3', 0)->innertext)); - $article_uri = self::URI . substr($element->find('a', 0)->href, 0); - //$article_thumbnail = self::URI . substr($element->find('img', 0)->src, 3); - //$article_content = ''; - $article_content = trim(strip_tags($element->find('div.list-teaser__main', 0)->innertext)); - //$article_timestamp = strtotime($element->find('time', 0)->attr['datetime']); - $article_uid = trim(strip_tags($element->find('div.list-teaser__meta', 0)->innertext)); + $article_title = trim(strip_tags($element->find('h3.list-teaser__title', 0)->innertext)); + + // Find URL + $article_uri = self::URI . $element->find('h3.list-teaser__title a', 0)->href; + + // Get meta information (category and date) + $article_meta = $element->find('div.list-teaser__meta', 0); + $article_category = ''; + $article_date = ''; + if ($article_meta) { + $meta_spans = $article_meta->find('span'); + if (count($meta_spans) > 0) { + $article_category = trim(strip_tags($meta_spans[0]->innertext)); + } + if (count($meta_spans) > 1) { + $article_date = trim(strip_tags($meta_spans[1]->innertext)); + } + } + + // Get content + $article_content = ''; + $content_div = $element->find('div.basic-teaser__content p', 0); + if ($content_div) { + $article_content = trim(strip_tags($content_div->innertext)); + } + + // Get image if available + $article_thumbnail = ''; + $image = $element->find('div.list-teaser__media img', 0); + if ($image) { + $article_thumbnail = self::URI . $image->src; + } + + // Create unique ID + $article_uid = $article_title . ' - ' . $article_date; // Store article in items array if (!empty($article_title)) { $item = array(); $item['uri'] = $article_uri; $item['title'] = $article_title; - //$item['enclosures'] = array($article_thumbnail); - $item['content'] = $article_content; - //$item['timestamp'] = $article_timestamp; - $item['uid'] = $article_uid; + + // Build content with image and text + $content = ''; + if ($article_thumbnail) { + $content .= '' . $article_title . ''; + } + if ($article_content) { + $content .= '

' . $article_content . '

'; + } + if ($article_category) { + $content .= '

Kategorie: ' . $article_category . '

'; + } + + $item['content'] = $content; + + // Set timestamp if date is available + if ($article_date) { + $item['timestamp'] = strtotime($article_date); + } + + // Set enclosures if image is available + if ($article_thumbnail) { + $item['enclosures'] = array($article_thumbnail); + } + + $item['uid'] = $article_uid; + $item['categories'] = array($article_category); + $this->items[] = $item; } }