Apakah ada cara untuk menambahkan JS / CSS ke halaman footer?


Jawaban:


17

The footerblok tidak menawarkan dukungan untuk js langsung, seperti kepala.

Tetapi ada sebuah blok dengan nama before_body_endtempat Anda dapat menambahkan semua yang Anda inginkan dengan template atau blok teks.

Saya akan berpikir tentang template Anda sendiri dan jenis blok Mage_Page_Block_Html_Head, maka Anda dapat menggunakan apa yang direkomendasikan oleh @Dexter.

Tidak, Anda memerlukan sesuatu seperti ini, Anda tidak memiliki blok halaman / html_head untuk merujuk juga:

<!-- get the block which we want our content in -->
<reference name="before_body_end">
    <!-- add another block of type page/html_head to have all the great functionality to add/remove css and js stuff -->
    <!-- it is important to set your own template, because the head block has a defined default template page/head.phtml which has all the stuff of the head. Using this will bring a lot of problems -->
    <block type="page/html_head" name="scripts_in_footer" template="YOUR TEMPLATE">
        <!-- add whatever you want as you are used to in the head via the standard magento api -->
        <action method="addItem"><type>skin_css</type><name>css/styles.css</name></action>
    </block>
</reference>

Dan di dalam template Anda, Anda perlu:

<?php // and to echo the whole stuff later in the template, you need to add the code, so the added js/Css files are echoed ?>
<?php echo $this->getCssJsHtml() ?>
<?php echo $this->getChildHtml() ?>

terima kasih atas tanggapan @fabian blechschmidt. Saya menambahkan sesuatu seperti ini tetapi tidak ada keberuntungan dan pengecualian juga. <default> <reference name = "before_body_end"> <action method = "addItem"> <type> skin_js </type> <name> js / test.js </name> <params /> </action> </ reference > </default>
Tandai

memperbarui jawabannya, Anda perlu blok!
Fabian Blechschmidt

kaulah MAN !!! Kudos..Terima kasih banyak atas jawabannya..Tapi saya akan senang jika Anda menjelaskan sedikit tentang kode ini juga untuk pemahaman yang lebih baik ..
Tandai

Menambahkan beberapa komentar. Jika Anda memiliki pertanyaan lain, silakan tanyakan - pertanyaan konkret :-)
Fabian Blechschmidt

1
nama blok yang benar adalah: <reference name = "before_body_end"> dan bukan <reference name = "before_body_ends">
Tomas Dermisek

3

Bagian header dan footer dirender oleh modul Page di magento. Untuk melihat templat header dan footer, buka

app / design / frontend/ <your_package> /<your_theme> /template / page / html / footer.phtml

Lihatlah file-file lain di folder halaman juga. Di sana Anda dapat melihat header.phtmlbagian header render dari setiap halaman. head.phtmlgunakan untuk menambahkan file js dan css yang berlaku untuk setiap halaman di magento.

Lihat juga file di folder halaman. File-file itu akan membuat untuk setiap halaman sesuai dengan spesifikasi tata letak halaman tertentu.

Buat penelitian serius pada modul ini. Ini akan banyak membantu Anda.

sunting

Anda dapat menambahkan css dan js Anda melalui page.xml. Saya pikir itu akan menyelesaikan masalah Anda. Pergi ke

app / design / frontend/ <your_package> /<your_theme> / layout / page.xml

dan tambahkan potongan kode ini di dalamnya defeault handle. (Anda dapat melihat banyak file js dan css ditambahkan di pegangan ini. Cukup tambahkan kode ini di bawah kode-kode itu)

 //this will add your js
 <action method="addItem">
     <type>skin_js</type>
     <name>js/yourjsfile.js</name>
 </action>  
 //this will add your css file
 <action method="addItem">
     <type>skin_css</type>
     <name>js/yourcssfile.css</name>
 </action>

Itu dia. Sekarang pastikan file js dan css kustom Anda ada di lokasi

  skin/frontend/<your_package> /<your_theme>/js/yourjsfile.js
  skin/frontend/<your_package> /<your_theme>/css/yourcssfile.css

Semoga berhasil untuk pekerjaan Anda.


Saya tidak bekerja dengan page.xml . Di local.xml saya , saya harus memasukkan menggunakan metode xml. Posting Anda yang diedit hanya menunjukkan bagaimana saya bisa menambahkan JS / CSS dalam file xml (yang bukan pertanyaannya).
Tandai

@ Mark: di qn Anda, tidak ada petunjuk untuk menggunakan file local.xml untuk pekerjaan Anda. Qn Anda menuntut Anda untuk menambahkan js dan css ke footer. Pembaruan saya akan melakukan pekerjaan itu dengan sempurna. Bagaimanapun mengapa Anda memerlukan file local.xml untuk tujuan ini?
Rajeev K Tomy

Menjadi pengembang Mage yang mempertahankan standar, mengapa ada orang yang menggunakan page.xml? Kode Anda <action method="addItem"> <type>skin_js</type> <name>js/yourjsfile.js</name> </action>akan menambahkan JS di <head> dan bukan di footer !!!
Tandai

2

Gunakan XML untuk itu. Untuk menambahkan Js di footer, panggil referensi footer. Kode akan terlihat seperti ini

<reference name="footer">
   <action method="addJs"><script>js/file.js</script></action>
</reference>

Untuk menambahkan JS di folder skin Anda dapat menggunakan kode berikut

    <reference name="footer">
    <action method="addItem"><type>skin_js</type><name>js/test.js</name></action>
</reference>

Untuk menambahkan css Anda dapat menggunakan kode xml berikut

<reference name="footer">
    <action method="addCss"><stylesheet>css/layout.css</stylesheet></action>
</reference>

atau Anda juga bisa menggunakan

<reference name="footer">
<action method="addItem"><type>skin_css</type><name>css/styles.css</name></action>
  </reference>

Metode tidak valid Mage_Page_Block_Html_Footer :: addJs
Tandai

@ Mark: Itu terjadi karena kelas Footer tidak memiliki metode bernama "addJs". Untuk informasi lebih lanjut, lihat ini: magento.stackexchange.com/questions/15904/…
pablofiumara

2

Untuk javascript, sudahkah Anda mempertimbangkan untuk menggunakan onload atau $ (dokumen) jquery .ready ()?

Itu akan memungkinkan Anda untuk menempatkan kode Anda di header seperti pengaturan khas, tetapi tidak menjalankannya sampai konten yang direferensikan oleh js Anda dimuat.

Kode js filename.js Anda akan terlihat seperti:

$(document).ready( function(){
   your custom js here
});

Kode untuk tata letak Anda akan terlihat seperti: (Anda jelas perlu menambahkan direktori yang sesuai saat Anda mengaturnya.)

<reference name="head">
   <action method="addItem"><type>js</type><name>js/jquery/jquery.js</name></action>
   <action method="addItem"><type>js</type><name>js/filename.js</name></action>
</reference>

1

Ya ada satu cara tetapi Anda harus menambahkan melalui kode seperti di bawah ini tambahkan kode ini di bagian bawah file 1column.phtml sesaat sebelum akhir <body>tag.

<script src="<?php echo $this->getSkinUrl('js/jquery.noConflict.js') ?>"></script>

Saran buruk, karena Anda tidak ingin menyalin kode Anda ke semua template.
Fabian Blechschmidt

kita tidak bisa menambahkan js di footer via xml jadi saya menggunakan aliran ini.
Keyul Shah

1
Lihatlah jawaban saya. Anda mengalir memecahkan masalah, tetapi Anda harus menyalin kode di setiap templat root.
Fabian Blechschmidt

1

Saya sangat merekomendasikan modul halamanpeed mediarox untuk membantu Anda mengoptimalkan javascript (dan css) Anda dan meningkatkan peringkat wawasan halamanpeed google.

Ia bekerja dengan mem-parsing output html oleh Magento dan kemudian melakukan tindakan cut dan paste pada kode untuk memindahkan javascript ke bagian bawah kode html. Prosesnya cepat tetapi paling baik digunakan bersamaan dengan cache halaman penuh untuk menyimpan perubahan html.

Informasi lebih lanjut tentang cara kerja modul ini dan dapat membantu Anda meningkatkan peringkat kecepatan halaman di sini:

http://blog.gaiterjones.com/magento-google-pagespeed-jscsshtmlminify-optimisation/

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.