Bootstrap'i Joomla'nın ön ucundan nasıl tamamen kaldırabilirim?


14

Son zamanlarda, hata ayıklama amacıyla tüm Bootstrap örneklerini Joomla'nın ön ucundan kaldırmaya çalıştım. Joomla 3.3'ün nispeten yeni bir kurulumuyla iskelet şablonu kullanıyordum. Şablondan tüm Bootstrap kapanımlarını kaldırdım ve yükleyebileceğini düşündüğüm tüm eklentileri ve modülleri kapattım. Ayrıca Joomla önbelleğini de temizledim. Buna rağmen, kundakçı Joomla'nın hala /media/jui/js/bootstrap.min.js adresinden bootstrap.min.js dosyasını yüklemeye çalıştığını söyledi.

Bootstrap dosyasını geçici olarak yeniden adlandırarak sorunu çözdüm, ama merak ettim.

  • Bu tüm Joomla 3.3 kurulumlarında mı oluyor yoksa sadece benim mi?
  • Bootstrap'in nereden yüklendiğini tanımlamanın bir yolu var mı?
  • Bootstrap'in yüklenmesini devre dışı bırakabilmemin bir yolu var mı?

Yanıtlar:


15

Bu tüm Joomla 3.3 kurulumlarında mı oluyor yoksa sadece benim mi?

Sürüm: 3.2-3.7 (Test ettim).

Bootstrap'in yüklenmesini devre dışı bırakabilmemin bir yolu var mı?

Evet var. Üstbilgiyi oluşturmadan önce, onBeforeCompileHead olayını ( dokümanlardaki daha fazla bilgi) kullanarak kaldırmanız yeterlidir .

Kütüphaneyi herhangi bir zamanda çeşitli uzantılarla bağlama olasılığı göz önüne alındığında. Şablondan ve modüllerden birkaç satır çıkarmak yeterli değildir. Bu mükemmel bir çözüm değil. Ancak yüklenmeyeceğinden emin olabilirsiniz.

Projemde bootstrap 3.2 kullanıyorum. Tüm günü bootstrap 2'yi kaldırmanın bir yolunu bulmak için geçirdim.

Tek çözüm, üstbilgiyi oluşturmadan önce komut dosyasını kaldırmaktı.

Benim çözüm bir eklenti sandık etmektir:

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'da çalışıyor! 3,2-3,6

(İlgilenmek için) Bunu da kaldırmam gerekiyordu:

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

2
Harika! Teşekkürler sayesinde kendi "jquery ve boostrap kaldır" eklentimi oluşturmam 5 dakika sürdü.
Alexandre Paulo

16

Temel dosyaları düzenlemeyi içermediğinden, her zaman atmak istediğim alternatif bir saldırı, şablonunuzdaki boş bir css dosyasıyla css dosyasını geçersiz kılmaktır. Bu, kaynağı yüklemek için sunucunuza çağrı yapılmasına neden olur, ancak herhangi bir önyükleme stiline sahip olmanız gerekmez.

Buraya boş bir dosya ekleyin: templates/YOUR_TEMPLATE/css/jui/bootstrap.min.cssve templates/YOUR_TEMPLATE/js/jui/bootstrap.min.js.

Doğal olarak bootstrap kullanmak için herhangi bir bileşen kurulumu stilsiz görünecek ve tarayıcı tarafından css ve js dosyalarını yüklemek için hala bir çağrı olacak. Ancak, dosyalar boş olacaktır (küçük indirme boyutu) ve stil üzerinde bir etkisi olmayacaktır.


Hiç böyle düşünmemiştim, serin !!!
Mohd Abdul Mujib

7

Sadece bir fikir (test edilmedi), ancak Bootstrap'i sıfırlayan küçük bir eklenti oluşturmaya ne dersiniz?

Bunun gibi bir şey:

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

Kendi eklentinizi oluşturmak istemiyorsanız, basit bir çözüm denemek olacaktır:

Şablonda Ayarlamayı Kaldır

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

Bununla birlikte - bazı uzantılar kaldırsanız bile js veya css'yi ekler. Keşfettiğim en güvenilir yol:

JCC - JS CSS Kontrol Eklentisi

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

Bununla birlikte, bazen şablonunuza hala js satır içi eklenir. Bu nedenle, bazen satır içi js için preg_replace yapmanız gerekir.


4

Bu, Joomla 3.x'in başından beri beni rahatsız eden bir şey ve hala bu güne kadar, kullanıcıya bootstrap dosyalarının yüklenmesini önleme seçeneği vermek için hiçbir şey yapılmadı.

Ne yazık ki, Bootstrap Joomla'nın çekirdeğinden yüklenir ve bu, çalışmasını gerektiren bazı temel özelliklerden kaynaklanır, bu nedenle tamamen kaldırılması, Araç İpucu gibi bazı özelliklerin çalışmasını önleyecektir.

Bunu kaldırmanın tek yolu (bildiğim) aşağıdaki dosyadaki bir çekirdek hack'idir: ( önerilmez )

kütüphaneler \ cms \ html \ bootstrap.php

Aklıma gelen tek yol, bootstrap kütüphanesini çağıran ve kaldıran her modül, bileşen ve eklenti için şablon geçersiz kılma oluşturmaktır.

Her iki yöntem de hoş değil, ancak Joomla 3.x Bootstrap üzerine inşa edildi, bu yüzden onunla yaşamak zorundayız


1
Teşekkürler Lodder. Biraz kısa görüşlü görünüyor gibi bir off düğmesi yok. Umarım Joomla 3.4'e
eklerler

Çekirdek dosyalarınız olmamalıdır. Dönemi. Temel dosyaları hacklemeden tüm Bootstrap izlerini kaldırmanın başka yolları da vardır ve hepsi tercih edilir. Hepsi de saldırıya uğramış çekirdek dosyaları söylenemeyen bir Joomla güncellemesinden sağ çıkacak.
Seth Warburton

seth, evet şimdi başka yollar var. Bu yanıt 9 ay önce yazıldı ve o zaman başka bir yol bilmiyordum
Lodder

@Valentin Despa, lütfen bu cevabı benim için silemez miyim?
Lodder

@oooooo - Burada çözüm olmadığı için cevabımdan "kabul edilen" bayrağın kaldırılmasını istedim. Eğer bunu yapamazlarsa, lütfen başka birinin cevabını "kabul edilmiş" olarak işaretler misiniz?
Lodder

3

İki yol vardır:

  1. Eklenen dosyaların şablonunuzdaki ayarını kaldırın ve ardından kullanmakta olduğunuz modül veya bileşenlerin tekrar eklenmesini önlemek için bir geçersiz kılma oluşturun (göründüğü kadar çalışmaz).

    1. Bunu yapabilen çok sayıda sistem eklentisinden birini kullanın. Şahsen, bu dosyaları https://github.com/phproberto/plg_sys_mootable öneriyorum çünkü dosyaları ne zaman ve nerede kaldıracağınız üzerinde tam kontrol sağlıyor, böylece ön uç düzenlemeyi kırmayacak şekilde ayarlanabiliyor ( her şey normal olarak kırılacaktır).

Seçenek 2, kullanım kolaylığı avantajına sahiptir, ancak yine de sitenizi kirleten crummy Bootstrap 2.x işaretlemesi ile yaşamak zorundasınız. Seçenek 1 biraz daha fazla iş gerektirir, ancak Bootstrap'in her izini kaldırabileceğiniz anlamına gelir ; her zaman benim tercih ettiğim seçenek. Örnek kod için bkz. Http://joomlafuture.com/ .


2

Joomla önyükleme CSS'sini otomatik olarak yüklemez, ancak JS'yi yükler. Şablonunuz Joomla kafasını yüklemek için standart yöntemi kullanıyorsa:

<jdoc:include type="head" />

Mootools, jquery ve bootstrap dosyalarını şu sırayla yükler:

<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 dosyalarını yüklemez. Satırı şablon dosyanızdan kaldırarak ve ardından hangi kafa dosyalarının kaybolduğunu kontrol ederek test edebilirsiniz.

Önyükleme CSS'si şablonunuz tarafından yüklenir. Joomla (2.5'ten beri inanıyorum) kolay erişim için medya dosyalarına Bootstrap 2.x'i dahil etti. Protostar bazı nedenlerden dolayı medya dosyalarından bootstrap çağırmaz. Bunun yerine, tüm bootstrap CSS'sini kopyaladılar ve template.css dosyalarına yapıştırdılar. Diğer çerçeveler Bootstrap'ı çağırır. Örneğin Warp 7'de Bootstrap'i etkinleştirmek veya devre dışı bırakmak için bir onay kutusu bulunur.

Ön uç ve arka uç farklı şablonlara sahip olduğundan, Bootstrap biri için yüklenebilir veya devre dışı bırakılabilir, diğeri için değil. Bootstrap'i arka uçtan değil, ön uçtan devre dışı bırakmak istiyorsanız herhangi bir bağımlılık yoktur.

Benim tercihim Bootstrap 3, bu yüzden birkaç farklı özel şablonda, indirdiğim ve bootstrap 3 css'yi joomla baş çizgisinden sonra ve şablon kafa etiketlerime ekledim:

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

Yöntem Warp 7 gibi çerçeveler için biraz farklıdır. İsterseniz doğrudan bootstrap CDN url'sinden de yükleyebilirsiniz.

Bu yüzden Joomla sizi en azından CSS için Bootstrap veya herhangi bir Bootstrap sürümünü kullanmaya zorlamaz. İsterseniz diğer duyarlı çerçeveleri de kullanabilirsiniz. Her şey şablonda yapılır. Saldırılara veya eklentilere gerek yok.


1

Joomla 3.3 (daha az) Bootstrap 3.X değil Bootstrap 2.3 tabanlı

Bootstrap'ın yeni sürümüne geçmek istedim ve fikrim temelinde elbette değiştireceğim çok pozisyon vardı. Yaptım ama son zamanlarda.

Kodun bir çok pozisyon aşağıdaki kod gibi Bootstrap devre dışı bırakmak zorunda kaldı:

// JavaScript Çerçeveleri Ekle JHtml :: _ ('bootstrap.framework');

ve bunu yapmak için tamamen yeni bir Joomla şablonu hazırladı; ancak sanırım başka bir kullanıcı arayüzü çerçevesine geçmek istiyorsanız, bu sürece de devam etmelisiniz ve en azından 30'dan fazla Bileşen, Modül, Eklenti ve tekrar geliştirmeniz gereken bazı Joomla eski kodlarına sahip olmalısınız. Çok basit ama çok zamana ihtiyacı var.

Yeni algı 02 Temmuz 2015: Joomla'daki "unset" yöntemine dayanarak bu forumda bahsedilen bazı arkadaşlarımızın Bootstrap ve Mootools'un önceki sürümünü veya başka bir Javascript kütüphanesini veya CSS dosyasını tamamen devre dışı bırakabileceğimi. Kötü çözümden bahsetmeden önce üzgünüm. Bootstrap'ı devre dışı bırakmak için daha fazla bilgi almak için bu yayını okuyabilirsiniz


İyi yakaladın. Bootstrap 3 bir hatadır. Şimdi düzenleyeceğim.
TryHarder

-2

Veya Yootheme'den bir şablon kullanabilir, varsayılan olarak ayarlayabilirsiniz, ardından bu şablon yapılandırmasında "bootstrap yükleme" seçeneğini seçin.


3
Temel olarak Bootstrap'ı kaldırmak için 49 avro diyorsun, bir seçenek mi?
Lodder
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.