Menambahkan file javascript di footer & gaya khusus

9

Untuk memuat halaman dengan cepat, saya harus memasukkan JS di akhir halaman dari komponen dan modul.

Cara mendeklarasikan skrip berikut tidak berfungsi untuk menyisipkannya di bagian bawah karena tidak ada parameter untuk meletakkannya di footer.

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

Jadi apa cara ringkas untuk memenuhi tujuan saya? Jika joomla tidak menyediakan fungsi seperti itu maka itu adalah kelemahan yang signifikan untuk kecepatan memuat halaman.

Saya juga ingin menambahkan stylsheets khusus dari modul sehingga mereka disuntikkan ke halaman hanya sekali bahkan jika modul yang sama menambahkannya beberapa kali di halaman itu -

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

Bagaimana saya bisa mencapai ini?

dev-m
sumber
1
Anda harus menyimpan pertanyaan Anda di satu topik. Anda punya dua pertanyaan di sini.
Bakual
1
ada ekstensi yang mungkin membantu: extensions.joomla.org/extension/scriptsdown
noiragneau

Jawaban:

6

JDocument-> addScript () memiliki opsi untuk menunda pemuatan skrip dan / atau memuatnya async. Lihat dokumen API: http://api.joomla.org/cms-3/classes/JDocumentHTML.html#method_addScript

Ini akan memungkinkan browser untuk memuat skrip kemudian dalam proses, yang akan membantu dengan waktu pageload.

Tidak ada API untuk memuat skrip di bagian bawah halaman. Jika Anda membutuhkannya, Anda harus menggunakan ekstensi pihak ke-3 atau menambahkannya ke template secara langsung.

Bakual
sumber
Ya saya sadar akan hal itu. Tetapi wordpress memiliki fitur-fitur semacam ini mengenai pertanyaan saya jika ada skrip dan custom css.Jadi Joomla harus menambahkannya.
dev-m
Ada diskusi untuk menambahkan sesuatu seperti itu. Secara pribadi saya tidak melihat keuntungan dari menambahkannya di bawah atas penangguhan / async.
Bakual
2

Sekarang saya pikir tidak ada pilihan untuk memuat skrip di bagian bawah halaman.

Untuk pertanyaan kedua, Anda bisa menggunakan properti boolean statis dan mengaturnya menjadi true saat pertama kali css Anda di-render. Untuk instance modul berikut, cukup uji properti ini untuk memutuskan apakah Anda perlu menambahkan css atau tidak.

Mungkin tempat yang baik untuk menambahkan properti statis ini adalah kelas pembantu modul.

Salam,

Pep Lainez
sumber
2

$ document-> addScript () selalu menambahkan skrip di bagian header sebelum tag. Jadi, jika Anda ingin memuat file skrip di bagian bawah halaman maka Anda harus memasukkan js dalam file itu dengan hanya menggunakan<script src="{pathtojacvascriptfile}"></script>

Saya harap ini bisa membantu


sumber
2

Tidak ada metode untuk menambahkan skrip ke footer sekarang. Namun Anda dapat membuat plugin yang mendapatkan output, mencari tag dengan nama yang sesuai, seperti footer dan menggunakan str_replace untuk menambahkan kode Anda.

Tetapi Anda dapat menggunakan ekstensi ini untuk mencapai itu:

  1. ScriptsDown
  2. JCH Optimize

Saya juga menemukan satu metode. Saya lebih suka untuk tidak meretas kode inti, tapi itu yang terbaik yang bisa saya lakukan saat ini.

silakan periksa tautan ini - File Javascript termasuk dalam footer

Saya harap ini akan membantu orang lain :)

Joomler
sumber
2

Kami menggunakan modul yang disebut "Modul Kosong", yang memungkinkan untuk menempatkan skrip apa pun (PHP, Java, CSS, HTML, apa pun) dan memilih tempat memuatnya (kepala, badan, ujung tubuh, dll).

Ini gratis, dan saya merasa sangat berguna: http://extensions.joomla.org/extensions/core-enhancements/coding-a-scripts-integration/custom-code-in-modules/3668

Untuk memindahkan skrip dari bawah ke bawah, itu adalah pekerjaan yang sedikit lebih. Gunakan ini:

Sertakan dalam templat:

<? php
$ head = $ doc-> getHeadData ();
// Hapus Skrip
unset ($ doc -> _ script [JURI :: root (true). '/media/system/js/mootools-more.js']);
?>

Tambahkan satu baris "tidak disetel" untuk setiap skrip yang perlu Anda hapus dari kepala. Kemudian tambahkan ke pemuatan modul kosong di bagian bawah (posisi debug?). Satu plus, jika Anda membuat modul kosong yang berbeda adalah Anda hanya dapat memuat skrip yang diperlukan (seperti, contoh modul hanya untuk motool, memuatnya hanya pada halaman tertentu).

Untuk gaya, Anda juga dapat menggunakan Modul Kosong.

Saya harap ini membantu.

Jonathan Roza - Zott Online Ag
sumber
0

Saya belum mencoba sendiri. Anda dapat membuat modul yang tidak menampilkan HTML, hanya mencetak skrip dan gaya, tetapi berada di posisi modul bawah di halaman tempat modul Anda yang lain ditampilkan.

Hung Tran
sumber