drupal_add_css çalışmıyor

9 Cevap php

I drupal_add_css tek bir Drupal 6 sayfalarına stil aramak için kullanmak gerekir. Ben orada tüm koyarsanız ana tabaka büyük olacak - tüm tamamen yeni stilleri gereken bireysel sayfaların bir dizi olacak gibi ben ana teması stil düzenlemek istemiyorum.

Benim çözüm PHP editörü modunda sayfasını düzenlemek ve bunun için oldu:

<?php 
drupal_add_css("/styles/file1.css", "theme");
?>

<div id="newPageContent">stuff here in html</div>

Ben kaynağını görüntülemek Fakat, orada hiçbir şey yok! Hatta bir kırık CSS bağlantı ya da bir şey, sadece sayfa kafasına koymak CSS paketine CSS sayfası eklemek için reddediyor.

Varyasyonlar ya da çalışmak için görünmüyor:

drupal_add_css($path = '/styles/file1.css', $type = 'module', $media = 'all', $preprocess = TRUE)

Benim şablon başlık böyle, ben özel bir JavaScript ekleyerek dışındaki varsayılan şey değişmedi ettik görünüyor.

<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>

Neden bu fonksiyon çalışmıyor?

9 Cevap

Büyük küçük addon - Cevap bu modülü kullanmak çok oldu!

http://drupal.org/project/css%5Finjector

Eğer örnekte var şablonu seçerek nerede Oldukça açık değildir. Eğer bir modül seçerek o zaman sadece çok şablona göre modülünde drupal_add_css kullanabilirsiniz.

Kendi tema varsa template_preprocess_page kullanmak ve (siz de kullanmak için şablonu seçmek için kullanabilirsiniz), ilgili CSS eklemek için orada mantığı koyabilirsiniz.

Ben garip bir şey fark ettim ve bu sorunu çözmek olabilir:

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 );

The first one will work ebcause the style it in the main them folder The second line will not work because the style is in a sub folder !

Edit:

i düzgün patikayı stil dosyası yazmadım çünkü ben işe yaramadı düşünüyorum: yani benim cevap lütfen dikkate almayınız S

drupal_add_css( drupal_get_path('theme','test') . '/pages/subpage/style.css','theme');

çalışıyor

Bu işlev alışkanlık şablonları çalışır. Nedeni, bu ekler gibi tüm stil html yapacak değişken $ stilleri zaten, bu yüzden bu noktada drupal_add_css alışkanlık iş üretildiğini olacaktır. Eğer bunu tema yapmak istiyorsanız, muhtemelen elle css dosyası eklemek gerekir

<link rel="stylesheet" ... />

Diğer yol, bir modülde drupal_add_css kullanmak olacaktır, ama istediğiniz sayfalarda doğru css dosyaları ekleyerek zor bir zaman olabilir.

Bu template.php dosyası içinde drupal_add_css () kullanmak kesinlikle mümkün değildir; this page sadece bunu nasıl iyi bir örnek vardır.

Template.php içinde bu kod benim için çalışıyor:

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();
} 

açıkladı:

  1. Alagna tema adıdır
  2. header_1.css gerekli css dosyasıdır.

drupal_get_path taban yoluna göre yolu dönmez ise drupal_add_css taban yoluna göreceli bir yol bekliyor.

global $base_path;
drupal_add_css($base_path . drupal_get_path('module / theme','name') . "/styles/file1.css", "module / theme");

Buna göre modül ve tema arasında seçim yapabilirsiniz.

Bağlantı, wyrmmage için teşekkürler. Bu çok kullanışlı. Ben sayfasında kod kalanı gereksiz olduğunu düşünüyorum. Drupal 6 zaten otomatik olarak dosya varlığını kontrol beri Muhtemelen sadece bu gerekir:

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(); 

Try this common.inc drupal_get_css($css = NULL)

Parameters

Hiçbir dizi sağlanır ise $css: (optional) An array of CSS files., varsayılan biçimtabloları dizisi yerine kullanılır.

    $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);