Como faço para criar corretamente um Feed Zend?

Eu criei com sucesso um feed RSS simples, mas as inputs continuam voltando como não lidas e atualizadas, e as inputs excluídas do cliente reaparecem toda vez que eu peço email para atualizar o feed.

O que estou fazendo de errado?

Eu uso essa function simples para criar um feed rss:

public static function getFeed($db) { $title = 'Latest feeds'; $feedUri = '/rss/'; //link from which feed is available $link = 'http://' . $_SERVER['HTTP_HOST'] . $feedUri; //create array according to structure defined in Zend_Feed documentation $feedArr = array('title' => $title, 'link' => $link, 'description' => $title, 'language' => 'en-us', 'charset' => 'utf-8', //'published' => 1237281011, 'generator' => 'Zend Framework Zend_Feed', 'entries' => array() ); $itemObjs = array(); $select = $db->select('id')->from('things') ->order('createddate desc') ->limit(10); $results = $db->fetchAll($select->__toString()); $count = count($results); for($i=0;$i<$count;$i++) { $itemObjs[] = SiteUtil::getItemObjectInstance($db, $results[$i]['id']); } $count = count($itemObjs); for($i=0;$i $obj->getSummary(), 'link' => 'http://' . $_SERVER['HTTP_HOST'] . $obj->getDetailUri(), 'description' => $obj->description, 'publishdate' => $obj->publishedDate, 'guid' => 'http://' . $_SERVER['HTTP_HOST'] . $obj->getDetailUri() ); } $feed = Zend_Feed::importArray($feedArr, 'rss'); return $feed; } 

A ação na class do controlador é:

 public function rssAction() { $feed = FeedUtil::getFeed($this->db); $feed->send(); } 

Então, para acessar o feed, apontar o cliente para: http://mysite.com/rss

Estou usando o cliente rss do Mac Mail para testar. Os downloads de alimentação são excelentes, mostrando todos os 5 itens que tenho no database para fins de teste. Os problemas são os seguintes:

1) Se eu marcar um ou mais itens como ‘ler’ e depois informar o correio para atualizar o feed, ele puxa todos os itens de novo como se eu nunca os baixasse em primeiro lugar.

2) Se eu excluir um ou mais itens, eles voltam novamente, não lidos, novamente como se fosse a primeira vez que me inscrevi no feed.

3) Os feeds sempre são marcados como atualizados. Isso deveria ser o caso?

É algo a ver com os parâmetros que estou configurando, estou omitiendo algo ou a solução pode ser mais sutil, como configurar headers de conteúdo HTTP (por exemplo, ‘304 Not Modified’)?

Minha compreensão de rss é que, uma vez que um item foi marcado como lido ou excluído do cliente, ele nunca deve retornar, qual é o comportamento que eu estou procurando.

Apenas para assinalar, os parâmetros ‘link’ e ‘guid’ são sempre únicos, e tentei experimentar os atributos “publicados” e “publishdate” (ambos opcionais) apenas obtêm o mesmo resultado. O código acima é uma versão simplificada do que eu tenho, mostrando apenas os bits relevantes e, finalmente, sim, eu li a especificação rss .

Agradecemos antecipadamente por qualquer ajuda oferecida aqui, ficarei feliz em esclarecer qualquer ponto.

De acordo com o Zend Framework Doc, você deve usar o parâmetro lastUpdate para definir a última data de modificação de uma input.

  'entries' => array( array( [...] 'lastUpdate' => 'timestamp of the publication date', // optional [...] 

Então, publicado para o feed, e lastUpdate para as inputs.