change(indieblog): when building rss feed, include original article content too
This commit is contained in:
parent
9ed4c26438
commit
dce7b451d0
@ -49,8 +49,12 @@ foreach ($recentItems as $item) {
|
|||||||
$rssItem = $channel->addChild('item');
|
$rssItem = $channel->addChild('item');
|
||||||
$rssItem->addChild('title', htmlspecialchars($item['itemtitle'] ?? 'No title'));
|
$rssItem->addChild('title', htmlspecialchars($item['itemtitle'] ?? 'No title'));
|
||||||
$rssItem->addChild('link', htmlspecialchars($item['itemurl'] ?? ''));
|
$rssItem->addChild('link', htmlspecialchars($item['itemurl'] ?? ''));
|
||||||
$rssItem->addChild('description', htmlspecialchars($item['feedtitle'] ?? ''));
|
|
||||||
$rssItem->addChild('pubDate', date(DATE_RSS, $item['published']));
|
$rssItem->addChild('pubDate', date(DATE_RSS, $item['published']));
|
||||||
|
|
||||||
|
// Fetch original RSS feed content for the entry
|
||||||
|
$originalContent = fetchOriginalContent($item['itemurl']);
|
||||||
|
$rssItem->addChild('description', htmlspecialchars($originalContent ?? $item['feedtitle'] ?? 'No content'));
|
||||||
|
|
||||||
$newEntries[] = $item['itemid'];
|
$newEntries[] = $item['itemid'];
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -61,3 +65,25 @@ if (!empty($newEntries)) {
|
|||||||
|
|
||||||
// Save RSS feed
|
// Save RSS feed
|
||||||
$rss->asXML($rssFile);
|
$rss->asXML($rssFile);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetches the original content from a given URL.
|
||||||
|
*
|
||||||
|
* @param string $url The URL of the article to fetch.
|
||||||
|
* @return string|null The extracted content, or null if unavailable.
|
||||||
|
*/
|
||||||
|
function fetchOriginalContent(string $url): ?string
|
||||||
|
{
|
||||||
|
$html = @file_get_contents($url);
|
||||||
|
if (!$html) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Extract content between <body> tags (basic extraction, adapt as needed)
|
||||||
|
if (preg_match('/<body.*?>(.*?)<\/body>/si', $html, $matches)) {
|
||||||
|
// Clean HTML content (strip tags, keep minimal formatting)
|
||||||
|
return strip_tags($matches[1], '<p><br><a><strong><em>');
|
||||||
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user