Dinamik Meta Etiket Alanı
Merhaba, bir web site yaptım ve bu sitede hiç dinamik alan yok bu yüzden veritabanı kullanma gereği duymadım, sorum şu bir header dosyası var ve meta etiketlerim burada ve bu header dosyasını her sayfada kullanıyorum, google snippet'larını ayarlayabilmek için burada ki meta etiketlerini düzenleyeceğim ancak her sayfa için ayrı olması gerekiyor, normalde dinamik hale getirip veritabanından verileri çekerek halledebiliyordum, bu işlemi veritabanı kullanmadan nasıl yapacağım?
Bir php dosyası (örn. metatags.php) hazırla. Bu dosya, her sayfan için meta etiketleri verilerini içeren bir array'e sahip olsun. Header dosyana bu dosyayı include et.
URL'i parçalayıp dizi içinden bu sayfaya gelecek meta etiken verilerini bul ve ilgili değişkenleri bu verilerle doldur.
Nasıl bir routing yaptığına göre değişir ama ben basitçe bir örnek yazıyorum:
metatags.php
<?php
$allMetaTags = [
"--default--" => (object)["title"=>"Site Adı", "description"=>"..."], // Bu diziye eklemediğimiz bir sayfa olursa varsayılan olarak göstereceğimiz veriler
"index.php" => (object)["title"=>"Ana Sayfa", "description"=>"..."],
"hakkimizda.php" => (object)["title"=>"Hakkımızda", "description"=>"..."],
"iletisim.php" => (object)["title"=>"İletişim", "description"=>"..."],
"listeleme/index.php" => (object)["title"=>"Ürün Listesi", "description"=>"..."],
//...
];
// Bazı key'leri birbirine bağlamamız gerekebilir.
$allMetaTags[""] = &$allMetaTags["index.php"]; // "https://siteadi.com/index.php" ile "https://siteadi.com" istekleri aynı sayfayı işaret eder.
$allMetaTags["listeleme"] = &$allMetaTags["listeleme/index.php"]; // "https://siteadi.com/listeleme/index.php" ile "https://siteadi.com/listeleme" istekleri aynı sayfayı işaret eder.
$allMetaTags["listeleme/detaylar.php"] = &$allMetaTags["listeleme/index.php"]; // Kafamıza göre bazı sayfaların başka sayfalarla aynı meta verilerine sahip olmasını da isteyebiliriz.
header.php
<?php
require_once("metatags.php");
$urlParts = parse_url($_SERVER['REQUEST_URI']); // Örneğin "https://siteadi.com/hakkimizda.php" gibi bir url'yi parçaladık.
$fileName = trim($urlParts['path'], '/'); // "https://siteadi.com/hakkimizda.php" gibi bir url için dosya adını ("hakkimizda.php") almış olacağız.
$metaTags = array_key_exists($fileName, $allMetaTags) ? $allMetaTags[$fileName] : $allMetaTags['--default--']; // Dosya adını dizimizin key'lerinde bulabilirsek onun verilerini kullanacağız. Bulamazsak "--default--" key'indeki verileri kullanacağız.
?>
<head>
<title><?= $metaTags->title ?></title>
<meta name="description" content="<?= $metaTags->description ?>">
</head>
Not: Kodları test etmedim. Yazım yanlışlarım olabilir.