it-swarm-tr.com

Başka bir modül yüklemek ve kaldırmak için com_ajax'ı nasıl kullanabilirim (Uyarlanabilir Tasarım için)

Bu sorunun bir takibi Mobil cihazlar için performansı optimize etmek için bir modül Joomla 3'teki cihaza veya görüntü alanı boyutuna göre nasıl devre dışı bırakılabilir?

Bir modülü yüklemek ve kaldırmak için com_ajax'ı nasıl kullanabilirim? Çağrı saf javascript veya jquery kullanılarak yapılabilir ve görünüm boyutuna bağlı olacaktır (bunun için mediacheck.js kullanıyoruz: https://github.com/sparkbox/mediaCheck ).

Bu cevabın nereye gittiğine bağlı olarak, bu tür dinamik yüklemeye izin vermek için bir bileşeni bir araya getirebiliriz (kesme noktalarını seçin, hangi modüllerin yükleneceğini/kaldırılacağını seçebiliriz).

Gerekçe: Duyarlı/Uyarlanabilir (lezzetinizi seçin) günümüzde çok önemlidir ve bu nedenle mobil cihazlar için yük boyutunu azaltmaktadır (iyi bir alım alanında, burada Brezilya'da yavaş 3G hızı). Bir modülün 20 ~ 200k yüklenmesini önlemek için 10 ~ 15k jQuery/Javascript kullanabilirsem (modüller resim içerebilir, bu yüzden, evet, oldukça büyük bir boyuta ulaşabilir), hepsi bunun için. İyi bir mobil tasarımda ekran karmaşasını azaltmak da bir zorunluluktur. Bunun "önce mobil" olduğunu iddia edebiliriz, çünkü modül olmadan tasarlıyoruz, sonra ekran boyutunun izin verdiği şekilde yüklüyoruz.

com_ajax gerçekten de modülün verileri destekleniyorsa kullanılır (JSON tabanlı), ancak başka özellikleri de vardır. Bazı kasalı bir modül "sadece" yüklemek için en kolay yolu, yeni bir şablon dosyası oluşturmaktır. Bu, şablon dizininde "module.php" gibi bir şey oluşturarak yapılabilir. Sonra içeride böyle bir şey kullanıyor.

<?php
$jinput = JFactory::getApplication()->input;
$module = $jinput->get('module_pos', 'default_value', 'get');
?>
<jdoc:include type="modules" name="<?php echo $module; ?>"/>

Bu sadece bir sayfaya modülü yüklemelidir, bir ajax isteğinde index.php?tmpl=module&module_pos=foo Gibi bir url kullanarak modül verilerini "sadece" alabilmelisiniz. Bu, module_pos ile belirtilen konuma atanan tüm modülleri yükleyecektir.

Ancak bunun bir sorunu var, javascript. Modüller, Joomla'nın API'sı aracılığıyla başlık etiketine javascript ekler. Bununla mücadele etmek için, kafa etiketinde ne olduğunu, geçerli sayfada ne olmadığını ve aslında neyin gerekli olduğunu bulup eklemeyi öğrenmek için module.php dosyasına daha fazlasını eklemeniz gerekir. Bu işlem oldukça zor olurdu, ancak bunu yapan modülleri biliyorsanız, modüle bağlı olarak bunu otomatik olarak yapmak için ajax çağrınıza daha fazlasını ekleyebilirsiniz.

Bu, modülü "yüklemenize" yardımcı olacaktır, ajax ile yüklendikten sonra, sadece ihtiyacınız olan sayfaya html eklemek için jquery kullanın, "boşaltmak" için sadece dom'tan çıkarın.

kaldırma için jQuery(ROOT_ELEMENT_OF_MODULE).remove(); ve jQuery(PARENT_ELEMENT_TO_INSERT_MODULE).html(MODULE_HTML); ile yapılabilir. Tabii ki yapılabilecek varyasyonlar var, ama bu basit bir açıklama.

5
Jordan Ramstad