titolo ->come creare un generatore di sitemap in php
  • Pneumatici
  • Europcar IT
  • OBSBOT DE
  • OBSBOT DE
  • Tappeto.it
  • OBSBOT DE
  • OBSBOT DE
  • Caffè Vergnano
  • OBSBOT DE
  • Pneumatici
  • Pneumatici
  • Europcar IT

Come creare un generatore di sitemap in php

Ciao , se sei giunto qui stai cercando un modo veloce per realizzare il tuo sitemap xml per l'indicizzazione del tuo sito.

Io ti propongo la mia strada, utilizzando PHP , facile veloce e senza  troppi sbattimenti.

La prima cosa da fare è  impostare le variabili globali che ci serviranno per far girare il tutto.


$blist = array();
$pagina = "";
// Inizializza l'output come XML
header("Content-Type: application/xml; charset=utf-8");

// Stampa l'intestazione del file sitemap
$pagina .= '' . "";
$pagina .= 'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xhtml="http://www.w3.org/1999/xhtml"
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">' . "";

come puoi vedere abbiamo creato una Array List ($blist) che ci servirà per inserire le pagine che decideremo di non far apparire nel nostro Sitemap XML, dopo abbiamo creato $pagina che è la variabile che conterrà tutto ciò che andreamo a "stampare" a schermo alla fine. 

nel codice appena visualizzato puoi vedere anche che abbiamo impostato l'header della pagina che ci consentirà di determinare il fomrato del file che visualizzeremo cosi il browser può interpretarlo come tale anche se stiamo aprendo una pagina php.

Come puoi vedere ho inserito già i primi dati nella variabile $page , questi sono le intestazione del file xml con la formattazione xmlns standard.

Adesso vediamo come estrarre le informazioni dalla pagina del nostro sito. Sempre nel nostro file php creiamo una funzione con 2 campi variabili $url e $blacklist , questi ci serviranno per inviare alla funzione l'indirizzo che vogliamo venga analizzato e la lista di indirizzi da saltare durante l'analisi che potrebbero essere bloccanti o non consentiti nei motori di ricerca.

Ora ti descrivo passaggio per passaggio il loro utilizzo commentando ogni rige.

// Funzione per generare le URL del sito
function generateSiteMap($url,$blacklist){
$dom = new DOMDocument(); //creiamo un documento virtuale

$lista= array(""); // creiamo un array vuoto dove metteremo dentro tutti i link buoni
$res = "";      // creiamo la variabile che conterra il risultato di tutto

$html = file_get_contents($url); //sfruttiamo php8 per generare il contenuto html                                   della pagina

@$dom->loadHTML($html); //inseriamo il contenuto estratto nel documento già creato

$links = $dom->getElementsByTagName('a'); //generiamo un array con tutti gli elementi                                       del documento (genericamente usati in html per                                             i link)

a questo punto abbiamo la lista completa dei link contenuti nella pagina inserita nella variabile $url , non ci resta che inserirla in un ciclo per applicare qualche filtro e generare l'url definitivo.


foreach ($links as $link){
$href = $link->getAttribute('href'); //estraiamo l'attributo href dai link generati                                             prima

if (strpos($href, 'http') === false) {    // applichiamo un filtro che determina se                                              siano realmente link

$href = rtrim($url, '/') . '/' . ltrim($href, '/'); // Se l'URL è relativo, crea                                                        l'URL assoluto

}
if(!in_array(htmlspecialchars($href),$lista)){ //qui applichiamo il filtro per evitare                                                  i doppioni
$lista[]=htmlspecialchars($href);
}
}

a schelta possiamo inserire tutti i tipi di filtri che ci possono tornare utili questi per ore sono solo gli essenziali.

Perfetto ora abbiamo quasi finito ci manca solo di impostare come dovranno essere renderizzati i risultati.. per fare ciò faremo un ultimo ciclo che estrae i dati dall'arrai $lista e inserirà nella variabile $res quello che dovra essere visualizzato .


for ($i = 1; $i < count($lista); $i++) { //cicliamo il contenuto della $lista

if(!in_array($lista[$i],$blacklist)){ //verifichiamo la presenza dei link nella                                          blacklist se coincidono lo saltiamo

if (str_contains($lista[$i], $url)) { //stampiamo solo link interni al dominio

$res .= '' . "";
$res .= '' . $lista[$i] . '' . "";
$res .= '' . date('c', time()) . '' . "";
$res .= 'daily' . ""; // Frequenza di aggiornamento
$res .= '1.0000' . ""; // Priorità (0.0 - 1.0)
$res .= '' . "";
}
}
}
return $res ;    //rispondiamo alla funzione con tutto il contenuto di $res .
}​

a questo punto fuori dalla funzione non ci resta che creare la nostra BlakList , se ci serve, e richiamare la funzione per stampare il contenuto di tutto con 3 semplici righe.. 

aggiungiamo indirizzi alla nostra blacklist,

$blist[] = "https://www.telegram.com";
$blist[] = "https://www.facebook.com/";
$blist[] = "www.linkedin.com";​

chimiamo la funzione e stampiamo a schermo il risultato.


// Chiama la funzione per generare le URL del sito
$baseURL = 'https://www.fabiodirauso.it'; // Sostituisci con il tuo URL del sito
$pagina .= generateSiteMap($baseURL,$blist);

// Chiudi il tag dell'elemento urlset
$pagina .= '';
echo $pagina ;​

se vogliamo possiamo far in modo che venga aggiornato anche un file fisico ad ogni chiamata , il classico sitemap.xml

$open = fopen("../sitemap.xml","w+");
fwrite($open, $pagina);

fine.. salviamo e publichiamo sul nostro server il file in php appena creato.. 

il risultato quando andremo a chiamarlo sarà questo.. 

Se non vuoi scrivere tutot il codice clicca sul link qui sotto.

Scarica il file gia pronto

ora che ne dici , ci meritiamo un cafè ? 

Linkedin

Potrebbero interessarti

Batterie al Grafene

Il grafene è un materiale bidimensionale costituito da un singolo strato di atomi ...

Leggi ->

Recensione Multimetro Tesmen TM-510: Precisione a basso costo

Tesmen TM-510: Il Multimetro Perfetto per l'Appassionato del Fai-da-Te ...

Leggi ->

Cosa è il POE (Power over Ethernet)

Il PoE è una tecnologia che consente di trasm ...

Leggi ->

Recensione Kenwood KVL4100S Chef XL

La Kenwood KVL4100S è una planetaria di alta qualità che offre prestazioni eccell ...

Leggi ->

Casa sotto controllo con Shelly pro4PM

Shelly Pro 4PM è ...

Leggi ->

Registrare lo schermo di Android senza app esterne

Registrare lo schermo di Android senza app esterne: una guida completa ...

Leggi ->

Recensione Pannello Solare Portatile AllPower SP027

Il pannello solare portatile AllPower SP027 è una soluzione ecologica e innovativ ...

Leggi ->

Consigli per scrivere un CV efficace nel 2024

Il tuo CV è la tua porta d'accesso al mondo del lavoro. Un CV ben scritto e ...

Leggi ->

Recensione BISSELL SpotClean Pro

La pulizia degli interni della casa è una delle attività domestiche più cruciali ...

Leggi ->
  • Europcar IT
  • OBSBOT DE
  • Caffè Vergnano
  • OBSBOT DE
  • Pneumatici
  • OBSBOT DE
  • OBSBOT DE
  • Europcar IT
  • Tappeto.it
  • Pneumatici
  • OBSBOT DE
  • Pneumatici