1
0
mirror of https://github.com/e107inc/e107.git synced 2025-01-16 12:18:39 +01:00

Closes #4760 - Added image support to generated Google sitemaps.

This commit is contained in:
Cameron 2022-04-21 11:51:52 -07:00
parent c2fc8fce0a
commit fe8d27c51c
2 changed files with 34 additions and 5 deletions

View File

@ -101,15 +101,25 @@ class news_gsitemap
{
$data = $this->getNewsPosts();
/** @var news_shortcodes $sc */
$sc = e107::getScBatch('news');
e107::getParser()->thumbWidth(1000);
$ret = [];
foreach($data as $row)
{
$sc->setScVar('news_item', $row);
$imgUrl = $sc->sc_news_image(['item'=>1, 'type'=>'src']);
$ret[] = [
'url' => $this->url('news', $row),
'lastmod' => !empty($row['news_modified']) ? $row['news_modified'] : (int) $row['news_datestamp'],
'freq' => 'hourly',
'priority' => 0.5
'priority' => 0.5,
'image' => (strpos($imgUrl, 'http') === 0) ? $imgUrl : SITEURLBASE.$sc->sc_news_image(['item'=>1, 'type'=>'src']),
];
}

View File

@ -63,7 +63,7 @@ class gsitemap_xml
{
header('Content-type: application/xml', TRUE);
$xml = "<?xml version='1.0' encoding='UTF-8'?>
<urlset xmlns='http://www.sitemaps.org/schemas/sitemap/0.9'>";
<urlset xmlns='http://www.sitemaps.org/schemas/sitemap/0.9' xmlns:image='https://www.google.com/schemas/sitemap-image/1.1'>";
if(empty($items))
{
@ -105,10 +105,29 @@ class gsitemap_xml
$loc = (strpos($url, 'http') === 0) ? $url : SITEURL.$tp->replaceConstants($url,true);
$xml .= "
<url>
<loc>".$loc."</loc>
<loc>".$loc."</loc>";
if(!empty($sm[$prefix.'image']))
{
$imgUrl = $sm[$prefix.'image'];
if($imgUrl[0] === '/')
{
$imgUrl = ltrim($imgUrl, '/');
}
$imgUrl = (strpos($imgUrl, 'http') === 0) ? $imgUrl : SITEURL.$tp->replaceConstants($imgUrl,true);
$xml .= "
<image:image>
<image:loc>".$imgUrl."</image:loc>
</image:image>";
}
$xml .= "
<lastmod>".date('c', (int) $sm[$prefix.'lastmod'])."</lastmod>
<changefreq>".$sm[$prefix.'freq']."</changefreq>
<priority>".$sm[$prefix.'priority']."</priority>
<changefreq>".$sm[$prefix.'freq']."</changefreq>
<priority>".$sm[$prefix.'priority']."</priority>
</url>";
}