Joomla의 프론트 엔드에서 Bootstrap을 완전히 제거하려면 어떻게해야합니까?


14

최근에 디버깅 목적으로 Joomla의 프런트 엔드에서 모든 Bootstrap 인스턴스를 제거하려고 시도했습니다. 비교적 새로운 Joomla 3.3 설치와 함께 기본 템플릿을 사용하고있었습니다. 템플릿에서 Bootstrap의 모든 포함을 제거하고로드 할 수 있다고 생각한 모든 플러그인과 모듈을 해제했습니다. 또한 Joomla 캐시를 지 웠습니다. 그럼에도 불구하고 Firebug는 Joomla가 여전히 /media/jui/js/bootstrap.min.js에서 bootstrap.min.js를로드하려고한다고 말했습니다.

부트 스트랩 파일의 이름을 일시적으로 바꾸어 문제를 해결했지만 궁금해졌습니다.

  • 이 모든 Joomla 3.3 설치에서 발생합니까 아니면 내 것입니까?
  • 부트 스트랩이 어디서로드되는지 식별 할 수있는 방법이 있습니까?
  • 부트 스트랩로드를 비활성화 할 수있는 방법이 있습니까?

답변:


15

이 모든 Joomla 3.3 설치에서 발생합니까 아니면 내 것입니까?

버전 : 3.2-3.7 (테스트했습니다).

부트 스트랩로드를 비활성화 할 수있는 방법이 있습니까?

그렇습니다. onBeforeCompileHead 이벤트 ( 문서의 추가 정보)를 사용하여 헤더를 작성하기 전에 제거하십시오 .

다양한 확장으로 언제든지 라이브러리를 첨부 할 수있는 가능성을 고려하여. 템플릿 및 모듈에서 몇 줄을 제거하는 것만으로는 충분하지 않습니다. 이것은 완벽한 솔루션이 아닙니다. 그러나로드되지 않을 것이라고 확신 할 수 있습니다.

내 프로젝트에서 부트 스트랩 3.2를 사용하고 있습니다. 나는 하루 종일 부트 스트랩 2를 제거하는 방법을 찾기 위해 보냈습니다.

유일한 해결책은 헤더를 작성하기 전에 스크립트를 제거하는 것입니다.

내 해결책은 플러그인 상자입니다.

class plgSystemYourPlugin extends JPlugin
{
    public function onBeforeCompileHead()
    {
        // Application Object
        $app = JFactory::getApplication();

        // Front only
        if( $app instanceof JApplicationSite )
        {
            $doc            = JFactory::getDocument();
            // Remove default bootstrap
            unset($doc->_scripts[JURI::root(true).'/media/jui/js/bootstrap.min.js']);
        }
    }
}

Joomla에서 작동합니다! 3.2-3.6

(관심을 위해) 나는 이것을 제거해야했습니다.

    unset($doc->_scripts[JURI::root(true).'/media/system/js/frontediting.js']);
    unset($doc->_scripts[JURI::root(true).'/media/system/js/html5fallback.js']);

2
큰! 나에게 "jquery 및 boostrap 제거"플러그인을 만드는 데 5 분이 걸렸다.
Alexandre Paulo

16

핵심 파일을 편집하지 않기 때문에 항상 버리는 대체 해킹은 템플릿의 빈 CSS 파일로 CSS 파일을 재정의하는 것입니다. 이로 인해 여전히 리소스를로드하기 위해 서버를 호출하지만 부트 스트랩 스타일은 필요하지 않습니다.

그냥 여기 빈 파일을 추가 templates/YOUR_TEMPLATE/css/jui/bootstrap.min.css하고 templates/YOUR_TEMPLATE/js/jui/bootstrap.min.js.

당연히 부트 스트랩을 사용하는 구성 요소 설정은 스타일이 없으며 브라우저에서 css 및 js 파일을로드하는 호출이 여전히 있습니다. 그러나 파일이 비어 있고 (다운로드 크기가 작음) 스타일에 영향을 미치지 않습니다.


그런 식으로 생각하지 마십시오!
Mohd Abdul Mujib

7

아이디어 (테스트되지 않음)이지만 부트 스트랩을 설정 해제하는 작은 플러그인을 만드는 것은 어떻습니까?

이 같은:

public function onAfterRender() {
    //get the array containing all the script declarations
     $document = JFactory::getDocument(); 
     $headData = $document->getHeadData();
     $scripts = $headData['scripts'];

     //remove script
     unset($scripts['/media/jui/js/bootstrap.min.js']);
     $headData['scripts'] = $scripts;
     $document->setHeadData($headData);
}

4

자체 플러그인을 작성하지 않으려는 경우 간단한 해결책은 다음과 같습니다.

템플릿에서 설정 해제

//JS
unset($doc->_scripts[$this->baseurl.'/media/jui/js/bootstrap.min.js']);
// CSS    
unset($doc->_stylesheets[$this->baseurl.'/media/jui/js/bootstrap.css']);

그러나 일부 확장 프로그램은 js 또는 css를 제거하더라도 여전히 삽입합니다. 내가 찾은 가장 신뢰할 수있는 방법은 다음과 같습니다.

JCC-JS CSS 컨트롤 플러그인

http://extensions.joomla.org/extensions/extension/core-enhancements/performance/js-css-control

그러나 여전히 js 인라인이 여전히 템플릿에 삽입되어 있기 때문에 때로는 인라인 js에 대해 preg_replace를 수행해야합니다.


4

이것은 Joomla 3.x가 시작된 이래로 나에게 버그를 일으켰으며 여전히 오늘날까지 부트 스트랩 파일이로드되지 않도록하는 옵션을 사용자에게 제공하지 않았습니다.

불행히도 부트 스트랩은 Joomla의 핵심에서로드되며 이는 작동 해야하는 일부 핵심 기능 때문이므로 완전히 제거하면 툴팁과 같은 일부 기능이 작동하지 않습니다.

그것을 아는 유일한 방법은 다음 파일에서 핵심 핵을 사용하는 것입니다 : ( 권장되지 않음 )

라이브러리 \ cms \ html \ bootstrap.php

내가 생각할 수있는 유일한 다른 방법은 부트 스트랩 라이브러리를 호출하고 제거하는 모든 모듈, 구성 요소 및 플러그인에 대한 템플릿 재정의를 만드는 것입니다.

Joomla 3.x는 Bootstrap을 기반으로 구축되었으므로 그 방법을 모두 사용할 수는 없습니다.


1
고마워 Lodder. 오프 버튼이없는 것은 조금 짧은 것 같습니다. 잘만되면 그들은 Joomla 3.4에 추가 할 것입니다 :)
TryHarder

핵심 파일이 없어야합니다. 기간. 코어 파일을 해킹하지 않고 Bootstrap의 모든 흔적을 제거하는 다른 방법이 많이 있으며 모든 것이 선호됩니다. 그들 모두는 해킹 된 코어 파일에 대해 말할 수없는 Joomla 업데이트에서도 살아 남을 것입니다.
세스 워버튼

@ seth, 이제 다른 방법이 있습니다. 이 답변은 9 개월 전에 작성되었으며 그 당시에는 다른 방법을 몰랐습니다.
Lodder

@Valentin Despa, 할 수 없어서이 답변을 삭제 하시겠습니까?
Lodder

@oooooo-여기에 해결책이 아니기 때문에 "수락 된"플래그를 내 답변에서 제거하도록 요청했습니다. 그들이 그렇게 할 수 없다면, 다른 사람의 대답을 "수락 됨"으로 표시 하시겠습니까?
Lodder

3

두 가지 방법이 있습니다.

  1. 포함 된 파일을 템플릿 내에서 설정 해제 한 다음 사용중인 모듈 또는 구성 요소가 다시 포함되지 않도록 재정의를 만듭니다 (소리가 나지 않는만큼).

    1. 이를 수행 할 수있는 수많은 시스템 플러그인 중 하나를 사용하십시오. 개인적 으로이 파일을 제거 할 때와 위치를 완전히 제어 할 수 있으므로 https://github.com/phproberto/plg_sys_mootable 을 권장합니다. 예를 들어 프론트 엔드 편집을 중단하지 않도록 설정할 수 있습니다 ( 모든 것이 정상적으로 고장납니다).

옵션 2는 사용하기 쉬운 장점이 있지만 여전히 사이트를 어지럽히는 초라한 Bootstrap 2.x 마크 업을 사용해야합니다. 옵션 1은 조금 더 많은 작업이 필요하지만 모든 부트 스트랩 흔적 을 제거 할 수 있습니다 . 항상 내가 선호하는 옵션. 예제 코드는 http://joomlafuture.com/ 을 참조하십시오 .


2

Joomla는 부트 스트랩 CSS를 자동으로로드하지 않지만 JS를로드합니다. 템플릿이 표준 방법을 사용하여 Joomla 헤드를로드하는 경우 :

<jdoc:include type="head" />

mootools, jquery 및 bootstrap 파일을 다음 순서로로드합니다.

<script src="/media/system/js/mootools-core.js" type="text/javascript"></script>
<script src="/media/system/js/core.js" type="text/javascript"></script>
<script src="/media/system/js/caption.js" type="text/javascript"></script>
<script src="/media/system/js/mootools-more.js" type="text/javascript"></script>
<script src="/media/jui/js/jquery.min.js" type="text/javascript"></script>
<script src="/media/jui/js/jquery-noconflict.js" type="text/javascript"></script>
<script src="/media/jui/js/bootstrap.min.js" type="text/javascript"></script>

CSS 파일을로드하지 않습니다. 템플릿 파일에서 줄을 제거한 다음 누락 된 헤드 파일을 확인하여 테스트 할 수 있습니다.

부트 스트랩 CSS는 템플릿에 의해로드됩니다. Joomla (2.5 생각 이후)는 쉽게 액세스 할 수 있도록 미디어 파일에 Bootstrap 2.x를 포함 시켰습니다. 어떤 이유로 Protostar는 미디어 파일에서 부트 스트랩을 호출하지 않습니다. 대신 전체 부트 스트랩 CSS를 복사하여 template.css 파일에 붙여 넣었습니다. 다른 프레임 워크는 Bootstrap을 호출합니다. 예를 들어 Warp 7에는 Bootstrap을 활성화 또는 비활성화하는 확인란이 있습니다.

프론트 엔드와 백엔드의 템플릿이 다르기 때문에 부트 스트랩을로드하거나 비활성화 할 수 있습니다. 백엔드가 아닌 프론트 엔드에서 부트 스트랩을 비활성화하려는 경우 종속성이 없습니다.

선호하는 것은 Bootstrap 3이므로 여러 다른 사용자 정의 템플릿에서 Joomla 헤드 라인 다음과 템플릿 헤드 태그 내에 템플릿 헤드에 부트 스트랩 3 CSS를 다운로드하여 포함했습니다.

$document = JFactory::getDocument();
$document->setMetaData( 'viewport', 'width=device-width, initial-scale=1, minimum-scale=1' );
$document->addStyleSheet($this->baseurl.'/templates/'.$this->template.'/css/bootstrap.min.css');

이 방법은 Warp 7과 같은 프레임 워크에서 약간 다릅니다. 원할 경우 부트 스트랩 CDN URL에서 직접로드 할 수도 있습니다.

따라서 Joomla는 적어도 CSS에 대해 Bootstrap 또는 모든 버전의 Bootstrap을 사용하도록 강요하지 않습니다. 원하는 경우 다른 반응 형 프레임 워크를 사용할 수 있습니다. 템플릿에서 모두 완료되었습니다. 해킹이나 플러그인이 필요하지 않습니다.


1

Joomla 3.3 (이하)은 Bootstrap 3.X가 아닌 Bootstrap 2.3을 기반으로합니다.

Bootstrap의 새로운 릴리스로 마이그레이션하고 싶었고 아이디어에 따라 변경해야 할 부분이 많았습니다. 나는 그것을했지만 매우 최근에했습니다.

많은 코드 위치에서 코드 아래에서 Bootstrap을 비활성화해야했습니다.

// 자바 스크립트 프레임 워크 추가 JHtml :: _ ( 'bootstrap.framework');

이를 위해 완전히 새로운 Joomla 템플릿을 만들었습니다. 그러나 다른 UI 프레임 워크로 마이그레이션하려면이 프로세스도 계속해야하며 최소한 30 개 이상의 구성 요소, 모듈, 플러그인 및 일부 Joomla 레거시 코드가 있어야 다시 개발해야합니다. 간단하지만 많은 시간이 필요합니다.

새로운 인식 2015 년 7 월 2 일 : Joomla의 "unset"메소드를 기반으로이 포럼에서 언급 한 친구 중 일부는 이전 버전의 Bootstrap 및 Mootools 또는 다른 Javascript 라이브러리 또는 CSS 파일을 완전히 비활성화 할 수 있습니다. 나쁜 해결책을 언급하기 전에 죄송합니다. 이 게시물 을 읽고 Bootstrap 비활성화에 대한 자세한 정보를 얻을 수 있습니다


잘 잡았다. 부트 스트랩 3은 실수입니다. 지금 편집하겠습니다.
TryHarder

-2

또는 Yootheme의 템플릿을 사용하여 기본값으로 설정 한 다음 해당 템플릿 구성에서 "부트 스트랩로드 안 함"을 선택할 수 있습니다.


3
기본적으로 부트 스트랩을 제거하기 위해 49 유로가 옵션이라고 말하고 있습니까?
Lodder
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.