Menurut halaman wiki Menambahkan Javascript dan CSS ke Halaman , Anda dapat menambahkan stylesheet dengan addStyleSheet
seperti ini:
$document = JFactory::getDocument();
$document->addStyleSheet($url);
Atau dengan JHtml::stylesheet
seperti ini:
JHtml::stylesheet($url, array(), true);
Tetapi halaman wiki Membuat Template Dasar menginstruksikan pelajar untuk memasukkan stylesheet seperti ini:
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/system/css/system.css">
</head>
Ini memotong addStyleSheet
dan JHtml::stylesheet
. Apakah ini ide yang bagus? Kapan Anda akan menggunakan yang pertama dan kapan Anda akan menggunakan yang kedua?
Catatan: JHtml::_("script", …)
dan JHtml::_("stylesheet", …)
hampir persis sama dengan JHtml::script
dan JHtml::stylesheet
. Lihat Apa yang JHtml::_
dilakukan .
Jawaban:
JHtml
biasanya digunakan dalam ekstensi karena itu berarti penggantian dapat dilakukan yang merupakan fitur yang sangat bagus jika Anda seorang pengembang. Itu juga meluas$document->...
dengan menambahkan beberapa fungsionalitas tambahan.Berikut ini sebuah contoh:
Bila menggunakan
JHtml
, yang minified versi script akan dimuat untuk mengurangi waktu loading halaman. Saat Anda mengaktifkan mode debug di Konfigurasi Global, itu akan memuat versi file yang tidak ditentukan untuk membuatnya dapat dibaca.Anda tidak dapat mengesampingkan templat dengan cara yang sama Anda bisa untuk ekstensi, jadi banyak templat digunakan
<link>
karena penggantian apa pun hanya dapat dilakukan dengan menambahkancustom.css
file, lalu menambahkan kode Anda di dalamnya. Dengan demikian menggunakan<link>
tag asli lebih cepat daripada menggunakan API Joomla untuk memuat file CSSsumber
JHtml
template adalah mendapatkan minifikasi?<link ...>
kode directyl.Selain yang lain, satu-satunya manfaat terbesar yang saya temukan adalah semua file CSS / JSS berada dalam array yang sama sekaligus.
Ini mungkin kedengarannya bukan manfaat, tetapi cuplikan dari contoh lain
Kemudian ketika Anda ingin mengubah
system.css
, Anda akan membuat perubahan dan kemudian menyadari bahwa pengguna Anda memiliki yang lamasystem.css
dalam cache mereka dengan konten baru Anda, yang berarti Anda harus mengubah kode menjadi URL yang sedikit berbeda (atau mengurangi waktu cache Anda dan buat pengguna mengunduh lebih sering)Ketika Anda menggunakan metode JHTML ketika templat dihasilkan, Anda kemudian dapat menghasilkan "versi" dari file CSS / JS (filemtime adalah yang baik untuk digunakan, atau git commit ID dll) sehingga mengubah konten secara instan memberi css baru ke semua orang melihat situs Anda. Waktu cache yang panjang + pembuatan ulang instan berarti lebih sedikit unduhan per halaman.
Contoh kode (TIDAK DIUJI BEKERJA, Meskipun saya menggunakan kode serupa)
Kode ini perlu mengubah sistem Anda untuk memastikan jalurnya ditemukan dengan benar
sumber
Joomla menyediakan API sendiri dari Pabrik mereka, kita dapat menyebutnya sebagai JFactory.
Tidak ada salahnya menggunakan:
lebih:
Namun, jika Anda menyertakan stylesheet Anda dengan metode di atas, maka itu akan dimasukkan di
<head>
bagian template Anda secara otomatis<jdoc:include type="head" />
. Lebih jauh, jika kami mengembangkan ekstensi kami sendiri dan jika Anda secara eksplisit ingin memiliki CSS atau Javascript sendiri, Anda dapat mendeklarasikannya dengan metode di atas. Itu lagi akan menambahkannya di<head>
bagian Anda dan menghindari Anda untuk memperbarui template Andaindex.php
Terkadang Anda ingin skrip Anda muncul di akhir tubuh Anda untuk mendapatkan semua elemen DOM dimuat. Pada situasi ini, Anda mungkin ingin memasukkan skrip Anda di akhir
<body>
elemen Anda dengan mengikuti:Anda juga akan mendapatkan kontrol tambahan untuk menangani CSS dan skrip misalnya Anda dapat menghapus skrip dan stylesheet secara terprogram jika tidak diperlukan.
sumber
JFactory
menempatkan stylesheet<jdoc:include type="head" />
, pertanyaan saya adalah mengapa repot-repot menggunakannya dalam template ketika Anda hanya bisa menulis<link ...>
sendiri?<link...>
dalam template. Tetapi setiap kerangka / CMS memiliki cara implementasinya sendiri. Tidak terkecuali Joomla. Ini adalah cara Joomla untuk membuat skrip dan stylesheet. Sejauh tidak ada cara untuk mengganti template, kita masih bisa mengandalkan<link...>
markup lama .Ada beberapa manfaat tambahan untuk menggunakan metode "addXxxxx" untuk memuat stylesheet dan javascripts.
Ada ekstensi yang dapat Anda instal yang akan menyatukan file-file itu dan gzip menjadi satu file, sehingga meningkatkan kecepatan halaman (dengan mengurangi permintaan http dan ukuran file).
Selain itu, Anda dapat menggunakannya dalam template dan layout override untuk memastikan file yang diperlukan dimuat. Misalnya, jika beberapa item konten Anda memerlukan perpustakaan javascript tertentu (seperti perpustakaan untuk melakukan dispaly foto gaya Masonary), Anda dapat membuat tata letak spesifik untuk jenis artikel yang akan menggunakan mekanisme itu untuk memuat perpustakaan js dan style sheet khusus untuk jenis pajangan tersebut. Ini berarti bahwa bobot tambahan hanya akan ditambahkan ke halaman yang membutuhkannya, tetapi masih menyimpan informasi versi di satu tempat, jadi satu pengeditan akan mengubah banyak tampilan halaman, daripada harus membuat banyak perubahan saat terjadi perubahan (dan kita semua tahu mereka akan berubah).
Secara pribadi, saya menganggap kelebihan-kelebihan itu, ditambah kemampuan untuk menimpa file-file itu dengan salinan yang berbeda bila diperlukan, cukup untuk menjadikannya cara yang saya sukai untuk menambahkannya.
sumber
jika Anda menggunakan
<link >
joomla head Anda tidak akan rapi karena<link >
akan tampil di bawah blok javascript, outsite<jdoc:include type="head" />
dan joomla akan kembali ke folder css lagi. Ini akan mempengaruhi kinerja joomla yang seharusnya. Dan jika Anda menggunakan,<link >
Anda akan mendapatkan banyak gema variabel di plain index.php :(Saya menggunakan
$doc->addStyleSheet
karena.css
akan ditampilkan di blok css, di dalam<jdoc:include type="head" />
. itu sama untuk penggunaan javascript$doc->addScript
. Setelah<jdoc:include type="head" />
joomla akan menganggap semua selesai dan akan melakukan pekerjaan yang lebih penting. :)Beberapa orang menggunakan
<link >
untuk browser yang tidak didukung seperti misitu akan ditampilkan di bagian bawah
<jdoc:include type="head" />
.sumber
<link>
tag akan muncul setelahnya<jdoc:include type="head" />
, tetapi ini hanya terjadi jika Anda menambahkan kode setelahnya. Jika Anda menambahkannya sebelumnya, itu akan muncul sebelumnya. Berkenaan dengan echoing variabel PHP di index.php, saya tidak tahu apa yang Anda maksud ketika Anda mengatakan ini. Menggunakan<link>
tag adalah HTML dasar dan Joomla tidak mengubah cara kerjanya