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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top