PHP PDO ile Dinamik Sitemap.xml Oluşturma

PHP
Görüntülenme : 400 14 Kasım 2022

Merhabalar arkadaşlar bugün sizlere benim de kullanmış dinamik sitemap.php dosyasını sizlere nasıl yapıldığını ve kullanımını göstereceğim.

<?php
include 'config.php'; ## Burada config dosyamızın yani veritabanı bağlantısı yapılan dosyamızı çağırıyoruz isterseniz direk olarak sayfa üzerindede bağlantı yapabilirsiniz.Ben direkt olarak include ettim sayfayı.
## Xml olarak göstermek için girilen komut
header("Content-Type: text/xml");
## Sitemap Bilgileri
echo '<?xml version="1.0" encoding="UTF-8"?>';
echo '
<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">
';
## Site Menüleri 
## Menüler dinamik değil el ile girdim çünkü benm veritabımda menüler isminde bir tablo yoktu zaten sitede menü de olmadığı için el ile girmek daha makul gözüktü
echo '
	<url>
			 <loc>https://snrtr.com/</loc>
			 <lastmod>'.date("Y").'-'.date("m").'-'.date("d").'T'.date("H:i:s").'+00:00</lastmod>
			 <changefreq>daily</changefreq>
			 <priority>0.5000</priority>
	</url>
		<url>
			 <loc>https://snrtr.com/hakkimda</loc>
			 <lastmod>'.date("Y").'-'.date("m").'-'.date("d").'T'.date("H:i:s").'+00:00</lastmod>
			 <changefreq>daily</changefreq>
			 <priority>0.8000</priority>
	</url>
	<url>
			 <loc>https://snrtr.com/iletisim</loc>
			 <lastmod>'.date("Y").'-'.date("m").'-'.date("d").'T'.date("H:i:s").'+00:00</lastmod>
			 <changefreq>daily</changefreq>
			 <priority>0.8000</priority>
	</url>
';
## Makaleleri Listele 
## Bu alanda ise PDO ile verilerimizi veritabanından çekiyoruz Bu alanda değişeceğiniz yerler.
## Tablo adınızı girmelisiniz eğerki sitenizde bir şart var ise onu girmelisiniz benim sitemde yazı_onay=0 olan yazıları göstermediğim için bir şart belirledim sizlerde şart yoksa kaldırabilirsiniz.
## yazi_id yazan yere ise çekeceğiniz verilerin id sinin bulunduğu sutunun ismini giriniz.
$yazisor=$db->prepare("SELECT * FROM tablo_adi where yazi_onay=:yazi_onay ORDER BY yazi_id DESC");
$yazisor->execute(array(
	'yazi_onay' => 1
	));
	while($yazicek=$yazisor->fetch(PDO::FETCH_ASSOC)){
## Alttaki alanda ise değişeceğiniz yerler ise seo ve yazi_id kısımları bunları neye göre değişeim diye soracaksanız
## Sitenizde bulunan yazılara nasıl eriştiğiniz yani adres satırında nasıl gözüktüğüne bakarak bu ayarlamaları gerçekleştireceksiniz.
## Benim yazılarımda kullanmış olduğum seo ve sonuna eklenen yazi_id olduğu için bu alanı bu şekilde modifiye etttim.
## Tüm ayarlamaları doğru bir şekilde yaparsanız dosyamız sorunsuz bir şekilde çalışacaktır.
echo'
	<url>
		 <loc>https://snrtr.com/'.$yazicek["seo"]."-".$yazicek["yazi_id"].'</loc> 
		 <lastmod>'.date("Y").'-'.date("m").'-'.date("d").'T'.date("H:i:s").'+00:00</lastmod>
		 <changefreq>daily</changefreq>
		 <priority>0.5000</priority>
	</url>
';
}
echo '</urlset>';
?>

Bundan sonra ise yapacağınız tek işlem .htacces dosyanıza şu kodu yapıştırmanızdır.

RewriteRule ^sitemap.xml$ sitemap.php [NC,L]

Bu kodun yazmamızın amacı ise sitemap.php dosyanıza sitemap.xml olarak yönlendirme yapmaktır.