O noticiário vai para o PDA
Como produzir uma
versão para handheld de
um site de notícias
POR MAURíCIO GREGO
Com um número crescente de PDAs e smartphones conectando-se à internet, é desejável que os sites na web tenham páginas específicas para esses dispositivos. Com telas pequenas e navegadores que, em sua maioria, não suportam padrões como CSS, DHTML, JavaScript ou Flash, esses equipamentos requerem páginas simplificadas para uma boa visualização. Na maioria das vezes, o que se deseja é aproveitar o conteúdo já existente no site e formatá-lo, criando uma versão para telas pequenas. É o que faremos neste tutorial.
Há várias soluções possíveis para isso. Neste exemplo, vamos partir de um site de notícias e gerar uma versão para handheld desse conteúdo. Para isso, primeiro produziremos um fluxo de notícias no formato RSS, algo que muitos sites da web já possuem. Depois, empregaremos uma classe em PHP para extrair as notícias do RSS. Essa classe será usada por um script, também em PHP, para montar as páginas HTML simplificadas. Para acompanhar o tutorial, faça o download dos arquivos necessários no endereço www.info.abril.com.br/download/4180.shtml. Para ver funcionando o site que montamos como exemplo, faça o upload desses arquivos para um servidor da web com PHP 4 ou mais recente instalado. Depois, abra, no navegador, o arquivo handheld.html.
1. Estrutura
Nosso site para handheld tem uma página inicial, handheld.html, produzida em HTML puro. É uma página simples, onde todos os elementos estão contidos numa tabela com 300 pixels de largura. Esse é um tamanho adequado para visualização na maioria dos handhelds atuais. Essa página contém os links para quatro seções de notícias que, em nosso exemplo, chamamos de TI, E-business, Tecnologia Pessoal e Internet, respectivamente. Cada um desses quatro links leva a um arquivo PHP que vai gerar o índice de notícias correspondente àquela seção. Vamos usar um arquivo RSS diferente para cada seção. Como o procedimento é o mesmo nas quatro, vamos descrever, nos próximos passos, a construção de uma das seções. Basta replicar os arquivos PHP, alterando título e origem do RSS em cada um deles, para obter as outras três seções.
2. Versões
A maneira de produzir o RSS varia conforme o caso. Quem possui um site dinâmico pode empregar scripts para gerá-lo. Além disso, muitos gerenciadores de conteúdo — e até alguns servidores de blog — incluem a opção de saída em RSS. Como exemplo, mostramos, a seguir, a estrutura de um arquivo RSS básico (que pode ter um nome com terminação .XML ou .RSS).
No início do arquivo, indicamos o conjunto de caracteres usado e as versões de XML e RSS. Há cerca de uma dezena de versões desse padrão em uso. Vamos trabalhar com a versão 0.91, que é uma das mais usadas. Para isso, empregamos os seguintes comandos:
<?xml version=“1.0” encoding=“ISO-8859-1” ?>
<!DOCTYPE rss PUBLIC “//Netscape Communications //DTD RSS 0.91//EN” “http://my.netscape.com/publish/formats/rss-0.91.dtd”>
<rss version=“0.91”>
3. Identificação
Num segundo bloco do arquivo RSS, fornecemos informações do site, como título, URL e descrição. Esses dados serão exibidos quando o internauta abrir o arquivo no seu cliente RSS.
<channel>
<title>Exemplo de RSS</title>
<link>http://info.abril.com.br/</link>
<description>Tecnologia com imaginação</description>
<language>pt-br</language>
<copyright>Copyright: (C) Editora Abril SA</copyright>
O comando <channel> é obrigatório em arquivos RSS. Ele só será fechado (</channel>) no fim do arquivo.
4. Notícias
Terminada a parte introdutória do arquivo RSS, vêm os títulos e descrições das notícias publicadas. Cada notícia fica contida entre os rótulos <item> e </item>. Veja um exemplo:
<item>
<title>Script kiddie brasileiro é preso no Japão</title>
<link>http://info.abril.com.br/aberto/infonews/112003/03112003-5.shtml</link>
<description>Um adolescente brasileiro de 17 anos foi preso no Japão, acusado de participação na invasão de 1 032 sites.</description>
</item>
No fim do arquivo, depois de todas as notícias, terminamos o RSS com estes comandos:
</channel>
</rss>
Com isso, o arquivo RSS está pronto para ser publicado e exibido por programas leitores de notícias compatíveis com esse padrão, como o Awasu e o AmphetaDesk. Nos próximos passos, vamos ver como extrair as notícias desse arquivo e montar a versão para handhelds do noticiário.
5. Configurações
A classe Feed Reader, que vamos usar para extrair as notícias, foi criada pelo português José Carlos Valente e é distribuída como software livre. No código-fonte, corrigimos um pequeno bug que impedia a leitura de textos com mais de uma linha. A versão que incluímos entre os arquivos deste tutorial já está corrigida. Se você quiser ver o código original, pode obtê-lo no endereço: www.info.abril.com.br/download/4178.shtml.
Para que a classe funcione, a primeira coisa a fazer é criar o arquivo config.php. Ele deve ficar no mesmo diretório do servidor HTTP onde estão os demais arquivos PHP, incluindo aquele que contém a classe (class_feedReader.inc.php).
No arquivo config.php, coloque o endereço do seu arquivo RSS. Pode ser um caminho local (exemplo: /home/site/www/rss.xml) ou um endereço na internet (exemplo: http://www.site.com.br/rss.xml).
No nosso exemplo, vamos apontar para um arquivo na mesma pasta. O comando em PHP fica assim:
$caminhorss[] = “rss_ti.xml”;
Nosso script possibilita agregar notícias de vários arquivos RSS numa mesma página para handheld, algo que não fizemos em nosso site de exemplo. Para isso, bastaria repetir a linha acima para cada RSS, especificando o nome do arquivo correspondente.
Depois de definir a localização do RSS, acerte as cores de fundo, o título da página e a fonte de caracteres, acrescentando estes comandos ao arquivo config.php:
$design[“title”] = “Notícias de TI”;
$design[“logo”] = “greatfun.gif”;
$design[“bodybgcolor”] = “#493F2C”;
$design[“headbgcolor”] = “#BFB495”;
$design[“tablebgcolor”] = “#FFFFFF”;
$design[“font”] = “Arial, Verdana, Sans-serif”;
6. Script
O arquivo handheld.php contém o script que monta a página HTML para visualização no handheld. Ele serve tanto para gerar o índice de uma seção de notícias como para produzir a página com o texto completo de uma dessas notícias. Nos dois casos, a página é formada por uma tabela com uma única coluna de 300 pixels de largura. A primeira linha dessa tabela contém o gráfico do alto da página. As notícias são inseridas, da segunda linha em diante, por meio de uma série de comandos em PHP. Vejamos como eles funcionam.
if(!isset($_REQUEST[“feed”]) &&
!isset($_REQUEST[“item”]))
Esse comando de seleção, que aparece logo no início, testa se foi especificada alguma notícia junto com a URL que ativa o script. Se foi, ele monta a página com o texto da notícia especificada. Se não, gera o índice do noticiário.
7. Índice
Vejamos os comandos usados para a produção de um índice de notícias:
foreach($caminhorss as $url)
Essa instrução especifica que o processo de inclusão das notícias deve ser repetido para cada arquivo RSS a ser usado nessa seção, caso haja mais de um. Em seguida, temos estes comandos:
$ob=new feedReader();
$ob->setFeedUrl($url);
$ob->parseFeed();
$array=$ob->getFeedOutputData();
$number=$ob->getFeedNumberOfNodes();
Na primeira linha acima, carregamos a classe feedReader no objeto $ob. Nas duas linhas seguintes, ativamos funções internas dessa classe para localizar o arquivo RSS e extrair as notícias dele. Os textos extraídos são carregados na variável $array e o número de notícias do arquivo, em $number.
Na seqüência, temos o comando echo que gera o código HTML correspondente a uma das notícias. Note que ele está dentro de um loop que faz com que seja repetido a cada uma das notícias no RSS.
for($i=0;$i<$number;$i++){
echo (“<tr><td><font face=““.$design[“font”].”” size=“2”>• <a href=“handheld.php?feed=“.$f.”&item
=“.$i.””>“.$array[“item”][“title”]
[$i].”</a></font></td></tr>”);
}
Observe que o título de cada notícia é um link. Quando o internauta clica nele, a URL solicitada tem esta forma:
http://www.site.com.br/handheld.php?feed=0&item=3
A contagem dos parâmetros feed e item, incluídos na URL, começa em zero. Assim, o endereço do exemplo acima vai abrir, no navegador, a quarta notícia do primeiro arquivo RSS. A notícia selecionada será exibida com a ajuda do mesmo script que usamos para gerar o índice. Numa situação real, você poderia criar um visual mais elaborado para as páginas do site, mas sempre respeitando as limitações do browser do handheld.