Polskie wsparcie PrestaShop
PrestaShop => Wygląd => Wątek zaczęty przez: Brombel w Lipiec 02, 2012, 10:50:58 pm
-
Witam wszystkich po raz pierwszy.
Mam takie pytanko.
W plikach szablonu sklepu czyli themes/nazwa_szablonu/css/modules/nazwa_modułu/nazwa_modułu.css, w tych plikach możemy zmieniać wygląd poszczególnych modułów? Dajmy na to, że nie chciał bym, nic zmieniać w pliku global.css, ale chciałbym zmienić wygląd tylko jednego modułu. To mogę właśnie tam?
-
moduly maja swoje szablony css i sa umieszczane w ogromnej wiekszosci w katalogu modulu,
czyli /modules/nazwa_modulu/***.css
firebug ci powie jaki plik
-
Natomiast pliki css core prestashop, sa umieszczane tak jak pisales w katalogu templatki
-
Sprawdziłem katalogi modułów modules/nazwa_modułu/ i tylko w kilku były pliki ***.css
Dajmy na to, że chcę, żeby w ciągu roku szablon zmieniał się 4 razy. Zgodnie z porami roku. Ale jeden moduł ma być wyglądem inny, nie zmieniając nic w globals.css To wtedy trzeba zmienić właśnie tam themes/nazwa_szablonu/css/modules/nazwa_modułu/nazwa_modułu.css
Bo nic mi nie mówi "css core prestashop"
Znam tylko ciotkę, ciotkę html i css oraz php. Ale nawet laik przy pomocy np. opery i dodatku dragonfly może coś tam pozmieniać w wyglądzie i nie tylko. Więc dlatego moje pytania z katalogiem themes/nazwa_szablonu/css/modules/ bym zrozumiał do czego on jest. I może innym też to się przyda.
-
w teorii ma służyć do nadpisywania/definiowania przez templetkę domyślnych styli modułów, ale aby to poprawnie działało musi być spełnione kilka warunków. W Sumie jest to po to aby oddzielić sytle samego core sklepu od modułów oraz aby łatwiej można było personalizować wygląd modułów
-
Dlaczego tylko w teorii? Sądziłem, że właśnie do tego to jest z chłopskiego punktu widzenia. Tylko, że mnie zmyliło to że zainstalowałem moduł np. wContent dodałem w templatce o takiej samej nazwie co moduł katalog i później pik.css (oczywiście dodałem w themes/nazwa_szablonu/css/modules/ )Zmieniając w pliku nazwa_modułu.css i tak wygląd modułu nie zmieniał się. Więc dla tego rozpocząłem ten temat. Jakie trzeba spełnić warunki żeby to zadziałało?
-
no napisałem w teorii i , że musi być spełnionych kilka warunków?
jeżeli zmieniłeś nazwę css a ponad to masz zdefiniowany w tpl/module plik css o określonej nazwie to niestety nie spełniłeś warunków ;)....... ;D ;D
-
Nie zmieniłem nazwę css. Zainstalowałem moduł ale przy instalowaniu modułu nic mi się nie zainstalowało w szablonie sklepu. Więc sam utworzyłem w szablonie a dokładnie w themes/nazwa_szablonu/css/modules/ katalog o takiej samej nazwie co moduł a następnie w tym katalogu umieściłem plik o nazwie takiej samej co moduł z końcówką .css I wpisując coś w tym pliku, powinien wygląd modułu się zmieniać, co się nie dzieje. Więc jeszcze raz mam pytanie jakie warunki muszę spełnić żeby to zadziałało.
-
nie nie powinien się zmienić............ przeczytaj mój post jeszcze raz
tak mała podpowiedź .......... to co zawarte w kodzie ma pierwszeństwo przed tym co jest zawarte w globalnych ustawieniach ........ skoro masz zdefiniowany styl kodzie modułu to chyba oczywistym jest że style będą brane z tego a nie z globalnych ustawień...... pomijam tu resztę ........ czyli zmianę nazw ;)
-
Sower nie rozumiem tego co napisałeś. Jeżeli jest szablon sklepu to czy wygląd nie powinien być uzależniony od plików .css w tym szablonie a nie od .css tego modułu. Jeżeli chcę np. zmienić wielkość liter w danym szablonie i konkretnym module to powinienem chyba zajrzeć do plików themes/nazwa_szablonu/css/modules/ a nie zaglądać do modules/nazwa_modułu/
Dajmy że mam kaprys zmieniać wygląd sklepu co miesiąc i mam kilka zainstalowanych szablonów. To za każdym razem miał bym mieszać w plikach css tego modułu? To by było bez sensu tworzyć różne szablony jak i tak coś trzeba zmienić w innym katalogu niż themes.
Po za tym w modules/nazwa_modułu/ nie ma żadnego pliku z końcówką .css (w tym co zainstalowałem)
-
Dlatego ci napisalem wczesniej ze firebug ci pokaze z ktorego stylu korzysta i gdzie jest on zdefiniowany.
Style sa dziedziczone wiec trzeba czasami cofnac sie po drzewku zaleznosci.
A co do zmian okresowych wygladu.
Najlepiej utworz sobie swoj szablon styli ( jeden plik css ) ktory nadpisze juz wczesniej zdefiniowane style, i zaladuj go jako ostatni. On bedzie obowiazywal.
Sa nawet gotowe moduly w ktorych mozesz zdefiniowac kilka plikow styli i wybierac ktory z nich ma byc ladowany.
To dla ciebie najlatwiejsza droga.
-
Rozumiem, że w szablonie sklepu jest podstawowy plik global.css i tam wygląd jest zapisany. To po co w takim razie katalog themes/nazwa_szablonu/css/modules/ ? Jeżeli wszystko już jest zapisane w global.css
Ja sądziłem, że tam mogę zmienić wygląd konkretnego modułu. I gdy wchodzę w podstawowy szablon presty i zaglądam w ten katalog, i zmieniam np. kolor czcionki w danym module np. themes/prestashop/css/modules/blockcategories/blockcategories.css to zmienia się właśnie wygląd tego modułu.
-
system styli w prestashop jest bardziej skomplikowany
od wersji 1.4 rozbito global.css na global.css i style modulow
nie wszystko jest zdefiniowane w global.css
lub cos jest ale zostaje nadpisane przez nastepny styl
to tak samo jak z tablicami asocjacyjnymi w php
gdzies definiujesz $tablica['color'] = 'red';
a gdzies pozniej $tablica['color'] = 'green';
i klucz color przyjmuje inna wartosc niz to bylo zdefiniowane na poczatku
dlatego, jak wczesniej ci pisalem, zrob swoj plik styli i tam zdefiniujesz swoje ustawienia ktore nadpisza ci poprzednie.
po pierwsze, nie tracisz orginalnych styli, po drugie latwiej ci bedzie w przyszlosci modyfikowac
w header.tpl templatki pod sekcja:
{if isset($css_files)}
{foreach from=$css_files key=css_uri item=media}
<link href="{$css_uri}" rel="stylesheet" type="text/css" media="{$media}" />
{/foreach}
dopisz link do swojego css no i oczywiscie zrekompiluj szablon smarty
-
Więc dajmy na to, że zrobił bym tak jak piszesz, tworząc własny plik.css. I piszesz żebym "i załaduj go jako ostatni" To znaczy gdzie bo takim orłem to ja nie jestem.
I ponawiam jednocześnie pytanie, co zrobić jeżeli zainstalowałem moduł i chciałbym żeby zmieniać wygląd modułu w pliku themes/nazwa_szablonu/css/modules/nazwa_modułu/nazwa_modułu.css ?
-
cos ty sie uczepil tego katalogu !!!
nie wazne gdzie on jest jesli nadpisujesz wartosci w swoim css
przeczytaj poprzedni post ze zrozumieniem
niech twoj fragment header.tpl wyglada tak:
.................
{if isset($css_files)}
{foreach from=$css_files key=css_uri item=media}
<link href="{$css_uri}" rel="stylesheet" type="text/css" media="{$media}" />
{/foreach}
{/if}
{literal}
<link href="/themes/prestashop/css/lato.css" rel="stylesheet" type="text/css" media="all" />
{/literal}
.................
dzieki takiemu zapisowi twoj plik css bedzie ostatni w sekcji header
do pliku lato.css przekopiuj dyrektywy css, ktore chcesz zmienic, i zmien w nich wartosci na swoje
-
dobra ale po co tyle kombinacji?
wracając do początkowego pytania ............ katalogi, o których piszesz służą do nadpisania czy to tpl /modules/nazwa_modułu czy to css /modules/nazwa_modułu i tak jak napisałem służą DO NADPISANIA........ czyli aby coś było nadpisane musi istnieć.
Jeżeli w module (nie dotyczy standardowych modułów presty) nie ma pliku css to....... należy go utworzyć (może być pusty plik) a następnie osadzić w header - najprościej w module przy użyciu public function hookHeader i albo przez tpl albo Tools::addCSS i albo z automatu zainstalowac albo ręcznie powiesić na hooku ............. po tym można sobie do woli nadpisywać css
z automatu presta umożliwia nadpisane tylko standardowych/domyślnych modułów i aby to obejść należy zrobić to co wyżej napisałem .......... nie trzeba się bawić w modyfikację header.tpl czy martwić się który css jest pierwszy a który ostatni.......... w/w rozwiązanie jest zgodne ze standardem i tyle w temacie
-
zgodze sie z toba @sover ze jest to po fachowemu, dla tworcow templatek, dla ludzi obeznanych co i jak w prescie dziala.
Ale zeby tak zrobic to trzeba sporo czasu z presta spedzic.
Moj sposob polega na dopisaniu jednej linijki do header.tpl
a dlaczego tak?
1.na 100% wiem ze moje style beda obowiazujace
2.nie musze szukac plikow css po calej prescie i zastanawiac sie czy w dobrym miejscu
3.na goraco modyfikuje dyrektywy css w firebugu i jak pasuje, to kopiuje dyrektywe z wartosciami i wklejam do mojego css
4.taki moj css moge podpiac w kazdej chwili, kiedy chce i gdzie chce, moze to byc zalezne od pory roku, albo mam kaprys i kazda kategoria moze miec swoje style, albo jakis modul tylko style zmienia w zaleznosci od kategorii , kilka linijek kodu we FrontController i juz mam switcha
5. moge sobie nawet zrobic modul do przelaczania i podpiac moje style bez ingerencji w nie.
6. nie zmieniam orginalnych wartosci, wiec nawet upgrade mi nie grozny,
I co najwazniejsze, wszystko mam w JEDNYM pliku css
aaa zapomnialbym, przez takie rozwiazanie skrocila mi sie praca nad modyfikacja templatki co najmniej o polowe.
-
Przeczytałem kilka razu to co napisaliście i wkońcu zrozumiałem do pewnego miejsca.To czy będzie jeden plik.css (themes/nazwa_szablonu/css/plik_własny.css) czy kilka w różnych modułach (themes/nazwa_szablonu/css/modules/konkretny moduł) to zależy tylko od własnego widzimisie (komu jak wygodnie) a następnie trzeba to osadzić w pliku header.tpl . Ze zrozumieniem mi to @mario wyjaśniłeś, w którym miejscu i jak. Z tym nie ma problemów. Ale "no i oczywiscie zrekompiluj szablon smarty" lub " i albo przez tpl albo Tools::addCSS i albo z automatu zainstalowac albo ręcznie powiesić na hooku" tu mnie zatkało. Przeszukałem forum ale nic nie znalazłem. Jak mam to ugryść. Bo bez tego nadal w tym nowym_pliku.css po wpisaniu w niego zmienionych parametrów, na stronie sklepu nic się nie zmienia.
-
oj to chyba źle szukałeś ;) poszukaj dobrze
-
Dodałem w pliku nazwa_modułu.php
...............................
function hookHeader()
{
Tools::addCSS(($this->_path).'ścieżka_gdzie znajduje_się_.css', 'all');
}
.............................
i cała prawa kolumna zniknęła
Co dalej?
-
nauka php i smarty ;D
-
Nie prosciej by ci bylo dac link do strony i powiedziec co chcesz zmienic i gdzie?
Trzeba bylo tak zrobic od razu.
Chyba ze to wielka tajemnica. ;)
-
@sower jak by wszyscy byli geniuszami to nie potrzebne było by to forum. A tak możesz zabłysnąć swoją wiedzą. Staram uczyć się tego ale tylko dla przyjemności własnej.
@mario na pewno by było prościej dać link i żeby ktoś to za mnie zrobił. Ale co mi to da, że i tak nie będę rozumiał tego co zostało zrobione. Może nie znam html i css ale staram się tego nauczyć ale najważniejsze jest żeby to zrozumieć. Przecież mogę pozmieniać w global.css i też mi coś wyjdzie. A ja potrzebuje trochę wskazówek, żebym sam to zrobił.
Zobaczyłem że w katalogu themes/nazwa_szablonu/css jest katalog modules i można tam zmieniać wygląd podstawowych modułów i mi się to spodobało i postanowiłem że spróbuje dodać jakiś moduł i żebym też mógł tak zmieniać wygląd jak w tamtych. A tu klapa. I dlatego zacząłem ten temat.
Choć pomysł @sowera też mi się podoba, bo wszystkie własne zmiany by były w jednym pliku css.
Więc może ktoś z forumowiczów dorzuci jakieś wskazówki do tego function hookHeader?
A poza tym, dlaczego przed ksywką daje się @. Na innych forach tego nie zauważyłem.
-
zajrzałeś chociaż do dokumentacji presty? skoro chcesz zgłębiać jej tajniki ;) - może jednak zerknij wtedy będziesz rozumiał o czym piszmy
-
A jest dokumentacja w języku polskim czy tylko to http://doc.prestashop.com?
-
tylko EN
-
Nic mi nie wychodziło z tego co napisali @sower i @mario . Ani jakieś powieszenie na hooku, bo dany moduł już miałem zainstalowany. Dalej nie wiem jak to zrobić, by w danym module można było wygląd zmieniać w pliku znajdującym się w themes/nazwa_szablonu/css/modules/nazwa_modułu/nazwa_modułu.css tak jak to wymyślili twórcy presty.
Ale dobry pomysł ma @mario by wszystkie zmiany własne robić w swoim pliku css, tylko nic a nic mi z tego nie wychodziło co napisał @mario.
A teraz moja propozycja:
Dajmy na to że mamy 4 szablony na każdą porę roku (tak jak mi się wcześniej ubzdurało) i w każdym szablonie chcemy po swojemu coś zmienić. Tworzymy w każdym szablonie po jednym pliku css np. zima.css; wiosna.css; lato.css; jesien.css oczywiście w themes/nazwa_szablonu/css/ .
I teraz w pliku FrontController.php trzeba znaleźć linijkę
…..............................................
Tools::addCSS(_THEME_CSS_DIR_.'global.css', 'all');
…...............................................
i wpisać pod nią
…..............................................
Tools::addCSS(_THEME_CSS_DIR_.'zima.css', 'all');
Tools::addCSS(_THEME_CSS_DIR_.'wiosna.css', 'all');
Tools::addCSS(_THEME_CSS_DIR_.'lato.css', 'all');
Tools::addCSS(_THEME_CSS_DIR_.'jesien.css', 'all');
….............................................
I to wszystko. I u mnie po zmianach w tych plikach dyrektyw css wszystko się zmienia w danym szablonie i pięknie śmiga.
Oczywiście pamiętajmy, żeby wszystko się od razu zmieniało, musi być zaznaczone w ustawieniach panelu głównego presty - optymalizacja – „wymuszaj kompilację” na tak i „korzystać z ceche” na nie
Co do presty to bawiłem się na 1.4.4.1
Nie wiem czy to nie ma czasami jakiś skutków ubocznych, ale na razie u siebie żadnych nie znalazłem. Oczywiście nic nie zmieniałem w pliku header.tpl
Czekam na wasze opinie.
-
alez zrobiles dokladnie to co ci poradzilem
podpiales tylko w innym miejscu
wywolywanie 4 styli jest nadmiarowe, i tak tylko ostatni bedzie brany pod uwage
wiec zakomentuj te ktore sa niepotrzebne:
//Tools::addCSS(_THEME_CSS_DIR_.'zima.css', 'all');
//Tools::addCSS(_THEME_CSS_DIR_.'wiosna.css', 'all');
Tools::addCSS(_THEME_CSS_DIR_.'lato.css', 'all');
//Tools::addCSS(_THEME_CSS_DIR_.'jesien.css', 'all');
skorzysta na tym czas ladowania strony
zmieni sie pora, zamienisz komentarze
i tak dokonales zmiany
ja w header.tpl, ty we FrontController ( i tak przechodzi przez header.tpl ) efekt ten sam, no prawie
-
Oczywiście, że jest nadmiarowe, tylko chciałem pokazać innym takim jak ja, laikom, żeby to zrozumieli. Ja próbował w tym header.tpl podpiąć to i nic mi nie wychodziło a w tym FrontController od razu.
Ale jeszcze raz chcę potkreślić, że to jest genialny pomysł z tym jednym, własnym plikiem css.
-
Dobra, przekonales mnie
godzinka i popelnilem modul do tego celu
http://prestashopforum.pl/index.php/topic,9073.0.html
Chcesz sie uczyc, dobrze, wiec zadanie dla ciebie
Powiedz, jakiego triku uzylem w tym module i dlaczego.
-
No niezły modulik. Nawet nadpisuje to co ja zrobiłem w FrontController.php. Przy tym moduliku nic nie trzeba szukać po całej prescie tylko w tym module w katalogu css. No jestem pod wrażeniem i tylko w godzinkę? Od razu widzę gdzie moje miejsce. U podnóża Mount Everest. Jak tylko będę miał czas przyjrzę się temu.
-
Trochę czasu się znalazło. Wychodzi z tego, że zainstalowałeś moduł w Header of pages gdzie będzie we wszystkich szablonach i plik styleHeader.tpl dopisuje na samym końcu header i nadpisuje css. Tak to rozumuje, chociaż nie jestem pewny, bo tak jak pisałem wcześniej, tylko ciut-kę znam php i css.
-
podpowiedz 1:
przestudiuj header.tpl - od niego wszystko sie zaczyna
podpowiedz 2:
dowiedz sie co to jest system hookow i jak dziala, jak inicjujemy wykonanie i jak modul odpowiada
podpowiedz 3:
dowiedz sie jak sa ladowane pliki css i js , do jakiego kontenera i czy tylko tak moga byc ladowane
Nie musisz juz odpowiadac na ten post.