Как написать новую строку RSS-статьи
Я собрал воедино некоторый код, возможно, он мог бы быть написан лучше - но он работает, и я научился не придираться к функциональному коду. В любом случае, у меня есть некоторый код, который автоматически обновляет файл sitemap.xml и "ПРОБЛЕМА - причина, по которой мне здесь задают вопрос", файл RSS-канала.
Запись в файл sitemap.xml работает отлично! Я доволен. Это было легко, потому что он записывает новые данные внизу файла и закрывает их, записывая </urlset>
,
Тем не менее, с файлом RSS-ленты мне нужны новые элементы, чтобы идти вверх. Я не могу понять, как это сделать. Итак, здесь прилагается текущая копия моего кода. По сути, второй раздел под названием RSS FEED WRITER является дубликатом первого раздела под названием SITEMAP.XML WRITER. Как-то, как мне нужно изменить код для второго раздела, чтобы писать новые элементы в верхней части непосредственно под этой строкой: <atom:link href="http://mydomainname.com/index.rss" rel="self" type="application/rss+xml" />
в файле index.rss.
Большое спасибо всем, кто готов помочь мне. Вот код ниже:
//
// SITEMAP.XML WRITER
//
$sitemapurl = "<url>";
$sitemaploc = "<loc>";
$sitemaplocation = "http://mydomainname.com/$url.php";
$sitemaploc1 = "</loc>";
$sitemappri = "<priority>";
$sitemappriority = "1.0";
$sitemappri1 = "</priority>";
$sitemapcha = "<changefreq>";
$sitemapchange = "daily";
$sitemapcha1 = "</changefreq>";
$sitemapurl1 = "</url>";
$sitemapurlset = "\n</urlset>";
$sitemaplength_end_string = strlen($sitemapurlset);
$sitemapfp =
fopen("sitemap.xml","r+") or die("can't open file");
fseek($sitemapfp, -$sitemaplength_end_string, SEEK_END);
fwrite ($sitemapfp, "\n".$sitemapurl."\n".$sitemaploc."".$sitemaplocation."".$sitemaploc1."\n".$sitemappri."".$sitemappriority."".$sitemappri1."\n".$sitemapcha."".$sitemapchange."".$sitemapcha1."\n".$sitemapurl1."".$sitemapurlset."\n"); //added url set to here
fclose($sitemapfp);
//
// RSS FEED WRITER
//
$rssitem = "<item>";
$rsstitle = "<title>$title</title>";
$rsslink = "<link>http://mydomainname.com/$url.php</link>";
$rssguid = "<guid isPermalink=\"true\">http://mydomainname.com/$url.php</guid>";
$rsspubdate = "<pubDate>".date('D, d M Y H:i:s O')."</pubDate>";
$rssdescription = "<description>$metadescription</description>";
$rssitem1 = "</item>";
$rsschannelrssset = "\n</channel>\n</rss>";
$rsslength_end_string = strlen($rsschannelrssset);
$rssfp =
fopen("index.rss","r+") or die("can't open file");
fseek($rssfp, -$rsslength_end_string, SEEK_END);
fwrite ($rssfp, "".$rssitem."\n".$rsstitle."\n".$rsslink."\n".$rssguid."\n".$rsspubdate."\n".$rssdescription."\n".$rssitem1."\n".$rsschannelrssset."\n");
fclose($rssfp);
РЕДАКТИРОВАТЬ: Добавление верхней части файла index.rss:
<?xml version="1.0" encoding="utf-8"?>
<rss version='2.0' xmlns:lj='http://www.livejournal.org/rss/lj/1.0/' xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
<title>My Domain Name RSS Feed</title>
<description>Description of My Domain Name RSS Feed</description>
<link>http://mydomainname.com/</link>
<atom:link href="http://mydomainname.com/index.rss" rel="self" type="application/rss+xml" />
Затем я попробовал этот код, но он не работает:
//
// RSS FEED WRITER
//
$rssitem = "<item>";
$rsstitle = "<title>$title</title>";
$rsslink = "<link>http://mydomainname.com/$url.php</link>";
$rssguid = "<guid isPermalink=\"true\">http://mydomainnanme.com/$url.php</guid>";
$rsspubdate = "<pubDate>".date('D, d M Y H:i:s O')."</pubDate>";
$rssdescription = "<description>$metadescription</description>";
$rssitem1 = "</item>";
$rssatomlink = "<atom:link href=\"http://mydomainname.com/index.rss\" rel=\"self\" type=\"application/rss+xml\" />";
$rsslength_end_string = strlen($rssatomlink);
$rssfp =
fopen("index.rss","r+") or die("can't open file");
fseek($rssfp, -$rsslength_end_string, SEEK_END);
fwrite ($rssfp, "".$rssitem."\n".$rsstitle."\n".$rsslink."\n".$rssguid."\n".$rsspubdate."\n".$rssdescription."\n".$rssitem1."\n");
fclose($rssfp);
1 ответ
Посмотрите на PHP Универсальный генератор каналов. Он поддерживает RSS 1.0 / 2.0 и ATOM 1.0.