希望这是一个快速的知识的人,但我有一个问题,试图获得一个正确的日期时间格式的RSS提要在Zend框架项目,并耗尽了所有可用的资源;php datetime唯一的资源,我不能完全理解的是Zend文档,因为我不太确定如何正确地调用静态类,他们引用太Zend Date_time。DB字段也是datetime类型...
除了将pubDate输出为XML格式之外,我已经将所有数据放入提要中。由于格式不能正确识别,提要只显示每个帖子的当前日期。这就是我所得到的..。
public function rssAction()
{
$this->_helper->layout->setLayout('xmllayout');
$model = new Default_Model_News;
$newsitems = $model->fetchAll();
$date = date("D\, j M Y G:i:s");
$feedArray = array (
'title' => "Postgoldforcash News Feed",
'description' => "Postgoldforcash News Feed",
'link' => "http://www.postgoldforcash.com",
'language' => 'en-EN',
'charset' => 'utf-8',
'docs' => "Postgoldforcash News",
'pubDate' => $date,
'entries' => array()
);
foreach ( $newsitems as $article ) {
$fDate = date_format(new DateTime($article->publishDate), "r");
$feedArray['entries'][] = array (
'title' => $article->title,
'link' => $article->url."/", // for some reason i have to add a blank space or '/' in otherwise it breaks...
'guid' => $article->title,
'description' => $article->content,
'pubDate' => $fDate
);
}
$feed = Zend_Feed::importArray($feedArray, 'rss');
$feed->send();
}我已经尝试了获得正确格式的所有其他方法,包括;
date_format(new DateTime($article->publishDate), "D\, j M Y G:i:s");
strftime ($article->publishDate, "%a, %d %b %Y %H:%M:%S %z") ;
gmdate(DATE_RSS, strtotime($article->publishDate));任何指针都会很棒!
发布于 2011-03-01 18:16:44
“pubDate”或“published”是可选字段,不是必填字段。所以我会注释掉这一点。
我会将'lastUpdate‘=> strtotime($=>->publishDate)添加到$feedArray中。请注意,Zend RSS编译器随后将对其执行gmdate以格式化它。
使用importBuilder,而不是使用import Array。
有关更多信息,请参阅:http://framework.zend.com/manual/en/zend.feed.importing.html。
最佳实践是只显示最新的提要(在本例中,我完成了10个提要)
因此,代码应为:
public function rssAction() {
$this->_helper->layout->setLayout('xmllayout');
$model = new Default_Model_News;
$newsitems = $model->fetchAll();
$date = date("YYYY-MM-dd HH:mm:ss");
$feedArray = array(
'title' => "Postgoldforcash News Feed",
'description' => "Postgoldforcash News Feed",
'link' => "http://www.postgoldforcash.com",
'language' => 'en-EN',
'charset' => 'utf-8',
'docs' => "Postgoldforcash News",
'generator' => 'Zend Framework Zend_Feed',
'entries' => array()
);
$i = 0;
foreach ($newsitems as $article) {
$i++;
if ($i > 10)
break;
$feedArray['entries'][] = array(
'title' => html_entity_decode($article->title),
'link' => $article->url ."/",
'guid' => $article->url,
'description' => strip_tags($article->content),
'lastUpdate' => strtotime($article->publishDate)
);
}
$feed = Zend_Feed::importBuilder(new Zend_Feed_Builder($feedArray), 'rss');
$feed->send();
}试一试。
发布于 2011-02-26 06:37:11
您需要将日期输出为RFC_2822格式。试一试:
$fDate = new Zend_Date();
foreach ( $newsitems as $article ) {
$date->set($article->publishDate, 'YYYY-MM-dd HH:mm:ss');
$feedArray['entries'][] = array (
'title' => $article->title,
'link' => $article->url."/", // for some reason i have to add a blank space or '/' in otherwise it breaks...
'guid' => $article->title,
'description' => $article->content,
'pubDate' => $date->get(Zend_Date::RFC_2822)
);
}https://stackoverflow.com/questions/5108675
复制相似问题