Dinamik CSS ve Javascript

3 Cevap php

How does one create Dynamic CSS and JavaScript On-The-Fly (using PHP). This needs to be done as different pages have different set of elements sometimes, so wrapping and sending a large CSS/JS everytime would be overkill. And why do many sites have link tags like this:

<link rel='stylesheet' type='text/css' href='css/style.css?pg_id=43&post=62'>

Nasıl CSS GET parametreleri bilmek geliyor?

Bu URL yeniden yazma veya başlık işlevini kullanarak içerebilir yana, kısa örnekler veriniz

3 Cevap

Yani, burada alabilir birkaç farklı yaklaşımlar var. Eğer apache virtualhost dosyalara erişimi varsa Birincisi, bir php yorumlayıcısı tarafından okunacak CSS ayarlayabilirsiniz. Ben hiç yapmamıştım ve tam olarak bunu tavsiye etmem ama bir örnek:

<VirtualHost *:80>
  AddType application/x-httpd-php .css
</VirtualHost>

Bu. Htaccess dosyasına da yapılabilir.

Alternatif olarak, sizin gibi bir bağlantı yapabilirsiniz

<link rel='stylesheet' type='text/css' href='css/style.php?pg_id=43&post=62'>

ve koyun

<?php header("Content-type: text/css"); ?>

ilk satır olarak.

Ben Vinicius 'tekniği olarak kabul etmedim ama bu çok avantajları ve dezavantajları kendi belirledi şüphe yok.

PS - bazen değişkenler önbelleğe alma amaçlı kullanımları vardır GET (ya da aslında benzeri php ile css link mevcut unix zaman damgası ekleyerek önbelleğe önlemek için

<link href="style.css?<?php echo time()" type="text/css" rel="stylesheet" />

A. CSS veya. Js dosyasına bir isteği kullanarak bir PHP komut dosyası yönlendirilebilir, örneğin, bir. Htaccess (Apache), yani src özniteliği "style.css" olsa bile, aslında bir PHP script kullanıcıya yanıt.

CSS ve JavaScript dosyaları önbelleğe alınır, ben onlar boyutu> 200KB kadar sürece farklı stil sayfaları / js dosyaları hizmet tavsiye etmem.

Ve evet, sürece o dosya için doğru Content-Type döner gibi parametreleri ile herhangi bir sunucu tarafı sayfasını (. Php veya ne olursa olsun uzantısı) başvuruda bulunabilir.

Sidenote: parametreleri varsa ve dinamik bu şekilde dosya vermekteyiz Genellikle, ben bunu yapmak için onu kurmak sürece otomatik olarak önbelleğe olmayacak inanıyorum.

Basit bir örnek:

<link rel="stylesheet" type="text/css" href="/css.php?color=wide-red">

<?php
header('Content-Type', 'text/css; charset=utf-8');
$colorScheme = (string)$_GET['color'];

switch ( $colorScheme ) {
    case 'wide-red':
       $bgColor = 'c0c0c0';
       $fgColor = 'ffffff';
       $width = '1280px';
    break;

    case 'normal-gray':
       $bgColor = '333333';
       $fgColor = 'ffffff';
       $width = '960px';
    }
    break;

}
?>
body { 
   background:<?php echo $bgColor;?>;
   color:<?php echo $fgColor;?>;
   width:<?php echo $width;?>;
}

Sen yankı kullanabilirsiniz, bir çiftleşmiş sistemini kullanabilirsiniz, size file_get_contents diğer css dosyaları indirebiliriz, önemli şey, hiçbir parametre verilirse, doğru Content-Type göndermek doğru parametreleri yakala ve varsayılan bir son çare olması gerekir olduğunu.