我为自己的网站创建了自己的Feed,并将其连接到feedburner和dlvr.it,以便传播到社交媒体网站。
但是,每当我在我的网站上创建一个新帖子时,都需要花几分钟时间发布到feedburner(这不是一个真正的问题)并且它不会向我的社交媒体帐户发布更新并且在查看dlvr.it的报告时,它说'没有通过拉找到的物品'
我的完整我的xml代码连接到feedburner,如下所示:
<?php
include('db.php');
header('Content-Type: text/xml');
echo '<?xml version="1.0" encoding="ISO-8859-1"?>
<rss version="2.0">
<channel>
<title>MindWeather Thesis</title>
<description>Latest News from my website</description>
<link>http://www.MySite.info</link>';
$get_articles = "SELECT ID, NewsType, Content,
DATE_FORMAT(DateTime,'%a, %e %b %Y %T') as formatted_date
FROM tblnews ORDER BY DateTime DESC LIMIT 15";
$articles = mysql_query($get_articles) or die(mysql_error());
while ($article = mysql_fetch_array($articles)){
echo '
<item>
<title>'.$article['NewsType'].'</title>
<description><![CDATA['.$article['Content'].']]></description>
<link>http://www.MySite.info</link>
<pubDate>'.$article['formatted_date'].' GMT</pubDate>
</item>';
}
echo '</channel>
</rss>';
?>
怎么了?
答案 0 :(得分:0)
首先,在第一个header()
之前移动echo()
来电。您应该始终在任何其他输出之前输出标头,因为它们将信息放入HTTP标头中,在实际正文开始出现之前应始终完成。正如the manual中所述:
请记住,在发送任何实际输出之前,必须通过普通HTML标记,文件中的空行或PHP来调用header()。使用include或require,函数或其他文件访问函数读取代码是一个非常常见的错误,并且在调用header()之前输出空格或空行。使用单个PHP / HTML文件时存在同样的问题。
其次,让我们来看看你正在产生的输出。您没有提供PHP的输出(FeedBurner在尝试帮助使Feed更有效/有用的过程中改变了一些东西),但这大致是您生成的,假设数据库中有一个项目:
<?xml version='1.0' encoding='ISO-8859-1' ?>
<rss version='2.0'>
Mindweather
<channel>http://www.MySite.info
<title>MyProj</title>
<item>
<title>NewsType</title>
<link>http://www.MySite.info/signin.ph</link>
<description>Content</description>
</item>
<link>MyProj/link>
</channel>
</rss>
所以,那里有一些问题。您可以将输出与RSS spec进行比较,或通过W3 Feed Validator Service运行以获得一些提示,甚至将您的Feed与基本示例[{3}}进行比较,但基本上是:
单词“Mindweather”出现在无效的地方。将其移除,或将其移动到需要的位置。它是饲料的标题吗?如果是这样的话,它应该是<title>
的{{1}}中的“MyProj”。
“like the one on Wikipedia”出现在无效的地方。如果这是指向您网站的链接,则应该位于<channel>
的{{1}}元素中,靠近末尾,您有<link>
(当我在那里时,你也错过了那条线上<channel>
的开角括号。)
您的echo "<link>MyProj/link>
</link>
元素应之前所有商品。
您的<channel>
需要<link>
元素。
最重要的是,您的Feed中没有<channel>
或<description>
元素。
即使pubDate
和guid
在技术上是可选的,但定期从RSS Feed中提取内容的内容往往会查找其中一个或两个,以查看他们之前是否已经看过它们。 pubDate应该是新项目的发布日期,guid应该是它的唯一标识符(通常使用特定项目的URL。)有关详细信息,请参阅http://www.MySite.info。
例如,通常从Feed中提取的内容只会提取过去30天内的项目,因此,它会查找pubDate比此更新的任何pubDate
。如果您的商品都没有pubDate,则不会“看到”任何商品。
当我开发Feed时,我通常会抓取the RSS 2.0 spec作为模板,并使我的输出看起来像这样,只有我的详细信息。
最后,请记住,不推荐使用mysql扩展,并将从未来的PHP版本中删除。您an example了解新代码。