PDA

Zobacz pełną wersję : [Rozwiązane] Edycja styli w kilku rozszerzeniach a przyszły update



jeremy
03-10-2019, 19:04
Cześć.
Mam na stronie kilka dodatków w których dostosowałem sobie wygląd za pomocą edycji styli w css (danego rozszerzenia).
Tylko teraz przy aktualizacji takiego dodatku mój plik styli zostanie nadpisany domyślnym.
Czy jest jakiś sposób aby tego uniknąć ?

siristru
03-10-2019, 20:48
Oczywiście, przecież możesz nadpisać style w swoim szablonie. Wystarczy tworzyć łańcuchy klas. Tzn. nie wskazujesz jednej klasy tylko jej rodzica i dopiero ją. Poczytaj o stylach kaskadowych.
No i zawsze można użyć !important dla danej wartości.

jeremy
03-10-2019, 21:12
Chodzi mi np o moduł roksprocket.
Próbowałem nadpisywać w edycji szablonu - zakładka "twórz nadpisane".
Jednak po kliknięciu w moduł roksprocket w templates/moj-szablon/html/layouts/com_roksprocket są tam w zasadzie same php'y bez styli css.
Domyślnie ścieżka styli znajduję się w /components/com_roksprocket/layouts/mosaic/themes/default/mosaic.css i cały czas z tego pliku wszystko się ładuje.
Myślałem wypiąć tego css'a z dodatku i przypiąć go z ręki w head ale już w lokalizacji templates/moj-szablon/. Nie wiem jednak czy to dobry pomysł.

siristru
04-10-2019, 09:14
Jak pisałem - poczytaj jak nadpisać styl css odpowiednio wywołując jego rodzica. Np. mamy strukturę:


<div id="parent">
<div class="set1">
<ul class="my-list">
<li class="first">text</li>
<li class="second">text</li>
<li class="third">text</li>
</ul>
</div>
</div>

Możemy przypisać styl np:


.third {color: red;}
li.third {color: red}
.my-list li.third {color: red}
ul.my-list li.third {color: red;}
.set1 ul.my-list li.third {color: red;}
#parent .set1 ul.my-list li.third {color: red;}

lub


#parent .my-list .third {color: red}

lub wzmocnić przez dodanie !important:


.my-list .third {color: red !important}

ALE w twoim wypadku sprawa widzę jest o wiele prostsza. Skoro masz plik w takiej lokacji: /components/com_roksprocket/layouts/mosaic/themes/default/mosaic.css
Oznacza to, że rozszerzenie korzysta z "tematów" (theme). Ten nazywa się "default". Utwórz nowy katalog w tej samej lokacji, skopiuj do niego wszystko z "default", wprowadź zmiany a w konfiguracji wybierz swój temat.

Frodoo
04-10-2019, 17:01
Ja znam inne rozwiązanie. Pewnie siristru też je zna ale nie napisał. Mianowicie użycie modułu "Blank module". Jest darmowy. Ustawiamy jak każdy moduł z tym że wyłączamy tytuł, aby go nie było widać. W zakładce CSS wstawiamy znaczniki style. W ten sposób

<style>
.klasa{color:#000 !important;}
</style>
Styl piszesz własny z !importantem. Ustawiamy na każdej stronie lub można na poszczególnych stronach zrobić wersje.

maxik33
04-10-2019, 17:42
Moduł Roksprocket nadpisuje się nieco inaczej. Bezpośrednio w głównym katalogu szablonu ( nie w katalogu HTML ! ).
https://rockettheme.com/docs/joomla/extensions/roksprocket/layout_modes.md

jeremy
04-10-2019, 17:54
ALE w twoim wypadku sprawa widzę jest o wiele prostsza. Skoro masz plik w takiej lokacji: /components/com_roksprocket/layouts/mosaic/themes/default/mosaic.css
Oznacza to, że rozszerzenie korzysta z "tematów" (theme). Ten nazywa się "default". Utwórz nowy katalog w tej samej lokacji, skopiuj do niego wszystko z "default", wprowadź zmiany a w konfiguracji wybierz swój temat.

Ten sposób wydał mi sie bardzo ciekawy. Od razu przystąpiłem do testu. Dodałem nowy katalog oraz wpis w configu - czyli w pliku meta.xml. Pojawił się mój "nowy" szablon w menu komponentu i po jego wybraniu wszystko działa tak jak powinno. Dzieki wielkie za pomoc.
Pytanie tylko, czy przy aktualizacji nie nadpisze mi tego pliku meta.xml usuwając mój wpis z nowym szablonem ?

siristru
04-10-2019, 18:19
Pytanie tylko, czy przy aktualizacji nie nadpisze mi tego pliku meta.xml usuwając mój wpis z nowym szablonem ?

Nie powinien. A nawet jeśli to zmieniasz tylko w jednym pliku ^^
Generalnie z tematami jest tak, że powinny być wykrywane po katalogu lub po własnym pliku xml.
Ale może być też tak, że trzeba coś dopisać do głównego xml... wtedy taki plik nie powinien być nadpisywany i w paczce aktualizacyjnej nie powinno go być.

jeremy
04-10-2019, 18:27
Dziękuję siristru za pomoc. Zrobiłem podobnym sposobem w innym komponencie menu - DJ-MegaMenu Light Edition. Tam nawet nie trzeba nic dopisywać w xml - sam wykrywa nowy katalog. Jedyne co musiałem zrobić to pozmieniać przyrostek klas w css na taki sam jak nazwa katalogu z nowym tematem menu. Oczywiście trzeba to zrobić oddzielnie dla wersji desktop i mobilnej - bo to dwa różne pliki css.