Ir ao conteúdo

Gerador de URL's


joseRenato

Posts recomendados

Postado

Olá.

Estou com o meu CMS pronto, falta apenas essa parte, e não sei como proceder...

O titulo do post, esta linkado para um pagina apenas com aquele post, cometários etc...

Como fazer isso ? alguém poderia me dar um norte ?

  • Moderador
Postado

Olá,

quando for exibir os posts, no título coloque o endereço do post.. não tem mistério..

agora o que precisas fazer é usar url amigável para deixar como o nosso forum aqui o endereço amigável...

Postado

quando for exibir os posts, no título coloque o endereço do post.. não tem mistério..

Não entendi muito bem isto...

Como assim o endereço do post ? no meu caso, eles estão em uma tabela...

  • Moderador
Postado

Então,

para gerar uma url amigável eu costumo usar uma função.

Função PHP:


/* Obtém o input, e desfaz-se dos caracteres indesejados */
function url_amigavel($input,$substitui = '-',$remover_palavras = true,$array_palavras = array())
{
//Colocar em minúsculas, remover a pontuação
$resultado = trim(ereg_replace(' +',' ',preg_replace('/[^a-zA-Z0-9\s]/','',strtolower($input))));

//Remover as palavras que não ajudam no SEO
if($remover_palavras) { $resultado = remover_palavras($resultado,$substitui,$array_palavras); }

//Converte os espaços para o que o utilizador quiser.. Normalmente um hífen ou um underline
return str_replace(' ',$substitui,$resultado);
}

function remover_palavras($input,$substitui,$array_palavras = array(),$palavras_unicas = true)
{
//Separar todas as palavras baseadas em espaços
$array_entrada = explode(' ',$input);

//Criar o array de saída
$resultado = array();

//Faz-se um loop às palavras, remove-se as palavras indesejadas e mantém-se as que interessam
foreach($array_entrada as $palavra)
{
if(!in_array($palavra,$array_palavras) && ($palavras_unica ? !in_array($palavra,$resultado) : true))
{
$resultado[] = $palavra;
}
}

return implode($substitui,$resultado);
}

Utilização:



$palavras_indesejadas = array('a','um','de','o','é','à','com','pode','da','porque','não');
echo url_amigavel('Como gerar url amigável no PHP','-',true,$palavras_indesejadas);
//Resultado: como-gerar-url-amigavel-no-php

echo url_amigavel('MooTools outra vez? Porque não apenas jQuery?','-',true,$palavras_indesejadas);
//Resultado :: mootools-outra-vez-apenas-jquery

echo url_amigavel('Um euro poupado é um euro ganho','-',true,$palavras_indesejadas);
//Resultado :: euro-poupado-ganho

Explicação:

A função aceita 4 variáveis:

  • $input – string – será o URL Amigável, no seu caso, o título da post
  • $substitui – string – o caractére a substituir, o separador, normalmente um hífen ou um underscore
  • $remover_palavras – boolean – remove palavras específicas, as que não fazem diferença em SEO ( true ou false)
  • $array_palavras – array – um array de palavras que deve ser removido do URL porque não ajudam em SEO (exemplo: de, e, o, a, etc…)

Att,

Dif

Postado

Hmm, a parte de URL amigáveis eu tinha entendido, mas mesmo assim, valeu pelas dicas...

Só que antes de customizar a url, eu teria que criar uma pagina para aquele post, talvez você tenha entendido errado, ou eu que não me especifiquei bem....

mas a minha duvida, era de como criar uma PAGINA automática(com HTML, Estilo etc) apenas para aquele post, e claro, gerar uma URL.

por exemplo :

tenho dados no meu banco, com CMS eles aparecem no meu site em uma unica pagina, ou seja, um post abaixo do outro... ai eu queria linkar no titulo(ou em qualquer outra referencia) uma pagina apenas para aquele post, para ter mais detalhes sobre o post(ex : comentários, compartilhar em rede sociais etc), e consequentemente gerar uma URL para aquela pagina(A url iria mudar de acordo com o titulo do post)

  • Moderador
Postado

Então,

antes de tudo... deves lembrar que seu link do post normal ficaria algo parecido com isso:

seusite.com.br/posts.php?id=10

essa pagina "posts.php" seria a responsável por mostrar o post exclusivo...

se usasse a url amigável, o mesmo poderia ficar:

seusite.com.br/posts/10

Para fazer isso é preciso criar uma regra no arquivo .htaccess.

Supondo agora, que você não queira pegar o TAL post pela ID, mas sim pelo título do post.

neste caso a url normal ficaria algo assim:

seusite.com.br/posts.php?titulo=criando%20uma%20url%20amigavel%20no%20no%20php

esse "%20" equivale ao "espaço" entre as palavras.. é gerado quando se usa a função urlencode()

agora utilizando a função acima, você não precisa usar a urlencode(), basta colocar a variável que recebe o título como primeiro parâmetro da função..

então usando a regra no .htaccess e a função.. podes gerar uma página de exibição do post com o seguinte endereço:

seusite.com.br/posts/criando-uma-url-amigavel-no-php

seria +- isso.

Postado

Hmmmmmm....

E como eu faço por exemplo, pra mostrar cada post em uma outra pagina pela ID ?

Hmmmmmm....

E como eu faço por exemplo, pra mostrar cada post em uma outra pagina pela ID ?

Consegui!

functions.php :


function getPosts() {
$query = mysql_query("SELECT * FROM posts") or die(mysql_error());
while($post = mysql_fetch_assoc($query)) {
echo "<div id='all'><h2 id='rs'>"
."<a href=\"vizualizarposts.php?id=" . $post['ID'] . "\">" .$post['Title']. "</a>".
"</h2>".
"<div id='content'>" .$post['Content']. "</div>".
"<span id='por'> By -". "</span>" . "<h3 id='rs2'>"
.$post['Author']. " </h3> "
.$post['Category_ID']. "</div> <br /> <br />";
}
}

vizualizarposts.php:


<?php
include('includes/functions.php');
$id = $_GET['id'];
$select = mysql_query("SELECT * FROM posts WHERE ID = $id ");
while($post = mysql_fetch_assoc($select)) {
echo "<div id='all'><h2 id='rs'>"
."<a href=\"vizualizarposts.php?id=" . $post['ID'] . "\">" .$post['Title']. "</a>".
"</h2>".
"<div id='content'>" .$post['Content']. "</div>".
"<span id='por'> By -". "</span>" . "<h3 id='rs2'>"
.$post['Author']. " </h3> "
.$post['Category_ID']. "</div> <br /> <br />";
}
?>

Sim, isso funciona, agora é só usar as URL's amigáveis

  • Moderador
Postado

Então,

agora basta usar a função que passei mais acima assim:




$url = url_amigavel("$post['Title']","-",false);

"<a href=\"vizualizarposts.php?id=" . $post['ID'] . "\">" .$url. "</a>".

faça isso nos dois( visualizarposts.php e functions.php)

Att,

Dif

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!