Alterando seu tema para utilizar o Lead Manager
Devido à grande quantidade de comentários que temos recebido demostrando dificuldade na hora de preparar o tema do WordPress para utilizar o Lead Manager, esse post tem como objetivo explicar detalhadamente esse processo…
Para ficar mais simples será demonstrada a criação de capas na página index.php do tema default do wordpress, que fica na pasta ‘wp-content/themes/default/’. Abaixo está o trecho do código em que iremos trabalhar:
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<div class=”post” id=”post-<?php the_ID(); ?>”>
<h2><a href=”<?php the_permalink() ?>” rel=”bookmark” title=”Permanent Link to <?php the_title_attribute(); ?>”><?php the_title(); ?></a></h2>
<small><?php the_time(’F jS, Y’) ?> <!– by <?php the_author() ?> –></small>
<div class=”entry”>
<?php the_content(’Read the rest of this entry »’); ?>
</div>
Eu destaquei as funções que serão alteradas. Comecemos pela mais difícil:
have_posts()
O WordPress utiliza uma lógica muito interessante para carregamento dos conteúdos, batizado como ‘O LOOP’. Explicando de uma forma resumida, o ‘have_posts()’ retorna true enquanto existir conteúdo a ser carregado no local onde você está.
Seguindo a mesma lógica temos o ‘$covers->have_posts(area, [max])’, onde ‘area’ é o id da área na qual você criou a capa e max é um campo opcional que força a quantidade de posts a ser carregados.
Para não complicar, vamos usar o id da área ‘home’ que já vem por padrão ao instalar o plugin. Substituiremos então:
‘<?php if(have_posts()) : ?>’
por:
‘<?php if($covers->have_posts(1)) : ?>’
E também:
‘<?php while(have_posts()) : the_post(); ?>’
por:
‘<?php while($covers->have_posts(1)) : the_post(); ?>’
Pronto! O pior já passou… Agora é só receita de bolo.
the_post()
A função ‘the_post()’ coloca na memória os dados do post que será chamado. Da mesma forma o ‘$covers->the_post()’ coloca na memória os dados da capa. Então é só alterar:
‘<?php while($covers->have_posts(1)) : the_post(); ?>’
por:
‘<?php while($covers->have_posts(1)) : $covers->the_post(); ?>’
the_title()
Essa função imprime na tela o título do post. Espelhando ela o ‘$covers->the_title()’ imprime o título da capa, quando existir. Caso nenhum título tenha sido informado para a capa, o plugin mostra o título do próprio post. No tema:
‘<?php the_title(); ?>’
será substituido por:
‘<?php $covers->the_title(); ?>’
the_excerpt()
Opa! Essa função não existe no tema… mas ela cumpre um papel semelhante ao ‘the_content(’Read the rest of this entry »’)', carregando um resumo do post ou, se o resumo estiver em branco, um trecho do conteúdo. Esse campo é muito utilizado por jornalistas com a finalidade de criar chamadas que despertem o interesse dos leitores para aquela notícia.
Já existem temas que utilizam esse recurso, mas, no nosso caso, substituiremos o:
‘<?php the_content(’Read the rest of this entry »’); ?>’
por:
‘<?php $cover->the_excerpt(); ?>’
Assim como o ‘$covers->the_title()’, o ‘$covers->the_excerpt()’ só carrega a chamada da capa se ela existir, do contrário o ‘the_excerpt()’ do post é trazido.
the_permalink()
O ‘the_permalink()’ é responssável por gerar o link para o post. Existem ocasiões em que a capa poderá apontar para outro site (banners por exemplo), nesse casos que o ‘$covers->the_permalink()’ se faz necessário. No tema, mude:
‘<?php the_permalink(); ?>’
para:
‘<?php $covers->the_permalink(); ?>’
Lembrando que ele também carrega o permalink do post se o permalink da capa estiver vazio.
the_thumb()
Por último, mas não menos importante, o ‘$covers->the_thumb()’. Essa função não possui uma irmã nos temas. Surgiu como uma necessidade de controlar onde as imagens seriam carregadas e para funcionar basta adicionar ‘$covers->the_thumb([size[, add]])’ no local do seu tema onde a imagem será apresentada.
Os parâmetros dessa função são opcionais. O size indica o tamanho da imagem a ser carregada e admite apenas o valores ‘medium’ e ‘thumbnail’, enquanto o add pode ser qualquer valor válido para tags do tipo imagem. Por exemplo:
‘<?php $covers->the_thumb(’thumbnail’, ‘width=”100″ class=”semborda”‘); ?>’
A saída da função acima resultará em:
‘<img src=”img/imagem.jpg” width=”100″ class=”semborda” />’
O resultado final será:
<?php if ($covers->have_posts(1)) : ?>
<?php while ($covers->have_posts(1)) : $covers->the_post(); ?>
<div class=”post” id=”post-<?php the_ID(); ?>”>
<h2><a href=”<?php $covers->the_permalink() ?>” rel=”bookmark” title=”Permanent Link to <?php the_title_attribute(); ?>”><?php $covers->the_title(); ?></a></h2>
<small><?php the_time(’F jS, Y’) ?> <!– by <?php the_author() ?> –></small>
<div class=”entry”>
<?php $covers->the_thumb(’thumbnail’, ‘width=”100″ class=”semborda”‘); ?>
<?php $covers->the_excerpt(); ?>
</div>
A criação de capas não está restrita à index.php, você pode criar capas por categorias, criar sessões para o site, combinar várias capas em uma só página, dividir áreas para cada setor com permissões para os responssáveis… Enfim, vai da necessidade (e criatividade) de cada um.
Espero ter ajudado…
Sobre o Autor
Função
Responsável pela integração das respectivas plataformas de publicação, gestão da informação e relacionamento com o público usuário, estabelecendo a metologia de trabalho para a equipe e organizando uma biblioteca de desenvolvimento a fim de responder pela otimização da infra-estutura e gestão do ciclo de vida das aplicações.
15 Comentários Publicados
-
Eduardo — 03/07/2008 @ 17:46 pm
Acho que funcionou, usei o $covers->have_posts(1) e apareceram somente as postagens na capa da área 1, se eu trocar por $covers->have_posts(2), vai aparecer as postagens da área 2 correto?
Mas se eu quiser que apareçam várias áreas uma ao lado da outra com duas colunas por exemplo, teria que editar o código tb? Tipo:
[Area 1] [Area 2]
[Area 3] [Area 4]
Como seria?
-
Marcelo — 04/07/2008 @ 16:17 pm
Olá Eduardo,
nesse caso você precisa repetir o código do loop para cada área, informando seus respectivos ids. Em relação a posição das áreas é questão de formatação, aí depende do seu tema… por exemplo você poderia criar uma div flutuante com tamanhos fixos para cada área.
Espero ter ajudado
-
Edem Guima — 07/07/2008 @ 15:22 pm
Olá pessoal!
parabéns… por incrivel que pareça.. fui vê que o wordpress tava sendo usado no site do ministério da cultura ontem… parabéns pela iniciativa de ao mesmo tempo de ultilizar divulgar ne um site deste porte!
Eu estou implementando no meu site… só que me surgiu uma dúvida..
no caso funcionou tudo certinho.. ta aparecendo a area 1 direitinho..
o código ficou esse:
have_posts(1)) : ?>have_posts(1)) : $covers->the_post(); ?>
<div class=”post” id=”post-”>
<a href=”the_permalink(); ?>” rel=”bookmark” title=”Permanent Link to “>the_title(); ?>
<!– by –>the_thumb(’thumbnail’, ”); ?>
<?php the_tags(’Tags: ‘, ‘, ‘, ”); ?> Posted in |
no caso para exibir a area 2, eu tenho que repetir o código todo?
-
Marcelo — 08/07/2008 @ 19:48 pm
Olá Edem,
se você pretende fazer com que apareçam várias áreas numa mesma página, então você deve repetir o código sim, alterando o id da área para cada loop.
Abraço
-
Carol — 13/07/2008 @ 13:18 pm
Ola, desculpem.. mas estou tendo sérios problemas para configurar a Capa, e gostaria muito de ajuda… não acerto de jeito algum.. e itens faltam no meu tema… será que alguem poderia me auxiliar? Obrigada.
-
Airton Júnior — 16/07/2008 @ 10:11 am
Olá pessoal. Novamente venho parabenizar este plugin muito útil. Instalei ele e funcionou corretamenta no blog que estou desenvolvendo, minha dúvida surgiu com a atualização da versão 2.5.1 do Wordpress para a versão 2.6. Meu plugin parou de funcionar. O problema será que é no tema, mudando alguns parâmetros (se deixar o tema original ele funciona), ou temos algumas incompatibilidades deste plugin com a nova versão do WordPress?
Grato desde já!
-
Leo Baiano — 18/07/2008 @ 13:59 pm
Estou testando um tema localmente, inclui o código:
the_thumb(’thumbnail’, ‘width=”100″ class=”semborda”‘); ?>
Para exibir a imagem, mas quando vou no gerenciador de capas, seleciono e salvo ele desmarca, voltando para a opção “sem imagem”.
-
Rafaell — 22/07/2008 @ 18:21 pm
Opa, tudo certo?
Fiquei com esse erro de troco !!!
Fatal error: Call to undefined method Covers::the_cover() in C:\wamp\www\wordpress\wp-content\plugins\lead_manager\covers.php on line 373
sugestoes?
-
Rafaell — 22/07/2008 @ 18:29 pm
Linha 373 corrigida
($leads->have_posts()) ? $leads->the_post() : $this->the_covers;
-
Phillip — 29/07/2008 @ 19:17 pm
Olá Marcelo, seguindo a pergunta do Eduardo eu não consegui duplicar de forma correta o tal “LOOP” pois não identifiquei que trecho duplicar.
Você poderia colar para mim um treco do código duplicado para aparecer 4 áreas, conforme falou o Eduardo?
-
Phillip — 30/07/2008 @ 13:25 pm
Agora consegui Marcelo. Consegui perceber que tinha que copiar o código inteiro que monta o corpo do wordpress. Sendo que ainda não ocnsigo ter o arrastar soltar. Desculpe a ignorância mais ainda falta algo? Obrigado
-
Rodrigo Gagliardi — 02/08/2008 @ 22:55 pm
Olá.
Como vocês implementaram o menu do site http://xemele.cultura.gov.br/museus/?
Quando eu crio a hierarquia das páginas elas não aparecem no menu, e quando eu mudo a tag
para
o Javascript não funciona para fazer o mouse over..
o Javascript não esconde as opções abaixo mostrando direto na tela, quando deveria apenas mostrar quando passamos o mouse sobre a opção principal.
Vocês poderiam me dar instruções?
Obrigado,
Rodrigo Gagliardi
-
Yuri Almeida — 17/08/2008 @ 14:16 pm
Ôpa! Beleza?
Instalei tudo certinho, conforme é mostrado aqui, mas tá dando um erro:
Parse error: parse error, unexpected ‘:’ in C:\Arquivos de programas\EasyPHP 2.0b1\www\site2008\wp-content\themes\site-2008\index.php on line 22
na linha 22 está o código have_posts(1) : $covers->the_post(); ?>
O que é isso?
-
Armando Macedo — 25/09/2008 @ 21:38 pm
Fiz as trocas cuidadosamente, mas obtenho sempre o mesmo resultado: um aviso de erro acusando a existência uma “unexpected string” em linhas que não foram alteradas. Torço para que um dia surja um tutorial completo sobre o assunto, que torne a iniciativa acessível a um número maior de pessoas.
-
Lucas Loyola — 01/10/2008 @ 11:29 am
Bem, gostei muito do plugin.. Só isso está me matando, se tornou um grande problema pra mim.
Ele só está aceitando o the_excerpt(); porém eu preciso de um modo de deferenciar esse the_excerpt em algumas áreas do meu site. Enfim, um grande problema que está atrapalhando meu projeto. O geito vai ser tirar o plugin e tentar outro modo.