Gerenciamos sua fanpage no Facebook!!
fechar

Autor: George Tude

George Tude
Informações Detalhadas

Total de Visitas

57084

Seguir Blog

Twitter

Facebook

Como criar um sitemap dinâmico [Avançado]

Autor George Tude relogio12/03/2016

 

 

Os desenvolvedores mais avançados que estão se deparando agora com o SEO (Search Engine Optimization) do seu site já ouviram falar de um arquivo chamado “sitemap”. Para quem não sabe o sitemap é um dos arquivos mais importantes que um site precisa ter para otimizar o mesmo nos mecanismos de busca como o Google.

O sitemap é um arquivo .XML que permite que os mecanismos de pesquisas listem as páginas de seu site e façam uma organização de conteúdo do mesmo. Assim quando os rastreadores da WEB como o Googlebot leem esses arquivos eles podem rastrear o seu site de maneira inteligente.

Então sem mais conversas, vamos aprender como se fazer um sitemap! Para os usuários de sites pequenos, estáticos ou que não contem muitas páginas é um pouco mais simples de se gerar esse arquivo, basta acessar o site xml-sitemaps e preencher o formulário com o seu URL, a frequência que você atualiza o site, a data que as páginas foram publicadas na internet e a prioridade de cada página, porém o próprio site dar um aviso que não é possível gerar um sitemap em um site que contenha mais de 500 páginas!

Dito tudo isso, como fazer para ter um sitemap em um site de 500 páginas sem ter que ta digitando script por script? Muito simples, basta pegar as suas urls dinâmicas de um banco de dados com PHP e gerar um XML e é isso que ensinarei vocês a fazerem agora!

Primeiro devemos criar um banco de dados, no vídeo eu usei um banco que já tinha, já para esse artigo irei criar um banco de dados novo e mais simples, porém com os mesmos exemplos!

Primeiramente criei uma tabela com a seguinte estrutura:

-- phpMyAdmin SQL Dump
-- version 4.1.14
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Generation Time: 13-Mar-2016 às 01:35
-- Versão do servidor: 5.6.17
-- PHP Version: 5.5.12
 
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
 
 
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
 
--
-- Database: `sitemap`
--
 
-- --------------------------------------------------------
 
--
-- Estrutura da tabela `url`
--
 
CREATE TABLE IF NOT EXISTS `url` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `slug` varchar(500) NOT NULL,
  `data` datetime NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
 
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

 

 

Depois de criado a tabela eu criei um arquivo.PHP como o nome de “sitemap.php” e nesse arquivo primeiramente eu fiz uma conexão mysqli com meu banco de dados, para isso usei o script:

 

<?php
$server = "localhost";
$user = "root";
$senha = "";
$banco = "sitemap";
 
$conexao = mysqli_connect($server, $user, $senha, $banco);
$link = $conexao;
?>

 

Entendendo a conexão com o banco de dados

Dentro da tag “PHP” eu criei 4 primeiras variáveis, “server, user, senha e banco” sendo contida dentro da variável “server” o endereço raiz do servidor no meu caso “localhost”, na user o usuário que por padrão é “root” (No servidor local), na variável “senha” não contem nada, visando que por padrão não existe senha (No servidor local) e por último a variável “banco” que contém o nome do banco de dados, no meu caso sitemap. Após adicionar cada elemento dentro de cada variável eu criei a variável “conexao” e nessa variável eu usei o código “mysqli_connect” que é a função responsável por fazer a conexão com o banco de dados e entre () eu coloquei as variáveis com os dados necessários para a conexão, e por fim, por padrão da conexão mysqli eu criei a variável “link” e dentro da mesma coloquei a variável “conexao”.

Após fazer a conexão montei o seguinte script:

 

<?php
$rss = new SimpleXMLElement('<?xml version="1.0" encoding="UTF-8"?><urlset
                xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
    http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
</urlset>');
 
$url = 'https://seusite.com.br';
 
$item = $rss->addChild('url');
$item->addChild('loc', $url);
$item->addChild('lastmod', '2016-03-11T17:07:37+00:00');
$item->addChild('changefreq', 'weekly');
$item->addChild('priority', '1.00');
 
$item = $rss->addChild('url');
$item->addChild('loc', $url.'/contato');
$item->addChild('lastmod', '2016-03-11T17:07:37+00:00');
$item->addChild('changefreq', 'weekly');
$item->addChild('priority', '0.80');
 
$queryBlog = mysqli_query($link, "SELECT * FROM urls ORDER BY id DESC");
while($dadosBlog = mysqli_fetch_assoc($queryBlog)){
                $dia = date('Y-m-d', strtotime($dadosBlog['data']));
                $hora = date('H:i:s', strtotime($dadosBlog['data']));
                $lastMod = $dia.'T'.$hora.'+00:00';
               
                $item = $rss->addChild('url');
                $item->addChild('loc', $url.'/blog/postagem/'.$dadosBlog['slug']);
                $item->addChild('lastmod', $lastMod);
                $item->addChild('changefreq', 'weekly');
                $item->addChild('priority', '0.80');
}
header("Content-type: application/xml; charset=UTF-8");
echo $rss->asXML();
exit;
?>

 

Entendendo o script:

Criei uma variável qualquer e para não me perder coloquei o nome da variável de “rss” e dentro dessa varável coloquei a função “new SimpleXMLElement”. Essa função do PHP permite ler e manipular um arquivo PHP como se fosse um XML. Agora que criamos essa variável toda a mágica ocorrerá dentro dela, e para isso criamos uma variável de nome “item” e dentro dessa variável pegamos a variável “rss” e estamos a função addChild que faz que serve para adicionar um objeto novo a uma lista e no nosso caso a variável “rss”, segundo esse conceito fizemos a parte “estática do site”, após fazer isso apenas foi preciso fazer uma consulto no banco de dados para pegar os slugs dinâmicos e fiz uma while para fazer diversas copias com as informações tiradas do banco de dados, feito todo esse procedimento precisei apenas usar a função “header” para informar ao php que eu quero que toda a página seja exibida como um XML com o decodificado “utf-8”, então dei um echo na variável “rss” setando a função asXML que serve apenas para forçar a leitura do arquivo em XML no nosso script, e por fim demos um exit apenas para finalizar as funções do PHP.

É isso ai, espero que todos tenham entendido, e qualquer dúvida é só deixar nos comentários, não esqueçam de compartilhar em suas redes sociais também! 

Outros Artigos:

Solução WEB e Visual para você!

Comentários

Formas de Pagamento Certificados
Forma de pagamento
Certificados
Certifico SSL Let's Encrypt Authority X3
Site Verificado pelo Google
Site Verificado Norton
Assinar Newsletter
Receba nossa newsletter e fique por dentro de nossas novidades!