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?
Jawaban:
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.
sumber
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,
sumber
$ 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
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:
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 :)
sumber
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:
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.
sumber
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.
sumber