Có cách nào để thêm JS / CSS vào trang chân trang không?


Câu trả lời:


17

Các footerkhối không cung cấp bất kỳ hỗ trợ cho js trực tiếp, giống như người đứng đầu.

Nhưng có một khối với tên before_body_endmà bạn có thể thêm mọi thứ bạn muốn với mẫu hoặc khối văn bản.

Tôi sẽ suy nghĩ về mẫu của riêng bạn và loại khối Mage_Page_Block_Html_Head, sau đó bạn có thể sử dụng những gì @Dexter khuyên dùng.

Không, bạn cần một cái gì đó như thế này, bạn không có khối trang / html_head để tham khảo:

<!-- 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>

Và bên trong mẫu của bạn, bạn cần:

<?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() ?>

cảm ơn bạn đã phản hồi @fabian blechschmidt. Tôi đã thêm một cái gì đó như thế này nhưng không có may mắn và ngoại lệ quá. <default> <Reference name = "before_body_end"> <action method = "addItem"> <type> skin_js </ type> <name> js / test.js </ name> <params /> </ action> </ Reference > </ mặc định>
Đánh dấu

Cập nhật câu trả lời, bạn cần một khối!
Fabian Blechschmidt

bạn là MAN !!! Kudos..Thanks một tấn cho answer..But Tôi sẽ vui mừng nếu bạn giải thích cho tôi một chút thông tin về các mã như tốt cho một sự hiểu biết tốt hơn ..
Đánh dấu

Đã thêm một vài bình luận. Nếu bạn có thêm câu hỏi, xin vui lòng hỏi họ - câu hỏi cụ thể :-)
Fabian Blechschmidt

1
tên chính xác của khối là: <tên tham chiếu = "before_body_end"> chứ không phải <tên tham chiếu = "before_body_ends">
Tomas Dermisek

3

Phần đầu trang và chân trang được hiển thị bằng mô-đun Trang trong magento. Để xem các mẫu tiêu đề và chân trang, hãy đi đến

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

Hãy xem các tập tin khác trong thư mục trang cũng. Ở đó bạn có thể thấy header.phtmlphần tiêu đề kết xuất của mỗi trang. head.phtmlsử dụng để thêm các tệp js và css có thể áp dụng cho mọi trang trong magento.

Cũng xem các tập tin trong thư mục trang. Các tệp đó sẽ hiển thị cho mỗi trang theo đặc điểm kỹ thuật bố cục của một trang cụ thể.

Thực hiện một nghiên cứu nghiêm túc về mô-đun này. Nó sẽ giúp bạn rất nhiều.

biên tập

Bạn có thể thêm css và js của mình thông qua page.xml. Tôi nghĩ rằng nó sẽ giải quyết vấn đề của bạn. Đi đến

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

và thêm đoạn mã này vào defeault handle. (Bạn có thể thấy rất nhiều tệp js và css được thêm vào trong phần xử lý này. Chỉ cần thêm mã này bên dưới các mã đó)

 //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>

Đó là nó. Bây giờ hãy chắc chắn rằng tập tin js và css tùy chỉnh của bạn nằm ở vị trí

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

Chúc may mắn cho công việc của bạn.


Tôi không làm việc với page.xml . Trong tệp local.xml của tôi , tôi phải bao gồm sử dụng phương thức xml. Bài đăng đã chỉnh sửa của bạn chỉ gợi ý cách tôi có thể thêm một tệp JS / CSS trong các tệp xml (đây không phải là câu hỏi).
Đánh dấu

@Mark: trong qn của bạn, không có gợi ý nào cho việc sử dụng tệp local.xml cho công việc của bạn. Qn của bạn yêu cầu bạn cần thêm js và css vào chân trang. Cập nhật của tôi sẽ làm công việc đó hoàn hảo. Bất kỳ cách nào tại sao bạn cần tệp local.xml cho mục đích này?
Rajeev K Tomy

Là một nhà phát triển Mage duy trì các tiêu chuẩn, tại sao mọi người sẽ sử dụng page.xml? Mã của bạn <action method="addItem"> <type>skin_js</type> <name>js/yourjsfile.js</name> </action>sẽ thêm JS vào <head> chứ không phải ở chân trang !!!
Đánh dấu

2

Sử dụng XML cho nó. Để thêm Js trong phần chân trang, hãy gọi tham chiếu chân trang. Mã sẽ trông giống như thế này

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

Để thêm JS trong thư mục giao diện, bạn có thể sử dụng mã sau

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

Để thêm css, bạn có thể sử dụng mã xml sau

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

hoặc bạn cũng có thể sử dụng

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

Phương thức không hợp lệ Mage_Page_Block_Html_Footer :: addJs
Đánh dấu

@Mark: Điều đó xảy ra vì lớp Footer không có phương thức có tên là "addJs". Để biết thêm thông tin, hãy xem cái này: magento.stackexchange.com/questions/15904/ Đổi
pablofiumara

2

Đối với javascript, bạn đã xem xét việc chỉ sử dụng onload hoặc jquery '$ (tài liệu). Đã () chưa?

Điều đó sẽ cho phép bạn đặt mã của mình vào tiêu đề như thiết lập thông thường, nhưng không chạy mã cho đến khi nội dung mà js của bạn được tham chiếu được tải.

Mã js filename.js của bạn sẽ trông như sau:

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

Mã cho bố cục của bạn sẽ trông như sau: (Rõ ràng bạn sẽ cần thêm các thư mục phù hợp khi bạn thiết lập chúng.)

<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

Có, có một cách nhưng bạn phải thêm thông qua mã như bên dưới, thêm mã này vào cuối tệp 1column.phtml ngay trước khi kết thúc <body>thẻ.

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

Lời khuyên tồi, vì bạn không muốn sao chép mã của mình vào tất cả các mẫu.
Fabian Blechschmidt

chúng tôi không thể thêm js trong footer qua xml nên tôi sử dụng luồng này.
Keyul Shah

1
Có một cái nhìn vào câu trả lời của tôi. Bạn lưu giải quyết vấn đề, nhưng bạn phải sao chép mã trong mọi mẫu gốc.
Fabian Blechschmidt

1

Tôi đặc biệt khuyên dùng mô-đun trang tốc độ trung bình để giúp bạn tối ưu hóa javascript (và css) và cải thiện thứ hạng hiểu biết của trang Google.

Nó hoạt động bằng cách phân tích cú pháp đầu ra html bằng Magento và sau đó thực hiện hành động cắt và dán vào mã để di chuyển javascript xuống dưới cùng của mã html. Quá trình này nhanh nhưng được sử dụng tốt nhất kết hợp với bộ đệm toàn trang để lưu các thay đổi html.

Thông tin thêm về cách mô-đun này hoạt động và có thể giúp bạn cải thiện thứ hạng trang ở đây:

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.