v2.5.2
Giriş yap

Php İle Her Sayfaya Farklı Başlık

ynscnr55
905 defa görüntülendi ve 1 kişi tarafından değerlendirildi

Merhabalar PHP ile kodlanmış bir web sitem var ve sabit title verisi kullanılıyor. Sayfa değiştikçe başlığında değişmesini istiyorum. Örneğin Bilgi Bankası sayfasına girildiğinde Başlıkta Bilgi Bankası ve site title yazacak. Nasıl olur bir fikriniz var mı ?

Cevap yaz
Cevaplar (5)
emmir2
740 gün önce

Kısa ve öz olarak

 function meta_degistir($icerik) {
      global  $_title, $_description;
      $icerik = str_replace('[$_title]', $_title, $icerik);
      $icerik = str_replace('[$_description]', $_description, $icerik);
      return $icerik;
    }
    ob_start('meta_degistir');
$_title         =  "Başlık";
$_description   =  "Açıklama";

<title>[$_title]</title>
<meta name="description" content="[$_description]">
rephp7
739 gün önce

@ynscnr55,
şu yazımın yanlış:
<?=(isset($pageTitle) ? $pageTitle : '<?php echo $ayarcek["ayar_title"];?>')?>

php kodunu başlatmışken (if-else nin kısa yazımını) else kısmında tek tırnaklı tekrar php eco yazılmaz ondan diğer sayfalarda başlığın kod olarak görünüyor.
şöyle dene:
<?= isset($pageTitle) ? $pageTitle : $ayarcek["ayar_title"];?>

ynscnr55
740 gün önce

Ben site başlığını php ile çektiriyorum. Yani sizin verdiğiniz kodlarla bireştirince şu şekil oluyor.

    <?=(isset($pageTitle) ? $pageTitle : '<?php echo $ayarcek["ayar_title"];?>')?>

Bu şekil yaptığımda index.php dosyasının başlığı php kod olarak gözüküyor. Hakkımızda sayfası ise evet $pagetitle değişkenini çekiyor :)

ynscnr55
740 gün önce

Öncelikle geç cevap verdiğim için kusuruma bakmayın. Olay tam da dediğiniz gibi php ile yazılmış site hocam. Header ve footer dosyalarını her sayfada çağırıyorum. Sizin dediğinizi uygulayacağım şimdi. Muhtemelen anlattığınız gibi yapınca çalışacaktır. Hemen deniyorum

ebykdrms
741 gün önce

Merhaba. Dosya yapınızı bilmiyorum. Sayfaların uzantısı .php mi yoksa .html mi? Sayfa yönlendirmeleri nasıl yapılmış? Projeyi görmeden net cevap vermek zor.
Varsayımsal bir örnek üzerinden gidelim. Diyelim ki kök klasörünüzde şöyle bir dosyalama yapılmış:

  • index.php (anasayfanız)
  • hakkimizda.php
  • iletisim.php
  • template klasöründe: head.php, foot.php
  • styles klasöründe: anasayfa.css, hakkimizda.css, iletisim.css
  • scripts klasöründe: jquery.min.js, anasayfa.js, hakkimizda.js, iletisim.js
    Tüm sayfalarda sabit title kullanıldığına göre tahmin ediyorum ki tüm sitenin tüm sayfaları şöyle kurgulanmış:
    Örneğin hakkimizda.php:
    <?php include("template/head.php"); ?>
    <link rel="stylesheet" href="styles/hakkimizda.css" />
    <h1>Hakkımızda Sayfası</h1>
    <p>Hakkımızda sayfasının içeriği</p>
    <script src="scripts/jquery.min.js"></script>
    <script src="scripts/hakkimizda.js"></script>
    <?php include("template/foot.php"); ?>
    

    Yani her sayfa önce head.php dosyasını include ediyor. Sonra kendi içeriğini bulunduruyor. Sonra da foot.php dosyasını include ediyor.
    Haliyle aynı head.php dosyası her sayfada aynı şekilde göründüğünden, <title></title> da her sayfada aynı oluyor.
    template/head.php:

    <html>
      <head>
          <title>Site Başlığı</title>
      </head>
      <body>
          <section id="contentPlaceHolder">
    

    template/foot.php:

          </section>
      </body>
    </html>
    

    Tabi bu sıralamada hakkimizda.php dosyasının içeriği head.php dosyasının içeriğinden sonra geldiği için hakkimizda.php dosyasında oluşturacağınız bir değişkenle head.php dosyasına etki edemiyorsunuz.
    Bu sorunu aşmak için kök dizininizde controller adında bir klasör oluşturun ve içine sayfalarınızla aynı isimde php dosyaları oluşturun:

  • controller
    • anasayfa.php (index.php'nin controller'ı)
    • hakkimizda.php
    • iletisim.php

Ve hakkimizda.php sayfanızın içeriğini şu şekilde güncelleyin:

<?php include("controller/hakkimizda.php"); ?>
<?php include("template/head.php"); ?>
<link rel="stylesheet" href="styles/hakkimizda.css" />
<h1>Hakkımızda Sayfası</h1>
<p>Hakkımızda sayfasının içeriği</p>
<script src="scripts/jquery.min.js"></script>
<script src="scripts/hakkimizda.js"></script>
<?php include("template/foot.php"); ?>

Sayfanızın başına controller/hakkimizda.php dosyasını include etmiş oldunuz. Bu controller dosyası sayfanın en başında çağırıldığı için burada oluşturacağınız değişkenleri template/head.php dosyanızdan da okuyabileceksiniz. Mesela controller'ınızın içine şunları yazın:
controller/hakkimizda.php

<?php
    $pageTitle = "Hakkımızda Sayfası";

Sonra da template/head.php dosyanızdaki <title> alanını güncelleyin:

<html>
    <head>
        <title><?=(isset($pageTitle) ? $pageTitle : "Site Başlığı")?></title>
    </head>
    <body>
        <section id="contentPlaceHolder">

Yani demiş oldunuz ki: Eğer $pageTitle adında bir değişken varsa buraya onu yaz. Yoksa "Site Başlığı" yaz.