Joomla içine jQuery Eklemek

Bildiğiniz gibi joomla kendi içerisinde mootools olarak bildiğimiz javascript kütüphanesi ve bunun eklentilerini kullanıyor. Ortak kullanılan bazı istemci karakterler yüzünden sistem içerisinde karışıklığa neden oluyor jQuery’i Joomla içerisine entegre etmek. Bunu önlemenin birkaç yolu var ama baya bir zahmetli iş. Benim bulduğum çözüm geçici veya bazı durumlarda çalışabilen bir çözüm. Hayatınızı kurtaran bir çözüm mü, değil mi bunu deneyerek görebilirsiniz.

Ben bu sıkıntıdan kurtulmak için basit bir çözüm buldum. Bunu basit bir modül ile gerçekleştirebilirsiniz. Ama bu ne indirebileceğiniz ne de bir yerden tedarik edebileceğiniz bir şey. Bunu bu yazıyla beraber biz yapacağız. Tema kodlamayı bilenler anlatacaklarımı belki uygulamıştır ama ben bilmeyen ve yeni başlayanlar için detaylı bir anlatım yapacağım.

Joomla tema yapısında modülleri kullanır. Bu modüller tema içerisindeki index.php dosyasında çağırılır. Yapı ayrıca Joomla modül yöneticisi tarafından okunabilecek bir şekilde templateDetalis.xml aldı bir dosya ile desteklenir. Bu iki dosyada değişiklik yapacağız. Anlatacaklarımı uygulamak için lütfen temanızdaki bu iki dosyanın yedeğini alınız.

Bu dosyaları sitenizinbulunduğualan/templates/temanız/ içinde bulabilirsiniz.

Öncelikle index.php dosyasına yeni modülümüzü ekleyelim.

Modülümüzde jQuery çağıracağımız için öncelikle nereye ekleyeceğimizi size aktarayım. Joomlanın ana scriptlerin çağrıldığı alanın hemen altında çağıracağız. Şöyleki;

Ekleyeceğimiz Modül kodu;


<jdoc:include type="modules" name="modul_adi" />

Buradaki modul_adi alanı ekleyeceğimiz modülün adı olacak. Bunu templateDetail.xml içine ekelyeceğiz. Ama öncelikle size tam yeri göstereyim. Bahsetmiş olduğum ana script alanını ile birlikte kodu eklediğinizde şöyle görünecek;

<jdoc:include type="head" />
<jdoc:include type="modules" name="modul_adi" />

Bu kodu eklediğimizde tema içerisinde yeni bir modül alanı eklemiş oluyoruz. Ama bunu yönetim panelinden görebilmemiz için bir işlem yapmamız lazım. Onu da templateDetails.xml içine bir kod daha eklememiz lazım. Şu aşağıdaki kodu tempateDetails.xml içinde alanını bulun ve o alanın bitimindeki pozisyon bilgisini ekleyin.

<position>modul_adi</position>

Dosyaları kaydedip sunucuya gönderin. Joomla yönetim panelindeki modül yönetim bölümünü açtığınızda modül pozisyonunda sizin adını verdiğiniz yeni bir modül alanı olacak. jQuery kodunu eklerken TinyMce kodunuzu silmesin diye düzenleyicinizi değiştirmeniz gerekebilir. Google bazlı jquery kodunuzu yeni bir modül açarak ve pozisyonu yeni ekledğiniz pozisyonu seçerek yayınlayabilirsiniz.

İstediğiniz sayfada görünmesini seçebileceğiniz için jquery kullanmak istediğiniz sayfayı seçin. Bütün sayfaları seçerseniz diğer mootools kullanılan sayfaları da etkileyip bazı kodları bozabilir. Onun için tek sayfa veya birkaç sayfa için geçici bir çözüm olabilir.

Hadi rastgele…

5 thoughts on “Joomla içine jQuery Eklemek”

  1. Yazını çok güzel hazırlanmış öncelikle emeğinize sağlık.Ancak benim anlamadığım bir nokta var.Şimdi modül pozisyonu verdikten sonra jquery script kodlarını nereye yazacağız.Modülün içine mi tam kavrayamadım orayı yardmcı olursanız sevinirim.

    1. Mustafa,

      Modül alanını header e yakın bir yere oluşturduktan sonra, yeni modül oluşturarak içersine jquery scriptini çağırabilirsin. tabii ki öncelik js dosyalarını çağırmak. Burada dikkat etmen gereken şey kullanıcnın ne tinymce ne de başka bir editör kullanmıyor olması. Yani kodu html modunda (editörsüz) ekleyeceksin.

      Yaklaşık 1 sene olmuş hatırlayabildiğim bu.

      Saygılarımla

  2. Verdiğin bilgilere çok teşekkür ederim.Bir sorum daha olacak.Deneme yanılma yöntem bazen kafamı karıştırıyor bu yüzden direk bilgiyi sizden almak istiyorum.Tema da istediğim yerde bir modül alanı var zaten.Özel html kodu modülünü eklereyerek jquery kodlarını oraya yazsak ne olur peki ? jquery de çok yeniyim onu da belirtmek isterim

    1. Sıkıntı olmadan çalışması gerekir teoride. Tabii tatbikinde çıkabilecek sorunlar olur mu onu bilemeyeceğim ama benim deneme yaptığım sistemde çalışıyorsa hala sende de çalışacaktır :)

Comments are closed.