Gerar RSS

9 views
Skip to first unread message

Lucas Mendonça

unread,
Dec 9, 2009, 6:55:12 AM12/9/09
to cakep...@googlegroups.com
Boa noite pessoal,
 
Estou tendo problemas para gerar feeds rss para minha aplicação (utilizando RSSHelper ).
Já consultei:
 
Porém não consegui gerar minha rss. Quando acessava ebooks/index.rss
Vinha um arquivo em branco.
 
Então resolvi gerar meu Rss criando uma action rss para cada controlador.
Criei um layout RSS
--------------------------
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Virtual Books | <?php echo $title_for_layout; ?> </title>
    <link>http://www.teste.com.br/</link>
    <description> <?php echo $description; ?> </description>
    <language>en-us</language>
    <pubDate> <?php echo date("D, j M Y H:i:s", gmmktime()) . ' GMT';?> </pubDate>
    <docs>http://blogs.law.harvard.edu/tech/rss</docs>
    <managingEditor>em...@terra.com.br</managingEditor>
    <webMaster>em...@terra.com.br</webMaster>
    <?php echo  $content_for_layout; ?>
    </channel>
</rss>
----------------------
 E em minha View[A]:
 
<?php $this->set('description', $description); //seta valor para o layout ?>
  <item>
    <title>titulo</title>
    <description>descricao</description>
    <pubDate>Sat, 28 Nov 2009 19:49:38 +0000</pubDate>
    <guid>http://twitter.com/statuses/6149110509</guid>
    <link>http://twitter.com/statuses/6149110509</link>
</item>
---------------
 
Porém se gero os dados dinamicamente, na view [B] ocorre erro:
 
<?php $this->set('description', $description); //seta valor para o layout
 
foreach ( $ebooks : $ebook ) {?>
  <item>
    <title>titulo</title>
    <description>descricao</description>
    <pubDate>Sat, 28 Nov 2009 19:49:38 +0000</pubDate>
    <guid>http://twitter.com/statuses/6149110509</guid>
    <link>http://twitter.com/statuses/6149110509</link>
</item>
<?php } //fim foreach ?>
------------------------------
Reparei que o erro ocorre porquê cake insere caracteres no incio do arquimo rss. 
No IE acusa o erro no caractere: 

Invalid at the top level of the document.
 Line: 1 Character: 1

 <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">

No Firefox não aparece nada, quando pedimos código fonte aparece apenas um caractere 'fantasma' (representado por um ponto no topo da linha) no início do documento.

Toda minha aplicação está como UTF-8.
Já tentei salvas as arquivos rss_layout.ctp(layout) e rss.ctp (view) como UTF-8, bem como ANSI ou UNICODE e não muda nada.
Obrservo que mesma na view gerada manualmente [A] o caractere fantasma aparece.
Algém tem idéia do que pode ser. Ou só utilizou o RSSHelper com sucesso (aparentemente ele não funciona como devido porquê gera o caractere fantasma também )?
 
Obrigado.
 
 
-----------------------------------------------------------------------
Lucas Mendonça
luca...@gmail.com
www.lucasmendonca.com

Felipe Theodoro

unread,
Dec 9, 2009, 7:11:04 AM12/9/09
to cakep...@googlegroups.com
Cara é bem provável que vc não esta mandando nada para a view verifica se os dados estão sendo jogados lá...
já fiz milhões de rss e nunca tive este problema relatado!!! mas deve ser algo bem besta que esta ocasionando este problema

2009/12/9 Lucas Mendonça <luca...@gmail.com>



--
Felipe Theodoro Gonçalves
ftgon...@gmail.com
blog.ftgoncalves.com
--

Lucas Mendonça

unread,
Dec 9, 2009, 8:27:24 AM12/9/09
to cakep...@googlegroups.com
Acredito que esteja jogando beleza pois, se não jogasse pelo menos apareceria a estrutura do meu layout ( o xml do rss, porém sem as tags <item> ).
Tentei com um for também repetindo uma estrutura de itens:
for ($i = 0; $i< 3; $i++){
echo    '<item>

    <title>titulo</title>
    <description>descricao</description>
    <pubDate>Sat, 28 Nov 2009 19:49:38 +0000</pubDate>
    <guid>http://twitter.com/statuses/6149110509</guid>
    <link>http://twitter.com/statuses/6149110509</link>
</item>';
}
 
e também ocorreu mesmo erro anterior.
 
Mesmo assim depois verificarei com mais calma, preciso apresentar minha aplicação como parte do meu projeto de monografia ainda hoje. Por enquanto irei realizar um "cambalaxo", gambiarra, para a realizar a apresentação.
 
Quando você utilizou o RSSHelper, você fez como dito nos links que enviei? Você define um layout como o fazem no CookBook ou deixa que o cake envie o seu default (implícito), como faz o http://anupom.wordpress.com/2008/03/12/rss-in-cakephp-12/ e IBM (http://www.ibm.com/developerworks/br/library/os-php-cake4/section4.html) ?
 
Obrigado.

Felipe Theodoro

unread,
Dec 9, 2009, 9:10:49 AM12/9/09
to cakep...@googlegroups.com
So uma coisa antes que esqueça não cole codigos no e-mail utilize sistema de paste bin bin.cakephp.org, bin.brainstern.com
bom seguinte:

vc esta iniciando o RSS errado

nodo correto:
correto:
<?xml version="1.0" encoding="utf-8" ?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">

errado
 <rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">

testa assim depois fala o que deu!!!

http://www.25demarco.com.br/rss/feed/25-de-marco

2009/12/9 Lucas Mendonça <luca...@gmail.com>

Lucas Mendonça

unread,
Dec 15, 2009, 1:10:45 PM12/15/09
to cakep...@googlegroups.com
Pessoal, obrigado e desculpe demora para retornar algum resultado. Estava na correria da minha formatura Sorriso Ícone Expressivo e não pude mexer. Agora mais aliviado e com mais calma, refiz todo o procedimento e testes. Realizei os testes com o Firefox 3.5.5 e IE 8.0.7:
 
Realmente estava faltando o <?xml version="1.0" encoding="utf-8" ?>. Mas este ainda não é o problema.
 
Estou utilizando os mesmos padrões do CookBook [1], porém sem o 'dc:creator' => $post['Post']['author'] nos itens (nos meus testes o IE não reconheceu esta tag para o RSS). Porém o Cake está inserindo alguns caracteres no início do documento RSS que o invalida. Upei um arquivo rss, de exemplo, gerado por minha aplicação: http://www.lucasmendonca.com/rss/index.rss (no IE ele relato um erro na linha 1, caractere 1 - já o Firefox não relata o erro mas mostra uma caixa de diálogo para salvar o arquivo index.rss).
 
Abri o documento e exclui 3 caracteres 'fantasmas' no início do arquivo. E então o rss abriu perfeitamente, em ambos browsers: http://www.lucasmendonca.com/rss/index(3).rss
 
Outro detalhes: salvei os arquivos tanto como documento texto ANSI e UTF8 e apresentaram os mesmos erros.
 
 
Alguém ou alguma idéia que possa ajudar?
 
Obrigado!
 
Lucas
--~--~---------~--~----~------------~-------~--~----~
Recebeu esta mensagem porque está inscrito em Grupo "CakePHP Tuga" do Grupos Google.
 Para enviar mensagens para este grupo, envie um email para cakep...@googlegroups.com
 Para anular a inscrição neste grupo, envie um email para cakephp-pt+...@googlegroups.com
 Para mais opções, visite este grupo em http://groups.google.com/group/cakephp-pt?hl=pt-PT

-~----------~----~----~----~------~----~------~--~---

Emoticon1.gif

Augusto Ferreira

unread,
Dec 16, 2009, 3:34:17 PM12/16/09
to cakep...@googlegroups.com
(...) um pouco mais técnico é que a codificação de seus arquivo deve ser “UTF-8 sem BOM”.  BOM significa byte order mark. (...)

[1] http://mfandrade.wordpress.com/2009/03/05/guia-definitivo-da-codificacao-de-caracteres-no-cakephp/

Já tive problemas com isso, talvez lhe ajude.

--
Augusto César Ferreira
http://gutoferreira.wordpress.com
gut...@gmail.com


2009/12/15 Lucas Mendonça <luca...@gmail.com>

--

Recebeu esta mensagem porque está inscrito no grupo "CakePHP Tuga" dos Grupos do Google.
Para publicar uma mensagem neste grupo, envie um e-mail para cakep...@googlegroups.com.
Para anular a inscrição neste grupo, envie um e-mail para cakephp-pt+...@googlegroups.com.
Para ver mais opções, visite este grupo em http://groups.google.com/group/cakephp-pt?hl=pt-PT.

Emoticon1.gif
Reply all
Reply to author
Forward
0 new messages