Arquivo por ‘Rodrigo Ghedin

Arquivos grandes: como lidar com eles? 13 outubro 2008 às 10:03 am por Rodrigo Ghedin

Se seu blog tem três anos ou mais, conta com um problema na sidebar: o tamanho dos arquivos. É praxe dividir os arquivos por mês, logo, em três anos de blog, e considerando que pelo menos um texto foi publicado por mês, no box dos arquivos há 36 links!

Há dois problemas em ter tantos links no box Arquivos. O primeiro é que a sidebar fica extensa, tirando o foco do que vier abaixo dos arquivos, e/ou deixando-a muito maior que a coluna de posts. O segundo, e mais grave, é que tanto link assim vai contra uma das diretrizes do Google para webmaster, que diz que, numa página, o recomendado é ter, no máximo, 100 links.

Existem duas formas de contornar esse problema, as quais explicarei abaixo. A primeira é criar um menu drop down, o que economiza muito espaço, e é bem discreto. A outra, é listar os arquivos por ano, ao invés do tradicional, que é fazê-lo por mês. Mas não se trata de uma mera listagem por ano… No método que será ensinado, ao clicar n’algum ano, os meses deste se expandem. Vamos lá?

Arquivos como menu drop down

Arquivos como menu drop down.

Arquivos como menu drop down.

Para conferir como fica o menu drop down na prática, veja a sidebar do WinAjuda (ou a imagem ao lado). Como se vê, o resultado é bem satisfatório, e o que é melhor: independe de plugin - embora, salvo engano, existam alguns com essa fianlidade.

Fazer isso em seu blog é muito fácil. Simplesmente copie e cole o trecho abaixo no arquivo sidebar.php, onde achar melhor:


<li><h2 class="titulos">Arquivos e Categorias</h2>
<ul>
<li><select name="archive-dropdown" onChange='document.location.href=this.options[this.selectedIndex].value;'>
<option value=""><?php echo attribute_escape(__('Escolha o mês')); ?></option>
<?php wp_get_archives('type=monthly&amp;amp;amp;format=option&amp;amp;amp;show_post_count=1'); ?> </select></li>
</ul>
</li>

Salve as alterações, e pronto!

Arquivos divididos por ano

O código para exibir arquivos é o seguinte:

<?php wp_get_archives('type=monthly'); ?>

Se seu intuito é simplesmente listar os arquivos por ano, e nada mais, substitua o termo monthly, no código acima, por yearly. Mas como isso é ficar no arroz com feijão, vamos além.

O código abaixo, além de listar os arquivos por ano, traz um plus interessante. Nele, quando o leitor clica num dos anos, a página correspondente é aberta, e no menu, os meses aparecem. Em meu blog pessoal é possível ver o sistema em funcionamento - ou, para quem preferir, na imagem abaixo:

Arquivos por ano.

Arquivos por ano.

Sem mais delongas, o código, extraído deste tópico do fórum oficial, é o seguinte:

<ul><li><h2>Arquivos</h2>
<ul>
<?php
global $month, $year; // scope WP global variables for later use
/* $arc_years => archive years query */
$arc_years = $wpdb->get_col("SELECT DISTINCT YEAR(post_date) FROM $wpdb->posts WHERE post_status = 'publish' ORDER BY post_date DESC");
foreach($arc_years as $arc_year) : // foreach loop for archive years
?>
<?php if($year != $arc_year) : // if current archive year does not equal $arc_year ?>
<li><a href="<?php echo get_year_link($arc_year); ?>"><?php echo $arc_year; ?></a></li>
<?php else : // current archive year *does* equal $arc_year ?>
<li><a href="<?php echo get_year_link($arc_year); ?>"><?php echo $arc_year; ?></a></li>
<li>
<ul>
<?php
/* $arc_months => archive months query for current archive year */
$arc_months = $wpdb->get_col("SELECT DISTINCT MONTH(post_date) FROM $wpdb->posts WHERE YEAR(post_date) = '$arc_year' AND post_status = 'publish' ORDER BY post_date");
foreach($arc_months as $arc_month): // foreach loop for archive months of current archive year
?>
<li><a href="<?php echo get_month_link($arc_year, $arc_month); ?> "><?php echo $month[zeroise($arc_month, 2)]; ?></a></li>
<?php endforeach; // end foreach loop for archive months ?>
</ul>
</li>
<?php endif; // end if/else on archive $year/$arc_year ?>
<?php endforeach; // end foreach loop for archive years ?>
</ul>
</li></ul>

A única coisa que falta nele é um toque de AJAX, de modo que a abertura dos meses seja on the fly, sem que a página inteira precise ser recarregada. Algum programador-leitor disposto a fazer essa melhoria?

Em suma, é isso. Espero que tais dicas sejam úteis, e até a próxima!

Ozh’ Admin Drop Down Menu Por Rodrigo Ghedin dia 11 de outubro de 2008 às 11:17 am | Imprimir este post

Com a chegada do WordPress 2.5, e o novo tema da administração do WordPress, o antigo (e útil) Admin Drop Down Menu deixou de funcionar, por motivos óbvios. O plugin, que alterava o menu principal do da administração do WordPress, deixando-o mais ágil graças ao drop down, por algum tempo ficou desatualizado e, portanto, incompatível com novas versões.

Pois bem, isso é passado, e desde a última versão, já um pouco antiga, o agora Ozh’ Admin Drop Down Menu é compatível com as últimas versões do WordPress. E, não bastasse isso, além de agilizar o serviço, na modesta opinião deste que aqui escreve, deixa o visual bem mais agradável à vista, sem o menu (por vezes confuso) logo abaixo nome do blog. Confira uma screenshot (clique para ampliar):

Ozh' Admin Drop Down Menu.

O plugin em funcionamento, aqui no pBlog.

Tal qual a versão anterior, ícones do pacote famfamfam adornam os menus, e ajudam na identificação das opções. Todo o espaço que era ocupado pelos menus antes da instalação do plugin são “preenchidos”, o que maximiza o uso do espaço vertical - algo muito válido para quem usa monitores widescreen.

O Ozh’ Admin Drop Down Menu funciona tanto com o painel original do WordPress, quanto com o Fluency. É gratuito, pode ser baixado aqui, e basta ativá-lo no painel para que ele comece a funcionar.

BlogLista: nova lista de discussões sobre blogs Por Rodrigo Ghedin dia 20 de setembro de 2008 às 1:52 pm | Imprimir este post

BlogLista.

BlogLista.

Já houve várias iniciativas para criar uma lista de discussões sobre blogs no Brasil. Porém, seja pela bagunça, pelo baixo nível, ou mesmo por motivo desconhecido, até hoje nenhuma delas vingou em todos os sentidos, ou seja, fez sucesso e manteve o bom nível.

Inconformados com isso, o Jânio Sarmento e o Daniel Becher, através do Viamão Lotado, resolveram tentar de novo, e criaram a BlogLista. O diferencial desta nova lista é ter regras bem rígidas, e moderadores de peso, tudo visando manter o bom nível de discussões, que como se viu nas tentativas passadas, costuma cair com o passar do tempo.

Confesso que nunca participei ativamente de nenhuma lista sobre blogs, justamente pelo fato de, em regra, a coisa descamba para a bagunça. Como, dessa vez, focaram justamente nesse ponto fraco, dei um crédito e estou lá, lendo e participando de alguns threads. Pelo menos nesse início, os objetivos dos criadores estão sendo alcançados.

Como parte dos cuidados para evitar bagunça, todos os participantes passam por uma validação, antes de poderem entrar, ler e participar da lista. Ela, inclusive, é limitada a bloggers, e no ato do cadastro, que pode ser realizado aqui, pede-se o(s) endereço(s) do(s) seu(s). Antes disso, porém, é imprescindível a leitura das regras, essenciais para a boa convivência na lista.

Te vejo por lá ;) .

Novo layout no Twitter Por Rodrigo Ghedin dia 19 de setembro de 2008 às 1:06 pm | Imprimir este post

Ontem à noite o Twitter liberou o novo layout. Com novidades simples, mas que melhoraram a diagramação das páginas, para este que vos escreve o saldo ficou positivo. Não que eu tenha usufruido de todas as vantagens do novo layout, já que uso o twhirl, mas numa comparação rápida com o antigo, as melhorias saltam à vista.

Segundo o blog oficial do Twitter, as mudanças visam, principalmente, agilizar a vida dos usuários. Muito AJAX foi usado, o que, de fato, melhorou algumas tarefas rotineiras.

Twitter novo.

Twitter novo.

Na parte visual, a principal mudança ficou na sidebar, ou barra lateral. Agora, as páginas do usuário são divididas por abas, o que deixou tudo mais claro e direto. O cabeçalho também ganhou pequenas mudanças, que o deixaram mais objetivo.

As abas Home (página principal) e @Replies (mensagens que o citam), quando estão em foco, se clicadas atualizam a página. Muito bom! Os botões de resposta e favoritar agora ficam ocultos, e só aparecem nas mensagens quando se passa o mouse sobre.

Outra novidade é que, agora, é possível escolher temas para seu perfil. Isso facilita a vida de quem não tem muita intimidade com design, mas já cansou do visual padrão do Twitter.

Temas no Twitter.

Temas no Twitter.

Para acessá-los, entre em Settings, e clique em Design. Há doze disponíveis, e basta clicar num deles para ver a mudança em tempo real. Ainda é possível personalizar cores e imagem de background, tal qual acontecia antes; basta clicar nos botões Change background image » e Change design colors ».

Apesar de nem todos terem gostado das novidades, as achei bem interessantes. O Twitter ficou mais bonito e organizado, dois adjetivos difíceis de serem encaixados na mesma frase. A intenção principal, que era agilizar o uso, também foi atingida. E você, gostou?

PS: quem quiser, me adicione no Twitter: @ghedin. Obrigado :) .

Redirecione o site inteiro via .htaccess Por Rodrigo Ghedin dia 18 de setembro de 2008 às 7:32 pm | Imprimir este post

Mudar de domínio é difícil. Não bastasse o transporte dos arquivos e bancos de dados de um servidor para outro, ainda temos o redirecionamento do endereço antigo para o novo, que para muitos é um bicho de sete cabeças. Digo, para quem sabe, pode até ser fácil, mas para quem não tem muita intimidade com servidores e coisas do tipo, a coisa complica.

Uma solução simples é pedir ao suporte do servidor que adicione o domínio novo: assim, ambos os domínios, o original e o antigo, funcionarão. Não sei se isso caracteriza conteúdo duplicado, prática que detona qualquer estratégia de SEO, mas na dúvida, evito. Afinal, fazendo isso, os dois domínios continuam acessíveis, cada um em sua própria URL, ambos caindo no mesmo conteúdo. Outro efeito colateral ruim é a descentralização da marca, afinal, se com um TLD já é difícil fixar o domínio na cabeça das pessoas, imagine com dois ou mais?

Como se vê, essa não é a melhor saída. Precisando de uma solução, já que tinha que redirecionar dois domínios (.com e .com.br) para o novo (.ig.com.br), corri atrás de uma mais amigável e transparente, tanto para o leitor, quanto para os mecanismos de busca. E a encontrei. Não lembro aonde, mas encontrei. Funciona via .htaccess, e é bem simples de ser implementada.

O código é o seguinte:


RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?antigo.com [NC]
RewriteRule ^(.*)$ http://www.novo.com/$1 [R=301,L]

Copie, cole no seu .htaccess, e faça as devidas modificações. Se houver mais de um domínio antigo, repita as duas últimas linhas na seqüência, alterando, obviamente, o domínio antigo.com pelo antigo2.com. Simples assim.

Logos e gráficos do WordPress Por Rodrigo Ghedin dia 16 de setembro de 2008 às 8:44 am | Imprimir este post

Eu gosto muito do WordPress. Atualmente em quase todos projetos que toco uso essa ferramenta, graças à sua qualidade e flexibilidade, e também pelo fato de ser grátis. Como forma de ajudar o projeto, faço questão de manter os créditos do WordPress, ou então, em momentos mais inspirados e livres, fazer uma bela propaganda no rodapé.

Logotipo do WordPress

Logotipo do WordPress

Até hoje, a parte mais complicada era encontrar resources para fazer a recomendação. Existem muitos logos e gráficos do WordPress, mas esparsos, espalhados na Internet. Felizmente, o pessoal da Automattic, empresa por trás do sistema, resolveu facilitar a vida daqueles que querem divulgar o projeto, e criaram uma página contendo logos e gráficos do WordPress.

Há três tipos de arquivos para cada imagem: vetorizado de alta qualidade (para impressão), vetorizado simples (para web), e o famoso PNG, formato mais flexível. Além dos logos e botões, estão disponíveis wallpapers, inclusive para iPhone e iPod touch. No fim da página, os códigos exatos para as cores oficiais do WordPress (essa, essa e essa).

Em outra página, estão os fanarts, botões relacionados ao WordPress criados pelos fãs. Esses são mais “rodados”, existem há tempos.

Por fim, quem preferir ícones mais coloridos, alegres, tem nesta página uma seleção de pacotes do tipo. São várias cores, e a qualidade é acima da média.

WordPress Plugin Competition 2.5: os ganhadores! Por Rodrigo Ghedin dia 15 de setembro de 2008 às 9:09 am | Imprimir este post

Finalmente saíram os ganhadores do WordPress Plugin Competition 2.5, concurso que visa estimular a comunidade do WordPress a criar plugins interessantes, inovadores e úteis. Em troca, todos os participantes recebem prêmios, que vão desde singelos U$ 10,00 (para todos os participantes), até hospedagem grátis por um ano num servidor dedicado (um dos prêmios do grande campeão). O concurso é uma promoção do Weblog Tools Collection, excelente blog sobre WordPress.

Confira, agora, os ganhadores dessa edição:

WordPress MU

O grande vencedor foi o Vote2Publish, aparentemente criado por um brasileiro, mas cujo link está quebrado… O prêmio de consolação da categoria foi para o WP-Wall, plugin que cria um mural de recados no blog.

WordPress tradicional

Em terceiro lugar ficou o WP Easy Uploader, que permite o envio de plugins, temas e outros tipos de arquivos para o servidor através da interface do WordPress, tornando desnecessário o uso de um cliente FTP. Levou, por isso, U$ 200,00, um outro prêmio que eu não sei do que se trata (“country codes for world poster”), e uma cópia do plugin de publicidade OIOPublisher.

Na segunda posição, o plugin Manageable. Ele permite a edição de título, categorias e tags dos posts diretamente na página de gerenciamento, sem que seja preciso entrar em cada post individualmente para fazer tais edições. Mão na roda, que garantiu ao autor U$ 700,00, os games para PC Enemy Territory: Quake Wars e Tom Clancy’s Rainbow Six Vegas, e uma cópia do plugin OIOPublisher.

E o grande vencedor é… o WP Comment Remix! Este plugin é, na realidade, uma verdadeira suíte, que reformula completamente os comentários do WordPress. Com ele, é possível adicionar recursos de resposta e citação, separar ou eliminar trackbacks, gerenciar melhor os comentários na área administrativa, alterar a ordem dos comentários, dentre outras coisas, e ainda traz quatro widgets relacionados a comentários. O prêmio para o vencedor? U$ 2.000,00, a gravação profisional de uma música (?), um ano de hospedagem dedicada na iWeb (Intel Core 2 Duo, HD 160GB Sata2, 1GB de RAM e 1500 GB de tráfego por mês), e uma cópia do plugin OIOPublisher.

Confesso que gostei mais do segundo colocado, mas a verdade é que todos os plugins, incluindo os que levaram o prêmio de participação (U$ 10,00), são interessantes. Promoções como essa são excelentes tanto para os desenvolvedores, que têm a chance de verem seus trabalhos reconhecidos, quanto para a comunidade, que recebe uma leva enorme de bons plugins novos.

Publique códigos em seus posts com o SyntaxHighlighter Por Rodrigo Ghedin dia 12 de setembro de 2008 às 4:48 pm | Imprimir este post

Blogs como o pBlog, onde vez ou outra aparecem códigos nos posts a fim de auxiliar os leitores, precisam dar mais atenção a este aspecto. Foi pensando nisso que implementamos por aqui o plugin SyntaxHighlighter, uma solução elegante e muito funcional para essa velha problemática.

Este plugin, na realidade, simplesmente traz para o WordPress, de maneira facilitada, o excelente JavaScript syntaxhighlighter, criado por Alex Gorbatchev. Isso quer dizer que as mesmas facilidades que este plugin traz podem ser usufruídas em outros projetos; basta pegar o código original, e adaptá-la, tal qual os desenvolvedores do plugin que ora explico fizeram.

A instalação segue o bom e velho esquema padrão do WordPress: baixe o plugin, descompacte-o, e envie a pasta (inteira) syntaxhighlighter para a /wp-content/plugins/. Depois, ative-o no painel administrativo, na guia Plugins, e ele estará pronto para uso.

O uso é simples. Quando for escrever um código, basta colocá-lo entre as tags especiais do plugin, e automaticamente o código gerado na saída estará formatado de acordo com a linguagem escolhida. O código tem uma estrutura própria: [ source language='css' ] /* aqui vai o código inteiro! */ [ /source ]. Note que utilizei espaços apenas para que o código não fosse convertido, pois caso fizesse certo, ou seja, tudo grudado, o resultado seria esse abaixo:

/* aqui vai o código inteiro! */

Há suporte a várias linguagens, cada uma com um código próprio, que deve ser inserido no atributo language='', de acordo com a desejada. Confira as linguagens suportadas, e seus respectivos códigos:

  • C++ — cpp, c, c++
  • C# — c#, c-sharp, csharp
  • CSS — css
  • Delphi — delphi, pascal
  • Java — java
  • JavaScript — js, jscript, javascript
  • PHP — php
  • Python — py, python
  • Ruby — rb, ruby, rails, ror
  • SQL — sql
  • VB — vb, vb.net
  • XML/HTML — xml, html, xhtml, xslt

Outro detalhe legal do plugin, é que no topo há atalhos úteis, como imprimir (print), copiar o código para a área de transferência (copy to clipboard) e ver em modo texto normal (view plain). No pBlog, aparentemente tais atalhos não estão funcionando; estamos averiguando o porquê disso, e logo todos estarão funcionais - assim esperamos :D .

E para a galera do WordPress.com, uma boa notícia: o syntaxhighlighter está disponível lá também! Aliás, foi graças a um blogger de lá, o Flavio Granero, que utiliza esse recurso nativo do WordPress.com, que descobri o plugin - valeu, Flavio!

Para fechar, confira alguns exemplos, usando linguagens diversas. Espero que esse plugin lhes seja útil, e até a próxima!

<?php
// ** MySQL settings ** //
define('DB_NAME', 'wordpress');    // The name of the database
define('DB_USER', 'root');     // Your MySQL username
define('DB_PASSWORD', ''); // ...and password
define('DB_HOST', 'localhost');    // 99% chance you won't need to change this value
define('DB_CHARSET', 'utf8');
define('DB_COLLATE', '');
var WPAjax = Class.create();
Object.extend(WPAjax.prototype, Ajax.Request.prototype);
Object.extend(WPAjax.prototype, {
WPComplete: false, // onComplete function
WPError: false, // onWPError function
defaultUrl: '', // We get these from WPAjaxL10n
permText: '',
strangeText: '',
whoaText: '',