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>
?>
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (5)
en basitinden de yazayım sana
if(basename($_SERVER["PHP_SELF"]) == basename("iletisim.php")){
// iletişim php sayfasında gözükür sadece.
<script>alert("selam dünya");</script>
}
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.
//dinamik page.php
```php
$pages = array(
"dashboard.php" => array(
"slug" => "dashboard.php",
"title" => "Dashboard"
),
"product.php" => array(
"slug" => "product.php",
"title" => "Dashboard"
),
//bir sayfada birden fazla ilgili script vc için 2. array örneği
"detail.php" => array(
"slug" => "detail.php",
"title" => "Detail",
"script" => array ("chart"=>"https://cdn.jsdelivr.net/npm/chart.js","analytics"=>"analytics.js"),
"css" => "detail",
"" => "detail",
)
);
require("dynamic_head.php");
//head içinde kendine göre uyarla
<title><?php echo $pages[$base]["title"]; ?></title>
foreach($pages[$base]["script"] as $script_key => $script_val){
if($script_key == "chart"){
echo'<script Content-Type="application/javascript" src="'.$script_val.'"></script>';
}
if($script_key == "analytics"){
echo'<script Content-Type="application/javascript" src="'.$script_val.'"></script>';
}
}
```
bunun için http server dan base kullanarak sayfa adını çek kontrol ederken sonra aslında ilkönce
array oluştur başka bir php isimli
pages = sayfa1 sayfa2
switch pages
case : sayfa1
sayfaya ait css veya js
cepten bukadar bilgisayarı açınca daha düzgün yazarım