2016-10-02 3 views
0

확장 빌더, extbase 및 유체를 사용하여 Typo3 6.2에서 확장을 만들었습니다.
프론트 엔드에 타임 피커를 추가하고 싶습니다.
.js 파일을 온라인에서 찾았으며 자주 필요할 때마다 내선 번호가 활성화 될 때마다 파일을 포함하고 싶습니다.
해당 파일을 여기에 입력했습니다 : EXT : /Resources/Public/JS/timepicker.js.
this 문서에서 해결책을 발견했지만 내 setup.txt 하단에 page.includeJS.tx_myExtension = EXT:/Resources/Public/JS/timepicker.js을 추가하면 작동하지 않습니다.
나는이 이유가 될 수있다 생각하지만 난 정말 아무 생각이 없다, 그래서 어쨌든 거기 page를 정의하지 않았다 -이 // 구성/TypoScript//typo3conf/내선에서 (자동 생성) 내 SETUP.TXT입니다 :Typo3 6.2 Extension에 .js 파일을 포함시키는 방법?

plugin.tx_myext_test { 
    view { 
     templateRootPath = {$plugin.tx_myext_test.view.templateRootPath} 
     partialRootPath = {$plugin.tx_myext_test.view.partialRootPath} 
     layoutRootPath = {$plugin.tx_myext_test.view.layoutRootPath} 
    } 
    persistence { 
     storagePid = {$plugin.tx_myext_test.persistence.storagePid} 
    } 
} 

plugin.tx_myext._CSS_DEFAULT_STYLE (
    textarea.f3-form-error { 
     background-color:#FF9F9F; 
     border: 1px #FF0000 solid; 
    } 

    input.f3-form-error { 
     background-color:#FF9F9F; 
     border: 1px #FF0000 solid; 
    } 

    .tx-lcappoints table { 
     border-collapse:separate; 
     border-spacing:10px; 
    } 

    .tx-lcappoints table th { 
     font-weight:bold; 
    } 

    .tx-lcappoints table td { 
     vertical-align:top; 
    } 

    .typo3-messages .message-error { 
     color:red; 
    } 

    .typo3-messages .message-ok { 
     color:green; 
    } 
) 

궁극적으로 내 루트 템플릿에 jQuery가 포함되어 있기 때문에 궁극적으로 datepicker에서 작동하는 프론트 엔드 기능이 필요합니다. 그러나 나는 나의 연장을 위해 거기에 시간표를 포함하고 싶지 않다.

<script> 
    $(function() { 
     $('.lc-datepicker').datepicker(); 
     $('.lc-timepicker').timepicker(); 
    }); 
</script> 

답변

4

는이 같은 EXT:에 대한 올바른 구문을 사용 할 수 있습니다 : (. 당신은 extkey을 잊었)

page.includeJS.myextension = EXT:extkey/Resources/Public/JS/timepicker.js 

includeJSFooter를 사용하는 것이 당신의 웹 사이트의 성능을 향상시킬 수 있음을 명심하십시오 includeJS 대신.

page.includeJS은 전 세계적으로 사용 가능한 TypoScript 속성입니다. 따라서 사이트의 루트 TS 템플릿에서 이것을 사용하면 플러그인 사용 여부에 관계없이 모든 페이지에 JavaScript 파일이 포함됩니다. 따라서 플러그인을 내장 한 페이지에서만 JS를 사용하려면 Fluid 접근 방식을 사용하는 것이 좋습니다.

<script src="{f:uri.resource(path: 'JS/timepicker.js')}"></script> 
<script> 
    $(function() { 
     $('.lc-datepicker').datepicker(); 
     $('.lc-timepicker').timepicker(); 
    }); 
</script> 

자원 ViewHelper는 확장의 Resources/Public 디렉토리에 상대적인 경로를 사용

는 템플릿에 자원 ViewHelper를 사용하여이를 달성합니다.

+0

TypoScript에서

는 구성 JS 파일을 가지고 Public/JS/timepicker.js " (프론트 엔드, 일반 또는 시스템) 때문에 어떤 캐시를 플러시해야합니까? 확장 이름은 정확히 무엇을 의미합니까? 정의 된 위치는 무엇입니까? 플러그인 이름이 아니지? –

+0

두 번째 예제가 마침내 작동했지만 ... 이상한 일 : JS에서 시작해야했습니다./... public 그렇지 않은 경우 출력이 "Public/Public"이었습니다. 소원 나는 첫 번째 해결 방법으로 어떤 문제가 있는지 알아낼 수있었습니다. . –

+1

죄송합니다, 제 잘못,'f : uri.resource'의 경로는'Resources/Public'에 상대적입니다. 고쳤다. 'myextension'을'extkey'로 변경하여'typo3conf/ext'에서 확장자의 디렉토리와 동일한 확장자 키가 필요하다는 것을 강조했습니다. 일반 페이지 캐시와 별도로 다른 것을 삭제할 필요는 없습니다. 백엔드의 TypoScript 트리를 검토하여 TS가 제대로 적용되었는지 확인하십시오. – lorenz

1

컨트롤러 클래스에 JS를 포함하도록 정의하여 확장 프로그램에만로드되도록 할 수 있습니다./tx_myExtension/자료 : - :

plugin.tx_myext.settings.javascript.file = EXT:myext/Resources/Public/JS/timepicker.js 

컨트롤러 액션에서 : page.includeJSFooter.tx_myExtension = EXT "로 그것은 지금 작동하지

$this->response->addAdditionalHeaderData('<script src="' . 
      $GLOBALS['TSFE']->tmpl->getFileName($this->settings['javascript']['file']) . 
      '" type="text/javascript"></script>'); 
+0

내 확장 폴더의 setup.txt 파일에 타이포그래피를 추가 할 수 있습니까? 지금까지 작동하지 않습니다 : ( 빈 헤더를로드합니다 "나는 plugin.tx_myext.settings.javascript.file = EXT : myext/Resources/Public/JS/timepicker.js 당신이 말했듯이 내 setup.txt 파일의 하단에 –

+0

이 솔루션의 단점은 어떻게 든 유연하지 못하다는 것입니다. 스크립트가 다르게로드되면 코드를 변경해야합니다 (예 : 글로벌 컨텍스트) . – lorenz