php header.php de her sayfada gereksiz css dosyalarını nasıl ayrıştırabilirim
php bir site her kategoride farklı css ve js dosyaları çalışıyor
header.php ayırınca her sayfada css dosyaları çağrılmış oluyor.
mesela haberler.php stil yapısı haber.css barındırıyor
<link id="stylecall" rel="stylesheet" href="./css/haber.css?v=1" />
ama oyunlar.php de haber.css yüklenmesi boşyere olmuş oluyor
yani sayfaya göre css dosyası çağırmak nasıl yapılır?
title olayını $title = ""; değişken oluşturup sayfaya göre title girebiliyorum
ama style dosylarını nasıl yapmak lazım çözemedem
yani haberler.php
<?php
$title = "Güncel Haberler";
include (header.php);
?>
header.php yide
<?php
<title><?=$title;?></title>
?>
Alında title ile aynı yöntemle yapabilirsiniz.
Hatta aslında bir masterpage oluşturup sayfalarınızı buraya aktarmanız daha da güzel olur.
Böylece header.php, footer.php gibi ayrımlara gitmek zorunda kalmaz ve PHP-HTML ayrımını güçlendirmiş, MVC mantığına yaklaşmış olursunuz.
View sayfanıza göndereceğiniz verileri kendinizce organize edeceğiniz bir değişkene aktarın.
haber.php
$viewBag = [
'page' => "haber.php",
'title' => "Güncel Haberler",
'headTags' => [
'<link id="stylecall" rel="stylesheet" href="./css/haber.css" />',
'<link id="stylecall" rel="stylesheet" href="./css/baska.css" />'
],
'footTags' => [
'<script src="./js/haber.js"></script>',
'<div>İstenen herhangi bir kod</div>'
]
];
include("masterpage.php");
masterpage.php
<html>
<head>
<title><?=$viewBag['title']?></title>
<link id="stylecall" rel="stylesheet" href="./css/master.css" />
<?=implode($viewBag['headTags'])?>
</head>
<body>
<?php include($viewBag['page']) ?>
<script src="./js/jquery3.min.js"></script>
<script src="./js/master.js"></script>
<?=implode($viewBag['footTags'])?>
</body>
</html>
masterpage.php'de kullandığınız tüm $viewBag
key'lerini haber.php gibi sayfalarınızda oluşturmalısınız. Mesela haber.php'de footTags kısmına bi'şey eklemek istemiyorsanız bile footTags key'ini oluşturup boş dizi göndermelisiniz. Bu masterpage için bir standart oluşturmuş olacaksınız.