Botão personalizado do DiHITT
Canal: PHP | Autor: Nícolas Müller | Publicado em: 06/07/2008 | Views: 2.483
Olá caro leitor. Nesta matéria vou demonstrar como fazer um widget personalizado do DiHITT, assim você pode personalizar o botão de voto conforme cores e temas de seu site.
Para isto o DiHITT disponibilizou a partir de hoje um XML que retorna o número de votos, url da notícia publicada no DiHITT, e ainda os comentários que a notícia teve, assim você pode colocar no seu site/blog os comentários que teve no DiHITT juntamente com os comentários de seu site/blog.
Bom criei uma função chamada widgetDiHITT que você precisa apenas passar a url seguinte:
http://widget.dihitt.com.br/tools/api_link?url=http://www.seusite.com /link_da_noticia&title=Título da notícia
assim, o XML do DiHITT retorna o seguinte XML:
onde:
<title> = titulo da notícia
<uri> = url da notícia no DiHITT
<votes> = votos no DiHITT
<comments_count> = comentários que a notícia teve
<status> = status da notícia (1 = ok)(5 = popular (notícia popular no DiHITT )) (17 = erro (notícia não existe) )
E se você passar mais um parâmetro: &comments=1 o XML retorna os comentários que a notícia teve em blocos:
Este bloco vai retornar no XML caso tenha comentários na notícia. Cada comentário gera um bloco destes acima.
Bom vamos a função que eu criei para carregar o XML:
A função é um tanto simples, ela verifica se a URL existe, caso exista ela lê todo o XML, depois aplica a função xml_parser_create para dividir todas as tags em um array.
Então faço um for para encontrar a tag STATUS, o for é usado, caso venha a trocar a ordem dos blocos no XML, então com o FOR isto torna-se genérico, ou seja, pode alterar a ordem que não perderá a validade dos dados.
Após encontrar o STATUS eu procuro a tag URI, que retorna ou a URL para voto caso exista a notícia, ou a URL para indicação da notícia no DiHITT.
Então ela verifica se o STATUS for diferente de 17 ou seja, se não tem erro algum, então ela monta o link para votar e mostra o número de votos que a notícia teve.
Caso o status for igual a 17 ela cria o link para indicação.
Está função deve ser chamada da seguinte forma:
O retorno da função na variável $dihitt retorna:
Assim você pode usar CSS para deixar do seu gosto o botão. Pode também alterar a função e adicionar novas tags dentro do <a>.
Como acima falei se você passar o parâmetro &comments=1 junto na $url, o XML retorna os comentários.
Bom pessoal, está aí a função, espero que utilizem-a. Vocês podem usar o STATUS ainda para seu proveito, por exemplo se ele retornar o status = 5 significa que a notícia é popular no DiHITT.
O XML tem um cache de 2 minutos, então caso você vote e não mude o valor, aguarde uns instantes.
O resultado pode ser visto nesta matéria, vejam ao lado do título o botão do DiHITT personalizado.
Peço que qualquer melhoria na função publiquem nos comentários.
Caso você não tenha muita experiência com PHP, criei um script para você utilizar em seu blog, basta colocar está linha:
Wordpress:
Blogger Novo:
Blogger Antigo:
Seu site:
Qualquer dúvida poste no comentário.
Este script é gratuito para você utilizar, portanto, ajude-nos também, adicione um link do Oficina da Net em seu site - www.oficinadanet.com.br
Abraço a todos e viva o DiHITT.
PS.: Obrigado ao Pablo, por dispor do XML, será de grande utilidade a todos, tenho certeza.
Para isto o DiHITT disponibilizou a partir de hoje um XML que retorna o número de votos, url da notícia publicada no DiHITT, e ainda os comentários que a notícia teve, assim você pode colocar no seu site/blog os comentários que teve no DiHITT juntamente com os comentários de seu site/blog.
Bom criei uma função chamada widgetDiHITT que você precisa apenas passar a url seguinte:
http://widget.dihitt.com.br/tools/api_link?url=http://www.seusite.com /link_da_noticia&title=Título da notícia
assim, o XML do DiHITT retorna o seguinte XML:
<dihitt>
<title>Google Developer Day reúne desenvolvedores</title>
<uri>http://dihitt.com.br/noticia/google-developer-day-reune-desenvolvedores</uri>
<votes>16</votes>
<comments_count>0</comments_count>
<status>1</status>
</dihitt>onde:
<title> = titulo da notícia
<uri> = url da notícia no DiHITT
<votes> = votos no DiHITT
<comments_count> = comentários que a notícia teve
<status> = status da notícia (1 = ok)(5 = popular (notícia popular no DiHITT )) (17 = erro (notícia não existe) )
E se você passar mais um parâmetro: &comments=1 o XML retorna os comentários que a notícia teve em blocos:
<comment>
<comment_user_login>bcpetronzio</comment_user_login>
<comment_user_name/>
<comment_user_url/>
<comment_date>Sat, 05 Jul 2008 18:24:34 GMT</comment_date>
<comment_content>Comentário</comment_content>
</comment>Este bloco vai retornar no XML caso tenha comentários na notícia. Cada comentário gera um bloco destes acima.
Bom vamos a função que eu criei para carregar o XML:
function widgetDiHITT( $url )
{
if(@fopen($url, 'r'))
{
$xml = file_get_contents($url);
$parser = xml_parser_create();
xml_parse_into_struct($parser, $xml, $dados, $index);
xml_parser_free($parser);
for($x = 0; $x < count($dados); $x++)
if($dados[$x][ 'tag' ] == 'STATUS')
$ST = $dados[$x][ 'value' ];
for($x = 0; $x < count($dados); $x++)
if($dados[$x]['tag'] == 'URI')
$URI = $dados[$x][ 'value' ];
if($ST != 17)
{
for($x = 0; $x < count($dados); $x++)
if($dados[$x][ 'tag' ] == 'VOTES')
$VOTOS = $dados[$x][ 'value' ];
if($VOTOS > 1)
$s = 's';
$link = "<a class='dihitt' href='".$URI ."' title='indicar para o DiHITT' target='_blank'><span>DiHITT</span>: ".$VOTOS." voto$s</a>";
}
else
$link = "<a class='dihitt' href='".$URI."' title='indicar para o DiHITT' target='_blank'><span>DiHIIT</span>: indicar</a>";
return $link;
}
}A função é um tanto simples, ela verifica se a URL existe, caso exista ela lê todo o XML, depois aplica a função xml_parser_create para dividir todas as tags em um array.
Então faço um for para encontrar a tag STATUS, o for é usado, caso venha a trocar a ordem dos blocos no XML, então com o FOR isto torna-se genérico, ou seja, pode alterar a ordem que não perderá a validade dos dados.
Após encontrar o STATUS eu procuro a tag URI, que retorna ou a URL para voto caso exista a notícia, ou a URL para indicação da notícia no DiHITT.
Então ela verifica se o STATUS for diferente de 17 ou seja, se não tem erro algum, então ela monta o link para votar e mostra o número de votos que a notícia teve.
Caso o status for igual a 17 ela cria o link para indicação.
Está função deve ser chamada da seguinte forma:
$url = "http://widget.dihitt.com.br/tools/api_link?url=http://www.seusite.com/link_da_noticia&title=Título da notícia";
$dihitt = widgetDiHITT($url);
echo $dihitt;O retorno da função na variável $dihitt retorna:
<a class='dihitt' href='http://dihitt.com.br/noticia/video-aula-conexao-e-busca-no-banco-de-dados' title='indicar para o DiHITT' target='_blank'><span>DiHITT</span>: 8 votos</a>Assim você pode usar CSS para deixar do seu gosto o botão. Pode também alterar a função e adicionar novas tags dentro do <a>.
Como acima falei se você passar o parâmetro &comments=1 junto na $url, o XML retorna os comentários.
Bom pessoal, está aí a função, espero que utilizem-a. Vocês podem usar o STATUS ainda para seu proveito, por exemplo se ele retornar o status = 5 significa que a notícia é popular no DiHITT.
O XML tem um cache de 2 minutos, então caso você vote e não mude o valor, aguarde uns instantes.
O resultado pode ser visto nesta matéria, vejam ao lado do título o botão do DiHITT personalizado.
Peço que qualquer melhoria na função publiquem nos comentários.
Botão personalizado em blogs
Caso você não tenha muita experiência com PHP, criei um script para você utilizar em seu blog, basta colocar está linha:
Wordpress:
<script type="text/javascript" src="http://www.oficinadanet.com.br/dihitt.php?url=<?php the_permalink(); ?>&title=<?php the_title(); ?>"></script>Blogger Novo:
<script type="text/javascript" src="http://www.oficinadanet.com.br/dihitt.php?url=" + data:post.url + "&title=" + data:post.title'></script>Blogger Antigo:
<script type="text/javascript" src="http://www.oficinadanet.com.br/dihitt.php?url=<$BlogItemPermalinkURL$>&title=<$BlogItemTitle$>"></script>Seu site:
<script type="text/javascript" src="http://www.oficinadanet.com.br/dihitt.php?url=http://www.seusite.com/linknoticia&title=titulo"></script>Qualquer dúvida poste no comentário.
Este script é gratuito para você utilizar, portanto, ajude-nos também, adicione um link do Oficina da Net em seu site - www.oficinadanet.com.br
Abraço a todos e viva o DiHITT.
PS.: Obrigado ao Pablo, por dispor do XML, será de grande utilidade a todos, tenho certeza.
Esta obra está licenciada sob uma Licença Creative Commons. Você pode copiar, distribuir, exibir, executar, desde que seja dado
crédito ao autor original (Citando nome do autor, data, local e link de onde tirou o texto). Você não pode fazer uso comercial desta obra.
Você não pode criar obras derivadas.
Vote no artigo:
NR. DE VOTO(S): [2] Veja matérias relacionadas com o assunto:
| 30/03/2009 | Redes sociais e o impacto delas sobre nós |
| 03/07/2008 | Sites sociais em Ti, como participar? |
| 05/06/2008 | Entrevista: Pablo Melo fundador do diHITT |








Estava à espera de algo mais compreensível para o comum dos mortais, que como eu quase não sabe nada de XML, CSS, Javascript e outras coisas que tais.
Que tal vc fazer um novo post explicando isso para as "louras burras" onde eu me incluo ?
Obrigado
Jorge
Abraço!
Marcelo França
Eu fiz um "Convite aos programadores", para criarem algum plugin ou algo que facilite o uso da API. Dá para fazer aquele widget dos comentários que haviamos falado a respeito. E muitas outras coisas.
Vamos ver o que a comunidade vai criar com essa nova possibilidade.
Muller
Espero que me desculpe o tom do comentário mas realmente a linguagem está muito hermética, para nós que não temos formação informática.
Essa história de os comentários escritos no diHITT saírem automaticamente nos nossos blogs era um avanço extraordinário relativamente aos outros sites deste género.
Obrigado
Jorge
http://www.oficinadanet.com.br/artigo/1015/botao_personalizado_do_dihitt
E este negocio do comentario automatico que o Jorge citou seria show de bola mesmo... eu tb adorei a ideia..