Dinâmica CSS e Javascript
-
07-07-2019 - |
Pergunta
Como é que se cria dinâmica CSS e JavaScript On-The-Fly (usando PHP). Isso precisa ser feito como páginas diferentes têm diferente conjunto de elementos, por vezes, por isso, acondicionamento e envio de uma grande CSS / JS toda vez que seria um exagero. E por que muitos sites têm tags de link como este:
<link rel='stylesheet' type='text/css' href='css/style.css?pg_id=43&post=62'>
Como é que a CSS vir a conhecer os parâmetros GET?
Uma vez que este pode envolver a reescrita de URL ou usando a função de cabeçalho, por favor fornecer exemplos curtos
Solução
Assim, há algumas abordagens diferentes que você pode tomar aqui. Primeiro, se você tem acesso a arquivos VirtualHost do apache, você pode definir CSS para ser lido por um interpretador de php. Eu nunca fiz isso e não tomaria exatamente recomendar mas um exemplo é:
<VirtualHost *:80>
AddType application/x-httpd-php .css
</VirtualHost>
Isso também pode ser feito em seu arquivo .htaccess.
Como alternativa, você pode fazer um link como
<link rel='stylesheet' type='text/css' href='css/style.php?pg_id=43&post=62'>
e colocar
<?php header("Content-type: text/css"); ?>
como a primeira linha.
Eu nunca considerada técnica Vinicius', mas eu não tenho dúvida de que tem seu próprio conjunto de vantagens e desvantagens também.
PS - às vezes GET variáveis ??são usos para fins de cache (ou na verdade para evitar o cache anexando o timestamp Unix para o link css com php como
<link href="style.css?<?php echo time()" type="text/css" rel="stylesheet" />
Outras dicas
Um pedido para um arquivo css ou js pode ser redirecionado para um script PHP usando, por exemplo, um .htaccess (em Apache), por isso mesmo se o atributo src é "style.css", é na verdade um PHP script que está respondendo para o usuário.
Seu arquivos CSS e JavaScript são armazenados em cache, eu não recomendaria servindo diferentes folhas de estilo / js a menos que forem> 200 KB ou menos em tamanho.
E sim, você pode fazer referência a qualquer página do lado do servidor com os parâmetros (.php ou qualquer extensão), desde que ele retorna a correta Content-Type para esse arquivo.
Observação: geralmente, se você tem parâmetros e estão servindo dinamicamente arquivos dessa maneira, eu acredito que eles não serão armazenados em cache automaticamente, a menos que você configurá-lo para fazê-lo
.Um exemplo simples:
<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;?>;
}
Você pode usar echo, você pode usar um sistema de templates, você pode puxar em outros arquivos CSS com file_get_contents, principal coisa é que você precisa para enviar o direito Content-Type, pegue os parâmetros corretos e ter um fallback padrão se nenhum parâmetro são dadas.