it-swarm-tr.com

JHtml: script () ve $ doc-> addScript arasındaki fark nedir?

Yakın zamanda, her JS'nin <head> İçine belirli JS ve CSS dosyalarının eklenmesini gerektiren bir modül geliştirdim. Başlangıçta kullandım:

$doc =& JFactory::getDocument();
$doc->addScript(JURI::base(true).'/modules/mod_x/js/mod_x.js');

Ancak, önbelleğe alma etkinleştirildiğinde sitenin hem /cache 'Dan önbelleğe alınmış bir sürüm hem de /modules/mod_x/js/' Dan önbelleğe alınmamış bir sürüm yüklediğini ve JS hatalarına neden olduğunu fark ettim.

Bunu şu şekilde değiştirdiğimde:

JHtml::script(Juri::base().'modules/mod_x/js/mod_x.js');

Komut dosyası, bu hataları gidererek önbellekten yalnızca bir kez yüklendi.

I docs'ta okuyunaddScript yönteminin JHtml:script Yönteminden daha 'düşük seviye' olduğunu, ancak söylemenin ötesinde ...

Elbette, yukarıdaki [JHtml: script yöntemi] kullanılarak [addScript kullanıyorsanız] otomatik olarak yapılacak bazı adımları [JHtml: script'in sizin için yaptığı] manuel olarak kodlamanız gerekecektir.

... daha fazla ayrıntı verilmiyor.

Peki fark nedir? JHtml:script Sonunda addScript bir belge nesnesi üzerinde bir noktada çağırıyor, ancak diğer ara adım ilk alınır varsayalım?

10
codinghands

JHtml::script İçinde ek mantık var. API referansı için http://api.joomla.org/cms-3/classes/JHtml.html#method_script adresine bakın.

Varsayılan olarak hata ayıklama ayarını ve kullanılan tarayıcıyı algılar ve eşleşen komut dosyasını yükler. Örneğin hata ayıklama etkinleştirildiğinde, dosyanın sıkıştırılmamış bir sürümünü varsa yükler.

Dosyayı şablon düzeyinde ve diğer şeyler üzerinde geçersiz kılmaya izin veren isteğe bağlı ayarlar vardır.

Michael Babker, geçersiz kılmaya izin vermek için JHtml::script() nasıl kullanılacağına dair iyi bir rehber yazdı: http://www.babdev.com/blog/139-use-the-media-folder-allow-overridable- ortam

Referans için repo işlevi: https://github.com/joomla/joomla-cms/blob/staging/libraries/cms/html/html.php#L659

Şimdi George tarafından güncellenen resmi doküman sayfası: http://docs.joomla.org/J3.3:Adding_JavaScript_and_CSS_to_the_page

8
Bakual

iki kelimeyle:

  • JHtml::script() - bazı komut dosyalarına bağlı olarak, belirli komut dosyasını (JDocument'e zaten eklenmiş olanlar hariç) geçersiz kılmanıza izin verir (bkz. @Bakual answer);
  • $doc->addScript() - geçersiz kılmaları kontrol etmeden komut dosyasını doğrudan belgeye ekleyin;

Uzantı geliştiricisiyseniz, betiği eklerken şiddetle tavsiye edilir JHtml::script(). Bu, kullanıcılarınızın istedikleri şeye bağlı olarak bazı belirli komut dosyalarını geçersiz kılmasına olanak tanır.
Css için de benzer bir yöntem var.

4
Fedik