바닥 글 페이지에 JS / CSS를 추가하는 방법이 있습니까?


9

웹 사이트 바닥 글 과 관련된 특정 JS 및 CSS를 추가 해야하는 사용자 정의 요구 사항이 있습니다 . 바닥 글 섹션에 추가 할 수있는 방법이 Magento에 있습니까?


이 문제에 대한 블로그를 작성했습니다. 여기를 참조하십시오 : blog.rahuldadhich.com/magento-load-css-js-footer
Rahul Dadhich

답변:


17

footer블록은 머리처럼 직접 JS에 대한 지원을 제공하지 않습니다.

그러나 before_body_end템플릿 또는 텍스트 블록으로 원하는 모든 것을 추가 할 수 있는 이름의 블록이 있습니다.

자신의 템플릿과 블록 유형에 대해 생각 Mage_Page_Block_Html_Head하고 @Dexter가 권장하는 것을 사용할 수 있습니다.

아니요, 다음과 같은 것이 필요합니다. page / html_head 블록도 없습니다.

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

템플릿 내부에는 다음이 필요합니다.

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

@fabian blechschmidt 응답에 감사드립니다. 나는 이것과 같은 것을 추가했지만 운과 예외도 없었습니다. <default> <reference name = "before_body_end"> <action method = "addItem"> <type> skin_js </ type> <name> js / test.js </ name> <params /> </ action> </ reference> > </ default>
마크

답변을 업데이트하면 블록이 필요합니다!
Fabian Blechschmidt

당신은 남자입니다 !!! Kuss .. 답변을 주셔서 대단히 감사합니다. 그러나 더 나은 이해를 위해 코드에 대해 조금 설명해 주시면 기쁠 것입니다.
Mark

몇 가지 의견을 추가했습니다. 더 궁금한 점이 있으시면 문의하십시오-구체적인 질문 :-)
Fabian Blechschmidt

1
블록의 올바른 이름은 <reference name = "before_body_end">이고 <reference name = "before_body_ends">가
아닙니다.

3

머리글 및 바닥 글 부분이 magento의 페이지 모듈로 렌더링됩니다. 머리글 및 바닥 글 템플릿을 보려면

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

페이지 폴더의 다른 파일도 살펴보십시오. header.phtml각 페이지의 렌더링 헤더 섹션을 확인할 수 있습니다 . head.phtmlmagento의 모든 페이지에 적용 할 수있는 js 및 css 파일을 추가하는 데 사용합니다.

페이지 폴더의 파일도 참조하십시오. 해당 파일은 특정 페이지의 레이아웃 사양에 따라 각 페이지에 렌더링됩니다.

이 모듈에 대해 진지하게 연구하십시오. 많은 도움이 될 것입니다.

편집하다

page.xml을 통해 CSS와 js를 추가 할 수 있습니다. 나는 그것이 당신의 문제를 해결할 것이라고 생각합니다. 이동

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

이 코드 스 니펫을에 추가 defeault handle하십시오 (이 핸들에 추가 된 많은 js 및 css 파일을 볼 수 있습니다. 해당 코드 아래 에이 코드를 추가하십시오)

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

그게 다야. 이제 사용자 정의 js 및 css 파일이 위치에 있는지 확인하십시오

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

당신의 일에 행운을 빕니다.


page.xml 과 함께 작동하지 않습니다 . 내 local.xml 에서 xml 메서드 사용을 포함해야합니다. 편집 된 게시물은 xml 파일에 JS / CSS를 추가하는 방법 만 제안합니다 (질문은 아닙니다).
Mark

@Mark : qn에는 작업에 local.xml 파일을 사용하는 데 대한 힌트가 없습니다. qn은 바닥 글에 js와 css를 추가해야한다고 요구합니다. 내 업데이트는 그 일을 완벽하게 할 것입니다. 어떤 식 으로든이 목적으로 local.xml 파일이 필요한 이유는 무엇입니까?
Rajeev K Tomy

표준을 유지 관리하는 마법사 개발자라면 누구나 page.xml을 사용하는 이유는 무엇입니까? 코드 <action method="addItem"> <type>skin_js</type> <name>js/yourjsfile.js</name> </action>는 바닥 글이 아닌 <head>에 JS를 추가합니다 !!!
Mark

2

XML을 사용하십시오. 바닥 글에 J를 추가하려면 바닥 글 참조를 호출하십시오. 코드는 다음과 같습니다

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

스킨 폴더에 JS를 추가하려면 다음 코드를 사용할 수 있습니다

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

CSS를 추가하려면 다음 XML 코드를 사용할 수 있습니다

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

또는 당신은 또한 사용할 수 있습니다

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

잘못된 방법 Mage_Page_Block_Html_Footer :: addJs
Mark

@Mark : Footer 클래스에는 "addJs"라는 메소드가 없기 때문에 발생합니다. 자세한 내용은이 한 번 봐 가지고 magento.stackexchange.com/questions/15904/...
pablofiumara

2

자바 스크립트의 경우 onload 또는 jquery의 $ (document) .ready () 사용을 고려 했습니까?

그러면 일반적인 설정처럼 헤더에 코드를 배치 할 수 있지만 js가 참조하는 내용이로드 될 때까지 코드를 실행하지 마십시오.

js filename.js 코드는 다음과 같습니다.

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

레이아웃 코드는 다음과 같습니다. (설정 한대로 적절한 디렉토리를 추가해야합니다.)

<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

예. 한 가지 방법이 있지만 아래처럼 코드를 통해 추가해야합니다.이 코드는 <body>태그 끝 바로 전에 1column.phtml 파일의 맨 아래에 추가하십시오 .

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

코드를 모든 템플릿에 복사하고 싶지 않기 때문에 나쁜 조언입니다.
Fabian Blechschmidt

XML을 통해 바닥 글에 js를 추가 할 수 없으므로이 흐름을 사용합니다.
Keyul Shah

1
내 대답을 살펴보십시오. 흐름은 문제를 해결하지만 모든 루트 템플릿에 코드를 복사해야합니다.
Fabian Blechschmidt

1

자바 스크립트 (및 CSS)를 최적화하고 Google pagespeed 통계 순위를 개선하는 데 도움이되는 mediarox pagespeed 모듈을 적극 권장합니다.

Magento의 html 출력을 구문 분석 한 다음 코드에서 잘라 내기 및 붙여 넣기 작업을 수행하여 javascript를 html 코드의 맨 아래로 이동합니다. 프로세스는 빠르지 만 HTML 변경 사항을 캐시하기 위해 전체 페이지 캐시와 함께 사용하는 것이 가장 좋습니다.

이 모듈의 작동 방식에 대한 자세한 정보는 페이지 속도 순위를 개선하는 데 도움이 될 수 있습니다.

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.