Làm cách nào tôi có thể xóa hoàn toàn Bootstrap khỏi frontend của Joomla?


14

Gần đây, tôi đã cố gắng loại bỏ tất cả các phiên bản Bootstrap khỏi giao diện người dùng của Joomla cho mục đích gỡ lỗi. Tôi đã sử dụng một mẫu khung xương với bản cài đặt Joomla 3.3 tương đối mới. Tôi đã xóa tất cả các vùi của Bootstrap khỏi mẫu và tôi đã tắt tất cả các plugin và mô-đun mà tôi nghĩ có thể tải nó. Tôi cũng đã xóa bộ nhớ cache Joomla. Mặc dù vậy, fireorms nói với tôi rằng Joomla vẫn đang cố tải bootstrap.min.js từ /media/jui/js/bootstrap.min.js

Tôi đã khắc phục vấn đề bằng cách tạm thời đổi tên tệp bootstrap, nhưng nó làm tôi băn khoăn.

  • Điều này xảy ra với tất cả các cài đặt Joomla 3.3 hay chỉ là của tôi?
  • Có cách nào để tôi có thể xác định bootstrap đang được tải từ đâu không?
  • Có cách nào để tôi có thể vô hiệu hóa bootstrap không?

Câu trả lời:


15

Điều này xảy ra với tất cả các cài đặt Joomla 3.3 hay chỉ là của tôi?

Trong phiên bản: 3.2-3.7 (Tôi đã thử nghiệm).

Có cách nào để tôi có thể vô hiệu hóa bootstrap không?

Có, có. Chỉ cần xóa nó trước khi xây dựng tiêu đề, sử dụng sự kiện trênB BeforeCompileHead ( Thông tin thêm trong tài liệu. ).

Theo quan điểm về khả năng gắn thư viện bất cứ lúc nào bởi các phần mở rộng khác nhau. Nó không đủ để loại bỏ khỏi mẫu và mô-đun vài dòng. Đây không phải là một giải pháp hoàn hảo. Nhưng bạn có thể chắc chắn rằng nó sẽ không tải.

Trong dự án của tôi, tôi đang sử dụng bootstrap 3.2. Tôi đã dành cả ngày để tìm cách loại bỏ bootstrap 2.

Giải pháp duy nhất là xóa tập lệnh trước khi xây dựng tiêu đề.

Giải pháp của tôi là tạo một plugin:

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']);
        }
    }
}

Nó hoạt động trong Joomla! 3.2-3.6

(Đối với quan tâm) Tôi cũng cần phải loại bỏ điều này:

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

2
Tuyệt quá! Mất 5 phút để tạo plugin "remove jquery and boostrap" của riêng tôi nhờ bạn.
Alexandre Paulo

16

Một hack thay thế mà tôi luôn muốn loại bỏ, vì nó không liên quan đến việc chỉnh sửa các tệp lõi là ghi đè tệp css bằng tệp css trống trong mẫu của bạn. Điều này vẫn sẽ dẫn đến một cuộc gọi đến máy chủ của bạn để tải tài nguyên, nhưng bạn sẽ không phải có bất kỳ kiểu bootstrap nào.

Chỉ cần thêm một tập tin trống ở đây: templates/YOUR_TEMPLATE/css/jui/bootstrap.min.csstemplates/YOUR_TEMPLATE/js/jui/bootstrap.min.js.

Đương nhiên, bất kỳ thiết lập thành phần nào để sử dụng bootstrap sẽ trông không bị chặn, và vẫn sẽ có một lệnh gọi để tải các tệp css và js của trình duyệt. Tuy nhiên, các tệp sẽ trống (kích thước tải xuống nhỏ) và không có tác động đến kiểu dáng.


Không bao giờ nghĩ về nó theo cách đó, mát mẻ !!!
Mohd Abdul Mujib

7

Chỉ là một ý tưởng (chưa được thử nghiệm), nhưng làm thế nào về việc xây dựng một plugin nhỏ mà không cần Bootstrap?

Một cái gì đó như thế này:

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

Nếu bạn không muốn tạo plugin của riêng mình, một giải pháp đơn giản sẽ là thử:

Bỏ cài đặt trong Mẫu

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

Tuy nhiên - một số tiện ích mở rộng vẫn chèn js hoặc css ngay cả khi bạn xóa nó. Cách đáng tin cậy nhất mà tôi đã khám phá là:

JCC - Plugin điều khiển CSS CSS

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

Tuy nhiên - đôi khi bạn vẫn có js nội tuyến vẫn được chèn trong mẫu của mình. Vì vậy - đôi khi bạn sẽ cần phải thực hiện preg numplace cho js nội tuyến.


4

Đây là điều đã làm tôi khó chịu kể từ đầu Joomla 3.x và cho đến ngày nay, vẫn chưa có gì được thực hiện để cung cấp cho người dùng tùy chọn để ngăn chặn các tệp bootstrap được tải.

Thật không may, Bootstrap được tải từ lõi của Joomla và điều này là do một số tính năng cốt lõi yêu cầu nó hoạt động, do đó loại bỏ nó hoàn toàn sẽ ngăn một số tính năng hoạt động như Tooltip.

Cách duy nhất để loại bỏ nó (mà tôi biết) là thông qua hack lõi trong tệp sau: ( không được đề xuất )

thư viện \ cms \ html \ bootstrap.php

Cách khác duy nhất tôi có thể nghĩ đến là tạo một ghi đè mẫu cho mọi mô-đun, thành phần và plugin gọi thư viện bootstrap và xóa nó.

Cả hai phương pháp đều không tốt, tuy nhiên Joomla 3.x được xây dựng trên Bootstrap vì vậy chúng tôi phải sống với nó


1
Cảm ơn nhà nghỉ. Có vẻ như một chút thiển cận họ không có nút tắt. Hy vọng họ sẽ thêm nó vào Joomla 3.4 :)
TryHarder

Bạn không nên có các tập tin cốt lõi. Giai đoạn = Stage. Có rất nhiều cách khác để xóa tất cả dấu vết của Bootstrap, mà không cần hack các tệp cốt lõi và tất cả chúng đều thích hợp hơn. Tất cả trong số họ cũng sẽ tồn tại một bản cập nhật Joomla, không thể nói về các tệp cốt lõi bị hack.
Seth Warburton

@seth, vâng bây giờ có nhiều cách khác. Câu trả lời này đã được viết cách đây 9 tháng và vào thời điểm đó, tôi không biết cách nào khác
Lodder

@Valentin Despa, bạn có thể vui lòng xóa câu trả lời này cho tôi vì tôi không thể?
Lodder

@oooooo - Tôi đã yêu cầu xóa cờ "được chấp nhận" khỏi câu trả lời của tôi vì đây không phải là giải pháp ở đây. Nếu họ không thể làm như vậy, bạn có phiền đánh dấu câu trả lời của người khác là "được chấp nhận" không?
Lodder

3

Có hai cách:

  1. Bỏ đặt các tệp được bao gồm từ trong mẫu của bạn, sau đó tạo ghi đè để ngăn bất kỳ mô-đun hoặc thành phần nào bạn có thể sử dụng để bao gồm chúng một lần nữa (không hoạt động nhiều như âm thanh).

    1. Sử dụng bất kỳ một trong số nhiều plugin hệ thống có thể làm điều này. Cá nhân, tôi khuyên bạn nên dùng cái này https://github.com/phproberto/plg_sys_mootable vì nó cung cấp toàn quyền kiểm soát thời gian và địa điểm để xóa các tệp để nó có thể được đặt thành không phá vỡ chỉnh sửa front-end chẳng hạn (nếu bạn xóa mọi thứ sẽ bị phá vỡ bình thường).

Tùy chọn 2 có lợi thế dễ sử dụng nhưng bạn vẫn phải sống với phần mềm đánh dấu Bootstrap 2.x đầy rác trên trang web của bạn. Tùy chọn 1 mất nhiều công sức hơn một chút nhưng có nghĩa là bạn có thể xóa mọi dấu vết của Bootstrap; luôn luôn là lựa chọn ưa thích của tôi. Xem http://joomlafuture.com/ để biết mã ví dụ.


2

Joomla không tự động tải CSS bootstrap, nhưng nó tải JS. Nếu mẫu của bạn sử dụng phương thức chuẩn để tải phần đầu Joomla:

<jdoc:include type="head" />

Nó sẽ tải các tập tin mootools, jquery và bootstrap theo thứ tự này:

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

Nó không tải tập tin CSS. Bạn có thể kiểm tra nó bằng cách xóa dòng khỏi tệp mẫu của bạn, sau đó kiểm tra tệp đầu nào bị thiếu.

CSS bootstrap được tải bởi mẫu của bạn. Joomla (từ 2.5 tôi tin) đã bao gồm Bootstrap 2.x trong các tệp phương tiện của họ để dễ dàng truy cập. Protostar vì một số lý do không gọi bootstrap từ các tệp phương tiện. Thay vào đó, họ đã sao chép và dán toàn bộ CSS bootstrap vào tệp template.css của họ. Các khung công tác khác gọi Bootstrap. Ví dụ, Warp 7 có hộp kiểm để bật hoặc tắt Bootstrap.

Vì frontend và backend có các mẫu khác nhau, Bootstrap có thể được tải hoặc vô hiệu hóa cho cái này chứ không phải cái kia. Không có sự phụ thuộc nếu bạn muốn tắt Bootstrap từ frontend chứ không phải phụ trợ.

Sở thích của tôi là Bootstrap 3, vì vậy trên một số mẫu tùy chỉnh khác nhau, tôi đã tải xuống và đưa css bootstrap 3 vào đầu mẫu của mình sau dòng tiêu đề j Joomla và trong thẻ đầu mẫu của tôi:

$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');

Phương pháp hơi khác nhau đối với các khung như Warp 7. Bạn cũng có thể tải trực tiếp từ url CDN của bootstrap nếu muốn.

Vì vậy, Joomla không bắt buộc bạn sử dụng Bootstrap hoặc bất kỳ phiên bản Bootstrap nào, ít nhất là cho CSS. Bạn có thể sử dụng các khung đáp ứng khác nếu bạn muốn. Tất cả đều được thực hiện trong mẫu. Không cần hack hay plugin.


1

Joomla 3.3 (ít hơn) dựa trên Bootstrap 2.3 chứ không phải Bootstrap 3.X

Tôi muốn chuyển sang bản phát hành mới của Bootstrap và có rất nhiều vị trí mà tôi đã thay đổi tất nhiên dựa trên ý tưởng của tôi. Tôi đã làm nó nhưng rất gần đây.

Trong rất nhiều vị trí mã tôi đã phải tắt Bootstrap như mã dưới đây:

// Thêm khung JavaScript JHtml :: _ ('bootstrap.framework');

và tạo một mẫu Joomla hoàn toàn mới để làm điều đó; Nhưng nếu bạn muốn chuyển sang một khung UI khác, tôi nghĩ bạn cũng phải tiếp tục quá trình này và ít nhất bạn có hơn 30 Thành phần, Mô-đun, Plugin và một số mã kế thừa Joomla bạn phải phát triển lại. Nó đơn giản nhưng cần nhiều thời gian.

Nhận thức mới 02 tháng 7 năm 2015: dựa trên phương pháp "unset" trong Joomla mà một số bạn bè của chúng tôi đã đề cập trong diễn đàn này, tôi hoàn toàn có thể vô hiệu hóa phiên bản Bootstrap và Mootools trước đây hoặc bất kỳ thư viện Javascript hoặc tệp CSS nào khác. Tôi xin lỗi trước khi tôi đề cập đến giải pháp xấu. bạn có thể đọc bài đăng này để có thêm thông tin để tắt Bootstrap


Bắt đẹp. Bootstrap 3 là một sai lầm. Tôi sẽ chỉnh sửa nó ngay bây giờ.
TryHarder

-2

Hoặc bạn có thể sử dụng một mẫu từ Yootheme, đặt nó làm mặc định, sau đó trong cấu hình mẫu đó, chọn "không tải bootstrap."


3
Về cơ bản, bạn đang nói 49 euro để loại bỏ Bootstrap cũng là một lựa chọn?
Lodder
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.