Marcelo Torres

Entradas categorizadas em ‘Tutoriais’

Fazendo a busca do WordPress funcionar apenas para algumas categorias

07/06/2009 · 4 Comentários

A quase um mês atrás fiz uma colaboração com o site tudoparawordpress do Guga Alves, ele fez uma postagem sobre como mostrar posts  no resultado da busca do WordPress apenas nas categorias desejadas, então estou postando agora(muito atrasado por sinal né, :D) na integra, com as palavras do Guga no post.

Segue o post no http://www.tudoparawordpress.com.br

Me passou pela cabeça a seguinte questão: Como excluir algumas categorias da busca do WordPress ?

Passou pela sua também ? Então continue lendo esse post, a dica vem logo abaixo !

Adicione o código ao arquivo search.php:

<?php if( is_search() )  :
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
query_posts("s=$s&paged=$paged&cat=9,11,16");
endif; ?>

A seleção das categorias que farão parte da busca se dá na terceira linha, onde se lê cat=9,11,16 , troque pelo ID das categorias que você deseja exibir. O ID das categorias, conforme já expliquei em outras postagens, pode ser obtido em Posts -> Categorias posicionando o mouse no nome da categoria e vendo na barra de status (no rodapé de seu navegador) o cat_ID exibido (Ex.:http://www.seusite.com.br/wp-admin/categories.php?action=edit&cat_ID=4).

Update:

Nosso leitor e agora colaborador Marcelo Torres enviou uma outra maneira de se fazer tal alteração, segue abaixo:

<?php get_header(); ?>
<div id=”conteudo”>
<?php if (have_posts()) : ?>

<h1>Resultado(s) da busca por: “<?php the_search_query();?>“</h1>
<div id=”box”>
<?php while (have_posts()) : the_post(); ?>
<div class=”box_busca”>
<?php if ( in_category(3) || in_category (13) || in_category (14) || in_category (15) ): ?>
<?php else : ?>
<a href=”<?php the_permalink() ?>” title=”<?php the_title(); ?>“><?php the_title(); ?></a>
<?php the_excerpt(); ?>
<?php endif; ?>
</div>
<?php endwhile; ?>
</div>
<?php else : ?>

<p>Nada encontrado. Verifique o termo de pesquisa e tente outra vez!</p>

<?php endif; ?>
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>

A linha:

<?php if ( in_category(3) || in_category (13) || in_category (14) || in_category (15) ): ?>

É aonde você escolhe a categoria que não quer que escolha no post, com a sintaxe: in_category(ID);

Além disso, contribuindo ainda mais com o conteúdo desta postagem, nos avisou de um plugin chamado Advanced Category Excluder que esconde todos os posts de uma determinada categoria, porém ele não esconde apenas dos resultados de busca, esconde também do feed, posts recentes, lista de categorias, entre outros.

Marcelo, obrigado pela colaboração ! Sempre que tiver algo a acrescentar assim, pode entrar em contato ou enviar você mesmo uma matéria, registrando-se no site e fazendo sua postagem. :D

Categorias: Tutoriais · WordPress
Etiquetado: , , ,

Mostrar imagem na função excerpt() do WordPress

26/05/2009 · 1 Comentário

A função excerpt() é responsável por fazer um resumo do post , sua colocação vai dentro do loop semelhante a função content()( que exibe o conteúdo inteiro) ela é bem vinda quando não queremos mostrar todo o conteúdo do post, por exemplo, o artigo de destaque de um portal. Só que o problema maior é que a função só exibe texto simples sem nenhuma formatação HTML, impedindo a exibição de imagens…mas com o Advanced Excerpt isso é possível, esse plugins te da a opção de habilitar/desabilitar qualquer tag HTML que será exibida no post  e ainda você pode determinar a quantidade de carácter que serão exibido.

Downlaod

http://downloads.wordpress.org/plugin/advanced-excerpt.zip

Instalação

Depois de ter baixado e extraídos os arquivos:

1. Enviar a pasta extraída para a pasta / wp-content/plugins.
2. Ativar o plugin através do ‘Plugins’ no menu WordPress.
3. Ir para ‘excerpt’ na guia “Ferramentas” e configurar o plugin.

#Nota: No site do Desenvolvedor tem uma explicação(em inglês) de como definir os parametros manualmente, caso você precise.

Categorias: PHP · Tutoriais · WordPress
Etiquetado: , ,

Galeria de imagem com CSS puro

06/05/2009 · Deixe um comentário

Olá pessoal neste post estarei mostrando como fazer uma galeria de imagem  com CSS puro. Este exemplo foi baseado no exemplo do site http://www.dynamicdrive.com, neste site foi usado o pseudo-elemento :hover, porém eu usei o :active, fazendo com que a imagem só amplie de tamanho quando clicada, fiz também outras modificações para adaptar melhor ao IE6 e ao Opera. Falando em IE6(esta porcaria), o efeito do :active tem uma pequena diferença dos outros navegadores, no IE6 quando a imagem for clicada ela irá ampliar normal, mas quando o botão do mouse deixar de ser pressionado a imagem permanece ampliada e nos outros navegadores(Firefox, Opera, Safari, Chrome, IE7…) a imagem some para o usúario escolher outra, não consegui descobrir um jeito para consertar isso, se alguem descobrir é só falar ai nos comentários que eu adicionarei com os devidor créditos!

Bom vamos ao que interessa…

A estrutura do arquivo (X)HTML ficaria assim:

[...]
<div id="galeria">
<small>Clique na miniatura para aumentar a imagem</small><br /><br />
 <a class="thumb" href="#thumb">
 <img src="imagens/thumb_image1.jpg" alt="" />
 <span>
 <img src="imagens/1.jpg" alt="" />
 </span>
 </a>
</div>
[...]

Onde dentro do <a> vai ficar as duas imagens, o thumbnail(miniatura) e imagem com tamanho maior(recomendo 400×300, ou aproximado),o thumbnail será a imagem clicada que recebe um link “cego” a imagem maior fica dentro de um <span> onde será feito a “mágica” com css, para aparecer quando for chamada, segue a “mágica”

Arquivo CSS:

*{padding:0;margin:0;}/*deixar margem e padding dos elementos com padrão zerado*/
small{font-size:12px; font-weight:bold;color:#333;}/*formata a mensagem de como visualizar as imagens*/
#galeria{background-color:#9FCBFF;position:relative;width:720px;margin:25px auto;padding:10px;text-align:center;}/*div pai, que englobará as imagens*/
a.thumb img{background-color:#fff;border: 1px solid #999;padding:3px;}/*estiliza as miniaturas*/
a.thumb span{position:absolute;background-color: #000;padding: 10px;left:-10000px;visibility: hidden;color: black;text-decoration: none;}/*começa a mágica*/
a.thumb:active span{visibility:visible;top: 50px;left: 120px;z-index: 50;}/*termina a mágica!*/

As declarações CSS principais para o efeito são:

a.thumb span:

  • left:-10000px; – Joga as iamgens que estão sentro do <span> para -10000px do monitor, sendo assim esconde do campo de visão
  • visibility: hidden; – Simplesmente desaparece com a imagem

a.thumb:active span:

  • visibility: visible; - Faz a imagem aparecer quando a miniatura for clicada, ativando o pseudo-elemento :active
  • z-index: 50; – poe a imagem maior sobre as miniaturas
  • top: 50px; e left:120px; – posiciona a imagem maior na tela

Baixem um exemplo completo aqui

Categorias: (x)html/css · Desenvolvimento · Design · Navegadores · Tableless · Tutoriais · Web Standards
Etiquetado: ,

Formulário de contato em PHP

14/04/2009 · 37 Comentários

Olá pessoal, alguns meses atrás eu estava sofrendo pra pra fazer um formulário de envio de dados de um form para o email de um cliente através de uma area do site, consegui enfim! Então vou compartilhar nesse post o desenvolvimento de um formulário de contato simples para seu site, utilizando a função mail() do php, com validação de campos(inclusive de email), sem spam e com estilização em css.

Irei dividir em 3 partes:

  • Construção do form em (X)HTML;
  • Implementação do arquivo de envio em PHP.
  • Estilização do form com CSS ;


Vamos começar então, com a construção do form em (X)HTML:

contato.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="pt-br">
<head>
<meta name="author" content="Marcelo Torres" />
<meta http-equiv="content-type" content="text/html; charset=iso-utf-8" />
<title>Formulário de contato em PHP</title>
<link rel="stylesheet" type="text/css" href="style.css" />
</head>
<body>
<form action="contato.php" method="post">
<fieldset>
<legend>Entre em contato</legend>
<small>*Campos de Preenchimentos Obrigatório</small><br />
<?php include("enviar.php")?>
<label for="nome"> * Seu nome:</label>
<input id="nome" name="nome" size="31" type="text" value="<?echo $nome ;?>" /><br />
<label for="email">* Seu email:</label>
<input id="email" name="email" size="31" type="text" value="<?echo $email ;?>" /><br />
<label for="assunto">* Assunto:</label>
&nbsp;<input id="assunto" maxlength="50" name="assunto" size="15" type="text" value="<?echo $assunto ;?>" /><br />
<label for="mensagem">* Mensagem:</label><br />
<textarea id="mensagem" cols="53" rows="5" name="mensagem"><?echo $mensagem;?></textarea><br />
<input name="enviar" type="submit" value="Enviar" class="botao"/>
<input name="cancelar" type="reset" value="Limpar" class="botao"/>
<p>Formulário de contato em PHP, por <a title="blog do autor" href="http://marcelowd.wordpress.com">Marcelo Torres</p>
</fieldset>
</form>
</body>
</html>

Nota I: o value tem um echo em php com as variáveis( que nós iremos ver ainda), para no caso de um erro na validação do form, os dados digitados continuar nos campos, para que o usuário não tenha que digitar denovo.

Nota II: o comando “<?php include(“enviar.php”)?>”, está incluindo o arquivo
enviar.php, onde estão localizados, as validações dos campos e é claro o script para envio para seu email, vamos fazer este arquivo então.


enviar.php

<?php
/*Variaveis do Formulario*/
$nome = trim(@$_POST['nome']);/*recebe os dados digitados no campo "nome"*/
$email = trim(@$_POST['email']);/*recebe os dados digitados no campo "email"*/
$assunto_user = trim(@$_POST['assunto']);/*recebe os dados digitados no campo "assunto"*/
$mensagem = trim(@$_POST['mensagem']);/*recebe os dados digitados no campo "mensagem"*/

$enviar = @$_POST['enviar'];/*Botão enviar*/

/*variavel que contará os erros*/
$erros = 1;

/*transforma em variavel global, a vari&atilde;¡vel email*/
global $email;
if($enviar)/*Se o botão enviar for pressionado, faça...*/
{
			/*Verifica campo "nome" vazio*/
			if($nome == "")
				{
				$erros++;
				echo "<small class=\"erro\">O Campo nome esta vazio</small><br />";
				}
				elseif(is_numeric($nome))/*verifica se foi digitado n&uacute;mero no campo*/
				{
				$erros++;
				echo "<small class=\"erro\">Voc&ecirc; digitou numero no campo nome</small><br />";
				}
			/*Verifica campo "email" vazio*/
			if($email == "")
				{
				$erros++;
				echo "<small class=\"erro\">O Campo email est&aacute; vazio</small><br />";
				}
			/*Verifica campo "assunto" vazio*/
			if($assunto_user == "")
				{
				$erros++;
				echo "<small class=\"erro\">O Campo assunto est&eacute; vazio</small><br />";
				}
			/*Verifica campo mensagem vazio*/
			if($mensagem == "")
				{
				$erros++;
				echo "<small class=\"erro\">O Campo mensagem est&eacute; vazio</small><br />";
				}	

					/*verifica email, se digitado incorretamente*/
					$email = str_replace (" ", "", $email);
					$email = str_replace ("/", "", $email);
					$email = str_replace ("@.", "@", $email);
					$email = str_replace (".@", "@", $email);
					$email = str_replace (",", ".", $email);
					$email = str_replace (";", ".", $email);

					if(strlen($email)<8 || substr_count($email, "@")!=1 || substr_count($email, ".")==0)
					{
					$erros++;
					echo "<small class=\"erro\">Por favor, digite seu <b>e-mail</b> corretamente.</small><br />";
					}
					if($erros <= 1)/*se não tiver algum erro continuara abaixo, se tiver é exibido as messagens configuradas acima*/
					{

					/*Configuramos o e-mail para o qual serão enviadas as informações*/

					$seuemail = "seuemail@exemplo.com";/*email de destino*/

					$assunto = "contato do site";/*assunto padrão do email(não o digitado pelo úsuario)*/

					/*Configuramos os cabeçalhos do e-mail*/
					$headers = "MIME-Version: 1.0\r\n";
					$headers .= "Content-type: text/html; charset=utf-8\r\n";/*para o envio com formatação HTML. Charset po ser iso-8859-1 também*/
					$headers .= "From: $seuemail \r\n";/*Para "seu email"*/

					/*Configuramos o conteúdo do e-mail*/
					$conteudo = "<strong>Nome:</strong> $nome<br />";/*vai para o seu email o que foi digitado no campo "nome"*/
					$conteudo .= "<strong>Email:</strong> $email<br />";/*vai para o seu email o que foi digitado no campo "email"*/
					$conteudo .= "<strong>Assunto:</strong> $assunto_user<br />";/*vai para o seu email o que foi digitado no campo "assunto"*/
					$conteudo .= "<strong>Mensagem:</strong> $mensagem<br />";/*vai para o seu email o que foi digitado no campo "mensagem"*/

					/*Enviando o e-mail...*/
					$enviando = mail($seuemail, $assunto, $conteudo, $headers);

					/*verifica se o e-mail foi enviado com sucesso*/
						if($enviando) {
							echo "Mensagem enviada com sucesso!";
							echo "<script>alert(\"Mensagem enviada com sucesso!\")</script>";
							echo "<script>window.location = \"index.php\"</script>";
						}
						else{/*seu ouve algum erro...*/
							echo "<p><b>$nome</b><br />Ouve um erro no envio, desculpe-nos pelo transtorno!!!</p>";
						}
				}
}
?>

Sem notas dessa vez, os comentários(em verde) explicam tudo :).

Agora vamos a parte divertida, o CSS, :D

style.css

*{padding:0; margin:0;}/*reset de margem e espaçamento para todos os elementos*/

body{letter-spacing:2px;font-size:13px;color:#333;line-height:36px;}

fieldset{width:500px;padding:20px;margin:50px;}
input{width:350px;font-size:18px;color:#333;border:solid 1px #333;}
input.botao{width:100px;}

small{color:#008800;}
small.erro{color:#f00;}

baixe os arquivos completos aqui!

Categorias: (x)html/css · Desenvolvimento · Design · PHP · Tableless · Tutoriais · Web Standards
Etiquetado: ,

Instalando o TinyMCE no seu site

13/01/2009 · 20 Comentários

Depois de muita procura na Internet, depois de muitos testes, eu finalmente achei um editor de texto em JavaScript que satisfazesse minhas necessidades, testei o FCKeditor, NicEdit(esse eu gostei muito, é bem leve e simples,pena que não “produza” código em (X)HTML ) e o TinyMCE, esse ultimo realmente superou as expectativas, ele é leve, bem completo, tem 2 opções de uso: o Simples e o Avançado, além de skins, integração fácil de se fazer e fácil de personalizar e o melhor, dentro dos padrões.

O TinyMCE transforma automaticamente qualquer textarea (obviamente os textareas que estão na página, cuja o script de integração esteja aplicado ) em um editor HTML Rich Text, segue abaixo então como fazer essa integração:

  • Baixe o pacote no site do TinyMCE
  • Descompacte na pasta onde está a página que deseja instalar o TinyMCE
  • Abra o arquivo desejado e entre as tag <head>…</head>, coloque uma dessas opções:

Modo Simples:

<script type="text/javascript" src="../jscripts/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript">
	tinyMCE.init({
		mode : "textareas",
		theme : "simple"
	});
</script>

Modo Avançado:

<script type="text/javascript" src="../jscripts/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript">
	tinyMCE.init({
		// General options
		mode : "textareas",
		theme : "advanced",
		plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template",

		// Theme options
		theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",
		theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
		theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
		theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak",
		theme_advanced_toolbar_location : "top",
		theme_advanced_toolbar_align : "left",
		theme_advanced_statusbar_location : "bottom",
		theme_advanced_resizing : true,

		// Example content CSS (should be your site CSS)
		content_css : "css/content.css",

		// Drop lists for link/image/media/template dialogs
		template_external_list_url : "lists/template_list.js",
		external_link_list_url : "lists/link_list.js",
		external_image_list_url : "lists/image_list.js",
		media_external_list_url : "lists/media_list.js",

		// Replace values for the template plugin
		template_replace_values : {
			username : "Some User",
			staffid : "991234"
		}
	});
</script>

Nota #1: Caso você ache alguns botões desnecessários basta exclui-los/desabilitá-los, nas seguintes linhas:

theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect",
theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak",

Nota #2:Para mudar o posicionamento da bara de ferramenta no textarea, basta alterar as seguintes linhas:

theme_advanced_toolbar_location : "top", //poderá mudar para bottom
theme_advanced_toolbar_align : "left", //poderá mudar para right
theme_advanced_statusbar_location : "bottom",//poderá mudar para top
theme_advanced_resizing : true,

Nota #3: Sobre a o pacote de tradução, sinceramente não consegui ainda faze-lá funcionar, então resolvi eu mesmo acessar a pasta: tinymce/jscripts/tiny_mce/themes/advanced/langs/ e editar os arquivos…um pouquinho de inglês técnico já basta!

Tradução

UPDATE: O Vinicius me avisou ali em baixo nos comentários, que enviou um pacote de tradução atualizado para o site oficial do TinyMCE, eu já testei e está funcionado muito bem. Então vamos ver como fazer a tradução:
1 - Faça o download do pacote em português – link http://tinymce.moxiecode.com/download_i18n.php – selecionando o checkbox(portuguese) e clicando no botão download no final da lista.

2- com o pacote extraido, copie as pastas para o diretório – \tinymce\jscripts\tiny_mce – e substitua os pacotes.

3- Feito os passos 1,2 corretamente adicione a seguinte linha(em vermelho):

[...]tinyMCE.init({
// General options
 language : "pt", // adicione esta linha
mode : "textareas",
theme : "advanced",[...]

Você pode adicionar esta linha tanto modo simples, quanto no avançado.

Pronto, agora é só se divertir!

<pre>&lt;script type=”text/javascript” src=”../jscripts/tiny_mce/tiny_mce.js”&gt;&lt;/script&gt;
&lt;script type=”text/javascript”&gt;
tinyMCE.init({
mode : “textareas”,
theme : “simple”
});
&lt;/script&gt;</pre>
<strong>Modo Avançado:</strong>
<pre>&lt;script type=”text/javascript” src=”../jscripts/tiny_mce/tiny_mce.js”&gt;&lt;/script&gt;
&lt;script type=”text/javascript”&gt;
tinyMCE.init({
// General options
mode : “textareas”,
theme : “advanced”,
plugins : “safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template”,

// Theme options
theme_advanced_buttons1 : “save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,styleselect,formatselect,fontselect,fontsizeselect”,
theme_advanced_buttons2 : “cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor”,
theme_advanced_buttons3 : “tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen”,
theme_advanced_buttons4 : “insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak”,
theme_advanced_toolbar_location : “top”,
theme_advanced_toolbar_align : “left”,
theme_advanced_statusbar_location : “bottom”,
theme_advanced_resizing : true,

// Example content CSS (should be your site CSS)
content_css : “css/content.css”,

// Drop lists for link/image/media/template dialogs
template_external_list_url : “lists/template_list.js”,
external_link_list_url : “lists/link_list.js”,
external_image_list_url : “lists/image_list.js”,
media_external_list_url : “lists/media_list.js”,

// Replace values for the template plugin
template_replace_values : {
username : “Some User”,
staffid : “991234″
}
});
&lt;/script&gt;</pre>

Categorias: Desenvolvimento · Software-Livre · Tutoriais · Web Standards
Etiquetado: , ,