drupal_add_css não funciona
Pergunta
Eu preciso usar drupal_add_css para chamar de estilo para solteiros Drupal 6 páginas. Eu não quero para editar o estilo principal tema uma vez que haverá um conjunto de páginas individuais que toda a necessidade completamente novos estilos -. A folha principal seria enorme se eu colocar tudo lá dentro
Minha solução foi editar a página no modo editor PHP e fazer isso:
<?php
drupal_add_css("/styles/file1.css", "theme");
?>
<div id="newPageContent">stuff here in html</div>
Mas quando eu ver fonte, não há nada lá! Nem mesmo um link CSS quebrado ou qualquer coisa, é apenas recusando-se a adicionar a folha de CSS para a put pacote CSS no cabeçalho da página.
As variações não parece que quer trabalhar:
drupal_add_css($path = '/styles/file1.css', $type = 'module', $media = 'all', $preprocess = TRUE)
Meu modelo é cabeçalho como este, eu não mudei nada do padrão diferente de adicionar um JavaScript personalizado.
<head>
<?php print $head ?>
<title><?php print $head_title ?></title>
<?php print $styles ?>
<?php print $scripts ?>
<script type="text/javascript" src="<?php print base_path() ?>misc/askme.js"></script>
<!--[if lt IE 7]>
<?php print phptemplate_get_ie_styles(); ?>
<![endif]-->
</head>
Por que esta função não está funcionando?
Solução 5
A resposta foi muito de usar a CSS Injector módulo - pequeno grande addon!
Aqui está um trecho de sua página do projeto:
Permite aos administradores para injetar CSS para a saída da página com base em regras configuráveis. É útil para adicionar ajustes de CSS simples sem modificar tema oficial de um site. O CSS é adicionado usando drupal_add_css padrão do Drupal () e aspectos da página em cache, etc. Os aproveita 2.x Brach CTools tão CSS pode ser incluído com alterações de recursos (ie. CSS, que melhora a aparência de uma vista pode ser empacotado com o Vista ).
Outras dicas
Não é muito claro onde você está selecionando o modelo que você tem no seu exemplo. Se você estiver selecionando-o a partir de um módulo, em seguida, você pode apenas usar drupal_add_css no módulo em vez do modelo.
Se você tem seu próprio tema que você pode usar template_preprocess_page lógica e colocar em lá para adicionar o CSS relevante (você também pode usá-lo para selecionar o modelo para uso).
Eu tenho algo notado estranho e que poderia resolver o problema:
drupal_add_css( drupal_get_path('theme','themname') . '/working.css','module' ,'all' , false );
drupal_add_css( drupal_get_path('theme','themname') . '/path/to/folder/notworking.css','module' ,'all' , false );
O primeiro deles irá funcionar ebcause o estilo que no principal deles pasta A segunda linha não funcionará porque o estilo está em uma pasta sub!
Editar:
Eu acho que não funcionou porque eu não escrever o caminho do arquivo de estilo corretamente: é tão desconsidere a minha resposta ??p>
drupal_add_css( drupal_get_path('theme','test') . '/pages/subpage/style.css','theme');
está trabalhando
Esta função não vai funcionar em modelos. A razão é que os $ estilos variáveis ??que irá realizar todo o estilo html já terá sido gerado neste ponto, o trabalho de modo drupal_add_css não vai, uma vez que contribui para isso. se você quiser fazer isso no seu tema, você provavelmente teria que adicionar o arquivo css manualmente
<link rel="stylesheet" ... />
A outra maneira seria usar drupal_add_css em um módulo, mas você pode ter um tempo difícil adicionar os arquivos CSS corretas sobre as páginas que deseja.
É possível usar drupal_add_css () dentro do seu arquivo template.php; desta página tem um bom exemplo de como fazer isso.
Este código dentro template.php funciona para mim:
function alagna_preprocess_page(&$vars) {
drupal_add_css(path_to_theme() . '/header_1.css', 'theme');
$vars['css'] = drupal_add_css();
$vars['styles'] = drupal_get_css();
}
explicou:
- Alagna é o nome do tema
- header_1.css é o arquivo css necessário.
drupal_add_css está esperando um caminho relativo ao caminho base enquanto drupal_get_path não retorna o caminho relativo ao caminho de base.
global $base_path;
drupal_add_css($base_path . drupal_get_path('module / theme','name') . "/styles/file1.css", "module / theme");
Você pode escolher entre o módulo eo tema em conformidade.
Obrigado pelo link, wyrmmage. Isso é muito útil. Eu acho que o resto do código na página é desnecessária. Você provavelmente só precisa estes desde drupal 6 já verificar automaticamente a existência de arquivos:
drupal_add_css(path_to_theme() . '/css/yourcss.css', 'theme');
// Add the following to regenerate $styles.
// This is needed for template_preprocess_page() since css is already generated at this point.
$variables['styles'] = drupal_get_css();
Tente este common.inc drupal_get_css ($ css = NULL)
Parâmetros
$ css:.. (Opcional) Uma matriz de arquivos CSS Se nenhuma matriz é fornecido, array o padrão de estilo é usado em vez
$css = $vars['css'];
// unset the system css files
$unset_css = array
'modules/system/system.css',
'modules/system/system-menus.css',
);
foreach($unset_css as $css_f) {
if(isset($css['all']['module'][$css_f])) {
unset($css['all']['module'][$css_f]);
}
}
// add css
$css['all']['theme'][drupal_get_path('theme', 'openpublish_theme') . '/css/style.css'] = true;
$vars['styles'] = drupal_get_css($css);