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?

Foi útil?

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

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:

  1. Alagna é o nome do tema
  2. 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);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top