2012-05-23 11 views
0

magento CMS에 외부 자바 스크립트 파일을 추가하려하지만 어떻게 든 작동하지 않는 것처럼 보이지만 헤드 섹션에 문제가없는 것으로 보입니다. 나는 head.phtml에 코드의 다음 행을 추가하고magento 헤더에 외부 자바 스크립트 파일 추가

<!--pankaj js edition--> 

<script src="<?php echo $this->getJsUrl(); ?>jQuery_1205141001.js" type="text/javascript"></script> 
<script src="<?php echo $this->getJsUrl(); ?>Common_1205141001.js" type="text/javascript"></script> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js" type="text/javascript"></script> 

그들은 페이지가 렌더링 head 섹션에 표시되지만,이 해야하는 일을하지 않는 것 하고있는 것.

나는 잘못하고 있습니다. 파일이 간단한 html 페이지에서 잘 작동하기 때문입니다. 파일을 다른 곳에 추가해야합니까? 귀찮게해서 미안하지만 나는 magento를위한 초보자입니다.

+1

아마도 'jquery.min.js'는 다른 두 가지 이전에로드되어야합니까? –

+0

@ JürgenThelen, 정말 맞는 –

답변

2

1) 당신은 jQuery 라이브러리 나중에
2) jQuery를 포함하는 바와 같이, 제 1 라인에 포함되어 jQuery_1205141001.js에서 jQuery를 실행하려고 시도하는 2 문제가있을 수 있습니다 프로토 타입과 충돌합니다. 이를 위해 당신은 후 jQuery 라이브러리를 포함하여 모든 jQuery 코드를 실행하기 전에 PHTML이를 추가 할 필요

<script type="text/javascript"> 
var $j = jQuery.noConflict(); 
</script> 

다음 JQuery와 예를 들어, 대신 $ .function의 $ j.function를 사용

$j(document.documentElement).keyup(function (event) { 

    if (event.keyCode == 37) { 

    $j('#prev1').click(); 
    } else if (event.keyCode == 39) { 
    $j('#next1').click(); 
    } 
}); 

대신

$(document.documentElement).keyup(function (event) { 

    if (event.keyCode == 37) { 

    $('#prev1').click(); 
    } else if (event.keyCode == 39) { 
    $('#next1').click(); 
    } 
}); 
+1

좋은 해결책. 그러나 Magento에 jquery를 추가하는 것은 나쁜 결정이라고 덧붙입니다. 이미 프로토 타입을 사용하고 있기 때문에, 두 번째 javascript 라이브러리를 추가하면 아무 이유없이 코드가 커집니다. –

+0

jQuery는 프로토 타입보다 훨씬 많은 가시성과 커뮤니티 지원을 제공합니다. 사람들이 독립적 인 프로젝트에서 프로토 타입을 많이 사용하는 것을 보지 못했습니다. – sulabh

+1

Magento가 JQuery를 사용하기를 바랍니다. 앞으로 jQuery가 웹 표준으로 등장 할 것으로 기대됩니다. 그러나, 내 요점은 여전히 ​​약자 : 2 자바 스크립트 라이브러리 부피가 아무 이유없이, 그리고 충돌 문제가 발생합니다. Magento에서 Prototype을 제거 할 수 없기 때문에 Magento를 사용하는 것이 가장 좋습니다. –

1

보다는 당신의 JS referecnces을 추가하는 직접 head.phtml 파일을 편집 당신이 정말로 당신의 테마로에 배치한다 그래서 같이 local.xml :

<reference name="head"> 
    <block type="core/text" name="google.cdn.jquery" after="-"> 
     <action method="setText"> 
      <text><![CDATA[<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 
      <script type="text/javascript">jQuery.noConflict();</script>]]> 
      </text> 
     </action> 
    </block> 
    <action method="addItem"><type>skin_js</type><script>js/jQuery_1205141001.js</script></action> 
</reference> 

방화 광에서 Javascript 오류도 확인하십시오. 자바 스크립트 오류로 인해 일부 js 기능이 실패하는 경우 방화 광구가이를 알려줍니다.

+0

조금 더 생각하면 실제 JS (Google 호스팅 jQuery)가 남아있는 JS보다 먼저 호출되도록하기 위해 getChildHtml()을 호출하기 전에 테마 head.phtml을 변경해야 getCssJsHtml()을 호출해야합니다. – sulman

+0

이 작동하지 않습니다. 어제 그 문제가 있었어. local.xml에 추가하면 js가 마지막으로로드됩니다. 따라서 어떤 변경으로 인해 다른 모듈에서 jquery 참조가 있으면 작동하지 않습니다. – Ovidiu

+0

사실, 위의 내 코멘트는 getChildHtml() 및 getCssJsHtml()을 스왑하는 것에 대한 내용을 참조하십시오. – sulman

0
<reference name="head"> 
     <action method="addJs"><script>[MODULE]/your.js</script></action> 

    </reference> 

magento root의 js 폴더에 모듈 이름과 같은 폴더를 만들고이 폴더에 js 파일을 복사하십시오.

관련 문제