RSS-канал не отображается
Я пытаюсь создать RSS-канал, который отображает все мои новости. До сих пор код, кажется, находится на полпути, потому что, если я просматриваю исходный код страницы, все содержимое там, но на реальной странице ничего не отображается.
Вот мой код rss.php
<?php
ini_set('display_errors', 1);
header("Content-type: text/xml");
include("config.php");
global $NEWS;
$str = '<?xml version="1.0" encoding="utf-8"?>';
$str.= '<rss version="2.0">';
$str.='<channel>';
$sql = "SELECT * FROM $NEWS";
$result = mysql_query($sql) or die ($sql."".mysql_error());
while($row = mysql_fetch_object($result)){
$str.= '<item>';
$str.=' <a href="'.getSEOLink(13).'&article='.$row->id.'">';
$str.= '<title>'.$row->title.'</title></a>';
$str.= '<description><![CDATA['.$row->content. ']]></description>';
$str.= '</item>';
}
$str .='</channel>';
$str .='</rss>';
echo $str;
?>
2 ответа
Вы, очевидно, генерируете действительный XML (таким образом, ваш браузер не жалуется), но не действительный RSS (таким образом, читатели лент не смогут читать ваши материалы). Например, <a>
не является допустимым тегом RSS и, безусловно, не является потомком <item>
,
Скопируйте сгенерированный XML (не исходный код PHP) и подтвердите его с помощью своего любимого средства проверки RSS (например, W3C Feed Validation Service).
Почему бы не использовать asXML
из SimpleXMLElement
?
<?php
ini_set('display_errors', 1);
include("config.php");
global $NEWS;
$str='<channel>';
$sql = "SELECT * FROM $NEWS";
$result = mysql_query($sql) or die ($sql."".mysql_error());
while($row = mysql_fetch_object($result)){
$str.= '<item>';
$str.=' <a href="'.getSEOLink(13).'&article='.$row->id.'">';
$str.= '<title>'.$row->title.'</title></a>';
$str.= '<description><![CDATA['.$row->content. ']]></description>';
$str.= '</item>';
}
$str .='</channel>';
$xml=new SimpleXMLElement($str);
echo $xml->asXML();