Altbilgiye ve özel stillere javascript dosyası ekleme


9

Hızlı sayfa yükleme için JS'yi sayfanın sonuna bileşenlerden ve modüllerden eklemem gerekiyor.

Aşağıdaki komut dosyası bildirme yöntemi, altbilgiye koymak için herhangi bir parametre olmadığından, alt kısma eklemek için çalışmaz.

$rsws_document  = JFactory::getDocument(); 
$rsws_document->addScript();

Öyleyse amacımı yerine getirmenin kısa yolları nedir? Joomla böyle bir işlevsellik sağlamazsa, sayfa yükleme hızı için önemli bir dezavantajdır.

Ayrıca, bir modülden özel stil sayfaları eklemek istiyorum, böylece aynı modül bu sayfaya birden çok kez eklemiş olsa bile, yalnızca bir kez sayfaya enjekte edilir -

<style type="text/css"> .classname { color:red; }.....</style>

Bunu nasıl başarabilirim?


1
Sorunuzu tek bir konuda saklamalısınız. Burada iki sorunuz var.
Bakual

1
yardımcı olabilecek bir uzantı var: extensions.joomla.org/extension/scriptsdown
noiragneau

Yanıtlar:


6

JDocument-> addScript () komut dosyasının yüklenmesini erteleme ve / veya zaman uyumsuz yükleme seçenekleri vardır. API belgesine bakın: http://api.joomla.org/cms-3/classes/JDocumentHTML.html#method_addScript

Bu, tarayıcının komut dosyalarını işlemin ilerleyen aşamalarında yüklemesine izin verir ve bu da sayfa yükleme süresine yardımcı olur.

Komut dosyalarını sayfanın altına yükleyecek API yok. Buna ihtiyacınız varsa, 3. taraf uzantıları kullanmanız veya doğrudan şablona eklemeniz gerekir.


Evet bunun farkındaydım.Ancak wordpress hem komut dosyaları hem de özel css durumunda sorularımla ilgili bu tür özelliklere sahip.
dev-m

Böyle bir şey eklemek için bir tartışma vardı. Şahsen ben defer / async üzerine alt ekleme avantajını görmüyorum.
Bakual

2

Şimdiye kadar, sayfanın alt kısmına komut dosyaları yükleme seçeneği olmadığını düşünüyorum.

İkinci sorunuz için, statik bir boolean özelliği kullanabilir ve css'iniz ilk oluşturulduğunda bunu true olarak ayarlayabilirsiniz. Aşağıdaki modül örnekleri için css'nizi eklemeniz gerekip gerekmediğine karar vermek için bu özelliği test etmeniz yeterlidir.

Belki de bu statik özelliği eklemek için iyi bir yer bir modül yardımcı sınıfıdır.

Saygılarımızla,


2

$ document-> addScript () her zaman etiketten önce başlık bölümüne komut dosyaları ekler. Bu nedenle, sayfanın alt kısmına bir komut dosyası yüklemek istiyorsanız, js'yi bu dosyaya<script src="{pathtojacvascriptfile}"></script>

Umarım bu yardımcı olabilir


2

Şu anda altbilgiye komut dosyası eklemenin bir yöntemi yoktur. Ancak, çıktıyı alan bir eklenti yapabilir, altbilgi gibi uygun şekilde adlandırılmış bir etiket arar ve kodunuza eklemek için str_replace komutunu kullanabilirsiniz.

Ancak şu uzantıları kullanabilirsiniz:

  1. ScriptsDown
  2. JCH Optimizasyonu

Ayrıca bir yöntem buldum. Temel kodu hacklememeyi tercih ederim, ama şu anda gelebileceğim en iyisi bu.

lütfen bu bağlantıyı kontrol edin - Javascript dosyaları altbilgi içeriyor

Umarım başkalarına yardımcı olur :)


2

Herhangi bir komut dosyası (PHP, Java, CSS, HTML, ne olursa olsun) koyup nereye yükleyeceğinizi (kafa, gövde, gövde sonu, vb.) Seçmenizi sağlayan "Boş Modül" adlı bir modül kullanıyoruz.

Ücretsiz ve tamamen kullanışlı buldum: http://extensions.joomla.org/extensions/core-enhancements/coding-a-scripts-integration/custom-code-in-modules/3668

Betikleri vücudun altına taşımak için biraz daha fazla iş var. Bunu kullan:

Şablona ekle:

<? Php
$ head = $ doc-> getHeadData ();
// Komut Dosyalarını Kaldır
unset ($ doc -> _ script [JURI :: root (true). '/media/system/js/mootools-more.js']);
?>

Baştan kaldırmanız gereken her komut dosyası için bir "ayarlanmamış" satır ekleyin. Ardından, alttaki boş modüle ekleyin (hata ayıklama konumu?). Bir artı, farklı boş modüller yaparsanız, komut dosyalarını yalnızca gerektiğinde yükleyebilmenizdir (örneğin, yalnızca motorlar için bir modül örneği, yalnızca belirli bir sayfaya yükleme).

Stiller için Boş Modül'ü de kullanabilirsiniz.

Umarım bu yardımcı olur.


0

Henüz kendim denemedim. HTML göstermeyen bir modül oluşturabilirsiniz, sadece komut dosyaları ve stiller yazdırır, ancak diğer modülünüzün görüntülendiği sayfalarda alt modül konumundadır.

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.