Mostrando postagens com marcador Codeigniter. Mostrar todas as postagens
Mostrando postagens com marcador Codeigniter. Mostrar todas as postagens

terça-feira, 23 de março de 2010

PHP - Enviar email de 'indique a um amigo' no formato HTML. com jquery e Codeigniter

Olá pessoal!
Hoje vou mostrar como se enviar um email em php (codeigniter) no formato de HTML. Vou utilizar o exemplo de um formulário de indicar um artigo para um amigo. Já que não vejo necessidade de abrir uma nova página, vou utilizar o jquery para enviar via post sem dar um refresh na página.

No decorrer da explicação haverá alguns detalhes importantes para ser usados em outras ocasiões.

Vamos começar pela VIEW:




O action do formulário na verdade não vai ser utilizado, pois o envio será feito via jquery, porém, o caminho especificado nele é o que será usado no método $.post().

Repare que existem 2 inputs hidden. Eles serão responsáveis por preencher tanto o link quanto o título do artigo, que por sua vez será enviado para o email do convidado.

Um detelhezinho que sempre utilizo em sistemas de notícias e artigos, além de inserir o título do artigo na URL, que por sua vez  ajuda muito no SEO eu removo os espaços e alguns caracteres não recomendados. Essa prática está localizada no input hidden com id ="lk". Utilizo o ereg_replace para tal função. Nesse caso removi apenas os espaços em branco e interrogações, trocando pelo hífen (-). Como citei em outro artigo URL dinâmicas.



O CONTROLLER é bem simples, apenas irá puchar a função do MODEL.








 O MODEL será responsável em pegar os POSTS, criar e enviar o email para o amigo: artigos_model.php








Nas primeiras linhas vamos pegar os posts, em seguida vamos chamar a library email do codeigniter. Criamos uma variável para guardar o conteúdo do email, consequentemente trabalhando junto com os posts. Na criação dessa variável podemos utilizar as tags de HTML comuns, ou seja, as que os servidores de email suportam. Não é recomendado usar tags de formulário, iframe, entre outras.
Em relação ao CSS, é recomendado usar o método inline, tanto criando classes antes do head quanto usando os styles nas próprisa Tags. Já tentei chamar alguns CSSs na tag link mas não deram certo.


A linha $config['mailtype'] = 'html' é fundamental para que tudo funcione corretamente. Caso os emails não sejam enviados, altere a linha $config['mailpath'] para 'mail'.


 Como se deve imaginar as funções de email já dizem tudo:
->from = Email do remetente
->to = Email de quem vai receber
->subject = Assunto do email
-> message = Utilizamos a variável que guardarmos o conteúdo do email.

no final do código existe uma linha com comentário. Ela poderá ser usada caso queiram dar um feedback do envio. Nesse caso iríamos alterar a função $.post para $().get. Isso será visto Agora:

JQUERY

vamos criar um arquivo para configurar o envio do formulário. Vou chamá-lo de artigos.js




Lembrando que temos que puchar a função definindo um ID para o formulário (view). A partir dele chamamos a função submit(); Fazemos uma pequena validação (em breve vou postar um modo bem simples de validar com classes) dos campos para não irem em branco. Depois utilizamos a função $.post e utilizo um callback para enviar um alert que foi enviado.

Lembrando que na view onde está o formulário o arquivo jquery tem que ser chamado, e antes do artigos.js.
Não informei o nome do controller, pois vai depender de cada um a definição.

Qualquer dúvida é só mandar. Vamos evoluir juntos.

sexta-feira, 11 de dezembro de 2009

Aceitar acentos na URL com Codeigniter

Para que seja possível colocar acentos nos href e nas URLs é muito simples.

Abra o arquivo config.php que se encontra no diretório system\application\config.

Ao abrir procure a linha $config['permitted_uri_chars'] e insira os caracter que serão disponíveis, como segue na imagem:






No meu caso liberei os seguintes caracteres 'a-zç 0-9~%.:_\- ç ? ! . á à ã â é è ê í ì ó ò ô ú ù ü'.

$config['permitted_uri_chars'] = 'a-zç 0-9~%.:_\- ç ? ! . á à ã â é è ê í ì ó ò ô ú ù ü';

E para finalizar tem que editar a linha $config['enable_query_strings'] para TRUE.









$config['enable_query_strings'] = TRUE;

Com essa opção disponível você poderá criar links com alguns dados das tabelas do banco de dados nos parâmetros das funções, como por exemplo, www.seusite.com.br/controller/function/Título Áçêntòs.

Lembrando que não é possível inserir esses acentos nos nomes dos controllers nem das functions, pelo menos até hoje ainda não conseguir fazer isso. :D

Até a próxima.

quinta-feira, 10 de dezembro de 2009

Como remover o index.php da URL no Codeigniter

Nesse artigo vou tentar ensinar o modo mais simples de remover o nome index.php da URL. Isso além de deixar a URL mais amigável, no meu ponto de vista também pode influênciar em boas práticas de SEO.

1 - É preciso criar um arquivo com o nome "
.htaccess". Pode ser feito até mesmo pelo bloco de notas. Abra o editor e insira o seguinte código:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php/$1 [L]




Após inserir salve ele com o nome .htaccess

Esse arquivo tem que ficar na pasta raiz do site, ou seja na mesma pasta onde se encontra a pasta "system".


Após essa etapa é preciso abrir o arquivo config.php que está localizado do diretório
system\application\config. Ao abrir o arquivo é necessário procurar a linha $config['index_page'] = ""; e $config['uri_protocol'] = "AUTO"; como segue a imagem abaixo.




Caso não funcione pode trocar o "AUTO" pelo "REQUEST_URI", que está marcado na imagem.

Também não pode esquecer de remover o texto index.php da linha $config['base_url']. E caso o site já esteja pronto ou quase pronto lembre-se de remover o index.php dos href, porém mesmo assim funciona.

O que no meu ponto de vista creio que ajuda no SEO, é fazer palavras compostas com os nomes dos controller juntando com as function e principalmente com seus parâmetros, que para melhorar ainda mais, podem suportar palavras com acentos e - (hífens) para aumentar a relevância da URL e deixá-las mais dinâmicas. Sem contar que seria ótimo se escolhecem palavras-chaves que contenham no corpo do site, pricipalmente em strong, a, h1, h2... title, entre outras.

É isso.