Ekleri oluşturmak üzere CSS ve JS ekleme


36

Bir forma bazı harici ve yerel CSS ve JavaScript dosyaları eklemem gerekiyor, ancak bunu yapmanın doğru yolunu bulamıyorum. JS ve CSS dosyalarının yollarını ve URL'lerini ekleyebilir miyim?

Bunu yapmak için doğru yerler olduğunu varsayıyorum $form['#attached']['css'][]ve $form['#attached']['js'][]bu yüzden yeniden yapılanmalara yeniden yükleniyorlar. Bir şeyleri kaçırıyor gibiyim.

Yanıtlar:


70

Belgelere baktın mı?

CSS ve JS'yi forma ekleme

http://api.drupal.org/api/drupal/developer!topics!forms_api_reference.html/7#attached

$form['#attached']['css'][] = drupal_get_path('module', 'ajax_example') . '/ajax_example.css';

$form['#attached']['js'][] = drupal_get_path('module', 'ajax_example') . '/ajax_example.js';

Dış dosyalar

http://api.drupal.org/api/drupal/includes%21common.inc/function/drupal_process_attached/7

Dış 'js' ve 'css' dosyaları da yüklenebilir. Örneğin:

$build['#attached']['js']['http://code.jquery.com/jquery-1.4.2.min.js'] = array('type' => 'external');

Sahibim. Harici CSS dosyalarının nasıl kullanılacağına referans gösterdiğini söyleyebilir misiniz?
vintorg


2
Sadece bir not - yukarıda açıklandığı gibi JavaScript'i <module name>_form_<form id>_altermodülünüze adlandırılmış bir fonksiyon ekleyerek belirli forma ekleyebilirsiniz . Form kimliğinin bulunması burada açıklanmaktadır: drupal.stackexchange.com/questions/5802/…
Nux

1
Bu örnek çok kötü çünkü bunun SADECE forma ekleneceğini varsayıyorsunuz!
doublejosh

6
Doublejosh tarafından yapılan yorum şu anlama gelir: genellikle biri onu değiştirmek yerine diziye eklemelidir. Örnek olmalıdır Yani $form['#attached']['css'][] = drupal_get_path('module', 'ajax_example') . '/ajax_example.css';vb ..
tanius

11

İşte formlara satır içi CSS ekleme yöntemi ...

$form['#attached']['css'][] = array(
  'data' => '.my-example-element { display: none; }',
  'type' => 'inline',
);

Yerine koymak yerine css dizisine eklemeniz gerektiğini unutmayın . Kullanmanız gereken Anlamı: yerine başka eklemeler ezmek önlemek için.['css'][] =['css'] =


6

İşte bunun üzerinden yapmanın bir yolu. özelliğini kullanarak bir işlev çağırma #after_build. Anahtar durumunda form kimliğinizi girin.

function mymodule_form_alter(&$form, &$form_state, $form_id) {
  switch ($form_id) {
    case 'my_form':
      $form['#after_build'][] = 'mymodule_after_build';
      break;
  }
}

function mymodule_after_build($form, &$form_state) {
  $path = drupal_get_path('module', 'mymodule');
  drupal_add_js ("$path/mymodule.js");
  return $form; 
}

Ayrıca bu iyi öğreticiyi takip edebilirsiniz . Drupal formlara css ve js ekleme

Bu yardımcı olur umarım. :)


Bu hala Drupal 7 çalışır iken, bir D6 kesmek gibi görünüyor , çünkü gerekli, #attachedD6 yoktu .
tanius

drupal_add_jsBir form üzerinde kullanmamalısınız . Doğrulama durumu sorunu ile sonuçlanır.
doublejosh

1
@doublejosh Bu üç yıllık bir cevap :)
Prerit Mohan
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.