2016-03-15 84 views
0

我面臨一個問題,我認爲其他很多,但我無法找到解決方案。在joomla中的所有擴展css後加載自定義css

基本上我想加載一個自定義CSS所有擴展的CSS後,所以我可以自定義它的樣子,而不必設置爲重要的一切。

問題是Joomla加載擴展文件之前加載的CSS文件,因此我的custom.css或模板CSS不起作用。

我試圖

$doc->addStyleSheet($this->baseurl.'/templates/'.$this->template.'/css/custom-style.css'); 

<jdoc:include type="head" /> 之後,但它顯然是行不通的。

在joomla文檔中,它表示所有第三方擴展應該使用JHtml->addStyleSheet來允許樣式覆蓋。但有很多擴展沒有這樣做。

任何關於如何在所有擴展CSS後加載custom.css或我的模板文件的建議?

+0

你可以添加你的自定義CSS腳註,這將覆蓋所有的樣式。檢查此 - http://joomla.stackexchange.com/questions/371/adding-javascript-file-in-the-footer-custom-styles – Joomler

+0

謝謝米爾科,我現在看看它 – user5294803

+0

在這個問題上有人發佈內置的propostar有一個user.css覆蓋。我會看看joomla附帶的模板是什麼,並會嘗試實現類似的解決方案,如果適用於我。有一件事我與模板和擴展當前的概念鬥爭是他們都加載了一堆東西。我見過加載mootools,核心,更多,jquery,擴展js和樣式,引導等的網站。太多的東西。這將是一個很好的考慮basichtml輸出的擴展和任何其他花哨的東西將是一個插件擴展模板 – user5294803

回答

1

$doc->addStyleSheet將樣式表添加到由<jdoc:include type="head" />生成的代碼中,每次在頁面加載過程中調用該函數的順序。

我假設這裏的主要問題是您正在使用第三方擴展,所以不能只更新每個擴展使用的樣式表,因爲修補它們可能會覆蓋您的更改。

如果是這樣,那麼您最好的第一站是查看每個擴展是否給您提供了任何配置選項,或者設計時考慮了樣式。一個好的擴展應該能夠提供足夠的鉤子(或者足夠的香草),以便能夠在不使用!的情況下做到這一點。

如果不是,因爲樣式表是按加載順序添加的,您也可以創建一個模塊,其唯一目的是添加樣式表,並命令它顯示在所有其他模塊下面,以使樣式表最後加載。

另一種(稍微有點冒險的)方法是將其添加爲自定義標籤 - 然後將其添加到頭部區域中其他js和css下方。

<?php 
$stylelink = '<link rel="stylesheet" href="'.$this->baseurl . '/templates/' . $this->template .'/css/custom-style.css" />' ."\n"; 
$document = JFactory::getDocument(); 
$document->addCustomTag($stylelink); 
?> 

實際上,我不知道,如果這最後一個選項是比任何一個原始的HTML鏈接更好,但是 - 這是更多的代碼,並沒有真正有什麼自定義標籤是。

如果擴展程序開發人員沒有考慮到擴展程序的設計,那麼僅僅考慮最佳實踐可能意味着不覆蓋樣式。

+0

感謝理查德B.不幸的是,擴展不允許我包括一個自定義樣式或將其關閉。是的,我可以將特定的類定位到模塊/組件,但每次我想要在項目中重新使用該擴展時,都必須輸入這些類。我最終只是在custom-style.css中包含了一個「原始html鏈接」。我想一般來說模板文件應該在擴展之後加載,畢竟這個模板是自定義外觀給了開箱即用的joomla和擴展的地方。 – user5294803

0

我與理查德指出,我認爲它也很容易,你可以通過增加選擇的特殊性在custom.css或template.css

例如解決您的問題的所有問題達成一致,如果您在名爲nav的模板上的div中有擴展名,請在您的CSS選擇器中包含.nav。使用網絡檢查器來幫助查找您可能可以使用的網站上的課程

幫助定位並覆蓋擴展樣式的其他選項是在模塊>高級設置中設置模塊類後綴,或者使用頁面類