find('div[data-kind="SECTION"]'); if (empty($sections)) { die('Keine Beiträge gefunden.'); } foreach ($sections as $section) { // Extrahiere Datum $dateElement = $section->find('h3.textheading3', 0); if (!$dateElement) { continue; // Überspringe, wenn kein Datum vorhanden ist } $date = trim($dateElement->plaintext); // Suche nach dem Textbereich mit dem Hauptinhalt $textComponents = $section->find('div[data-specific-kind="TEXT"]'); if (empty($textComponents)) { continue; // Überspringe, wenn kein Textbereich gefunden wurde } // Finde die Komponente mit dem Titel und Link $titleElement = null; $mainContent = null; foreach ($textComponents as $textComponent) { $linkElement = $textComponent->find('a.link4', 0); if ($linkElement) { $titleElement = $linkElement; $mainContent = $textComponent; break; } } if (!$titleElement) { continue; // Überspringe, wenn kein Titel gefunden wurde } $title = trim($titleElement->plaintext); $uri = urljoin(self::URI, $titleElement->href); // Extrahiere Changelog-Inhalt aus dem Haupttextbereich $content = ''; // Füge den Titel zum Content hinzu $content .= '

' . $title . '

'; $content .= '

Datum: ' . $date . '

'; if ($mainContent) { // Suche nach allen Überschriften, Listen und Absätzen im Haupttextbereich $contentElements = $mainContent->find('h1, h2, h3, ul, p'); foreach ($contentElements as $element) { // Überspringe den Titel, den wir bereits hinzugefügt haben if ($element->tag == 'h1' && strpos($element->plaintext, $title) !== false) { continue; } // Überspringe spezielle Absätze am Ende if ($element->tag == 'p' && (strpos($element->plaintext, 'not only for EverSD') !== false || strpos($element->plaintext, 'Everyone can enjoy') !== false)) { continue; } // Füge andere Elemente zum Inhalt hinzu if ($element->tag == 'h2' || $element->tag == 'h3') { $content .= '<' . $element->tag . '>' . trim($element->plaintext) . 'tag . '>'; } elseif ($element->tag == 'ul') { $content .= $element->outertext; } elseif ($element->tag == 'p' && !empty(trim($element->plaintext))) { $content .= '

' . trim($element->plaintext) . '

'; } } } // Suche nach eingebetteten Videos $videoComponents = $section->find('div[data-specific-kind="VIDEO"]'); if (!empty($videoComponents)) { foreach ($videoComponents as $videoComponent) { $iframe = $videoComponent->find('iframe', 0); if ($iframe && isset($iframe->src)) { $videoSrc = $iframe->src; $content .= '

'; // In der Regel gibt es nur ein Video pro Beitrag break; } } } // Suche nach Bildern/Galleries $galleryComponents = $section->find('div[data-specific-kind="GALLERY"]'); if (!empty($galleryComponents)) { foreach ($galleryComponents as $galleryComponent) { $images = $galleryComponent->find('img'); if (!empty($images)) { $content .= ''; } } } // Erstelle ein neues Item $item = []; $item['title'] = $title; $item['uri'] = $uri; $item['timestamp'] = strtotime($date); $item['content'] = $content; $item['author'] = 'EverSD Team'; $this->items[] = $item; } // Sortiere die Beiträge nach Datum (neueste zuerst) usort($this->items, function ($a, $b) { return $b['timestamp'] - $a['timestamp']; }); } }