Domanda

Come si creano CSS e JavaScript dinamici al volo (usando PHP). Questo deve essere fatto in quanto a volte diverse pagine hanno diversi set di elementi, quindi il wrapping e l'invio di un CSS / JS di grandi dimensioni ogni volta sarebbe eccessivo. E perché molti siti hanno tag di collegamento come questo:

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

Come fa il CSS a conoscere i parametri GET?

Poiché ciò potrebbe comportare la riscrittura degli URL o l'utilizzo della funzione header, fornire brevi esempi

È stato utile?

Soluzione

Quindi, ci sono alcuni approcci diversi che puoi adottare qui. Innanzitutto, se hai accesso ai file virtualhost di apache, puoi impostare CSS per essere letto da un interprete php. Non l'ho mai fatto e non lo consiglierei esattamente, ma un esempio è:

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

Questo può essere fatto anche nel tuo file .htaccess.

In alternativa, puoi creare un link come

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

e metti

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

come prima riga.

Non ho mai considerato la tecnica di Vinicius, ma non dubito che abbia i suoi vantaggi e svantaggi.

PS - a volte le variabili GET sono utilizzate per scopi di memorizzazione nella cache (o effettivamente per impedire la memorizzazione nella cache aggiungendo il timestamp unix corrente al collegamento css con php come

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

Altri suggerimenti

Una richiesta a un file .css o .js può essere reindirizzata a uno script PHP usando, ad esempio, un .htaccess (in Apache), quindi anche se l'attributo src è " style.css " ;, in realtà è un Script PHP che sta rispondendo all'utente.

I tuoi file CSS e Javascript sono memorizzati nella cache, non consiglierei di pubblicare file di fogli di stile / js diversi a meno che non abbiano dimensioni di circa 200 KB.

E sì, puoi fare riferimento a qualsiasi pagina lato server con parametri (.php o qualunque estensione) purché restituisca il Content-Type corretto per quel file.

Sidenote: di solito se si hanno parametri e si stanno offrendo file dinamicamente in questo modo, credo che non verranno memorizzati automaticamente nella cache a meno che non lo si imposti per farlo.

Esempio semplice:

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

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

I tuoi file CSS e Javascript sono memorizzati nella cache, non consiglierei di pubblicare file di fogli di stile / js diversi a meno che non abbiano dimensioni di circa 200 KB.

E sì, puoi fare riferimento a qualsiasi pagina lato server con parametri (.php o qualunque estensione) purché restituisca il Content-Type corretto per quel file.

Sidenote: di solito se si hanno parametri e si stanno offrendo file dinamicamente in questo modo, credo che non verranno memorizzati automaticamente nella cache a meno che non lo si imposti per farlo.

Esempio semplice:

<*>

Puoi usare l'eco, puoi usare un sistema di template, puoi estrarre altri file css con file_get_contents, la cosa fondamentale è che devi inviare il giusto Content-Type, prendere i giusti parametri e avere un fallback predefinito se nessun parametro sono dati.

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;?>; }

Puoi usare l'eco, puoi usare un sistema di template, puoi estrarre altri file css con file_get_contents, la cosa fondamentale è che devi inviare il giusto Content-Type, prendere i giusti parametri e avere un fallback predefinito se nessun parametro sono dati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top