바닥 글 및 사용자 정의 스타일로 자바 스크립트 파일 추가


9

빠른 페이지로드를 위해 구성 요소 및 모듈의 페이지 끝에 JS를 삽입해야합니다.

바닥 글에 넣을 매개 변수가 없기 때문에 아래에 스크립트를 선언하는 방법은 맨 아래에 삽입 할 수 없습니다.

$rsws_document  = JFactory::getDocument(); 
$rsws_document->addScript();

내 목적을 달성하기위한 간결한 방법은 무엇입니까? joomla가 이러한 기능을 제공하지 않으면 페이지로드 속도가 크게 저하됩니다.

또한 모듈에서 사용자 정의 스타일 시트를 추가하여 동일한 모듈이 해당 페이지에 여러 번 추가하더라도 페이지에 한 번만 주입되도록합니다.

<style type="text/css"> .classname { color:red; }.....</style>

어떻게하면 되나요?


1
질문을 하나의 주제로 유지해야합니다. 여기에 두 가지 질문이 있습니다.
Bakual

1
도움이 될만한 확장 프로그램이 있습니다 : extensions.joomla.org/extension/scriptsdown
noiragneau

답변:


6

JDocument-> addScript ()에는 스크립트로드를 연기하거나 비동기로로드하는 옵션이 있습니다. API 문서를 참조하십시오 : http://api.joomla.org/cms-3/classes/JDocumentHTML.html#method_addScript

이렇게하면 프로세스가 나중에 프로세스에서 스크립트를로드하여 페이지로드 시간에 도움이됩니다.

페이지 하단에 스크립트를로드하는 API가 없습니다. 필요한 경우 타사 확장을 사용하거나 템플릿에 직접 추가해야합니다.


그렇습니다.하지만 워드 프레스에는 스크립트와 사용자 정의 CSS 모두의 경우 내 질문에 관한 이러한 기능이 있습니다. 따라서 Joomla가 추가해야합니다.
dev-m

그런 것을 추가하기위한 토론이있었습니다. 개인적으로 지연 / 비동기보다 맨 아래에 추가하는 이점을 보지 못합니다.
Bakual

2

지금까지는 페이지 하단에 스크립트를로드 할 수있는 옵션이 없다고 생각합니다.

두 번째 질문의 경우 정적 부울 속성을 사용하고 CSS가 처음 렌더링 될 때 true로 설정할 수 있습니다. 다음 모듈 인스턴스의 경우이 속성을 테스트하여 CSS를 추가해야하는지 여부를 결정하십시오.

이 정적 속성을 추가하기에 좋은 곳은 모듈 도우미 클래스 일 수 있습니다.

문안 인사,


2

$ document-> addScript ()는 항상 태그 앞에 헤더 섹션에 스크립트를 추가합니다. 따라서 페이지 하단에 스크립트 파일을로드하려면 간단히 다음을 사용하여 해당 파일에 js를 포함시켜야합니다.<script src="{pathtojacvascriptfile}"></script>

이것이 도움이되기를 바랍니다.


2

현재 바닥 글에 스크립트를 추가하는 방법은 없습니다. 그러나 출력을 얻는 플러그인을 만들고 바닥 글과 같이 적절하게 이름이 지정된 태그를 검색 한 후 str_replace를 사용하여 코드에 추가 할 수 있습니다.

그러나 이러한 확장을 사용하면 다음을 달성 할 수 있습니다.

  1. 스크립트
  2. JCH 최적화

또한 하나의 방법을 찾았습니다. 나는 핵심 코드를 해킹하는 것을 선호하지 않지만, 지금 당장 내가 취할 수있는 최선입니다.

이 링크를 확인하십시오- 자바 스크립트 파일이 바닥 글에 포함됩니다

나는 그것이 다른 사람들을 도울 수 있기를 바랍니다 :)


2

"Blank Module"이라는 모듈을 사용하여 스크립트 (PHP, Java, CSS, HTML 등)를 넣고로드 위치 (헤드, 바디, 바디 엔드 등)를 선택할 수 있습니다.

무료이며 완전히 유용합니다 .http : //extensions.joomla.org/extensions/core-enhancements/coding-a-scripts-integration/custom-code-in-modules/3668

스크립트를 본문에서 아래로 이동하려면 약간 더 많은 작업이 필요합니다. 이것을 사용하십시오 :

템플릿에 포함 :

<? php
$ head = $ doc-> getHeadData ();
// 스크립트 제거
unset ($ doc-> _ scripts [JURI :: root (true). '/media/system/js/mootools-more.js']);
?>

헤드에서 제거해야하는 각 스크립트에 대해 "unset"행을 하나씩 추가하십시오. 그런 다음 하단의 빈 모듈 로딩에 추가하십시오 (디버그 위치?). 빈 모듈을 다르게 만드는 경우 필요한 경우에만 스크립트를로드 할 수 있다는 것입니다 (예 : motools 전용 모듈 인스턴스, 특정 페이지에만로드).

스타일의 경우 빈 모듈을 사용할 수도 있습니다.

이게 도움이 되길 바란다.


0

나는 아직 혼자서 시도하지 않았습니다. HTML을 표시하지 않고 스크립트와 스타일을 인쇄하는 모듈을 만들 수 있지만 다른 모듈이 표시되는 페이지의 맨 아래 모듈 위치에 있습니다.

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