Techniki Zaawansowane i CMS
4 godz. 45 min · Webflow · UI, UX i Webdesign
Grzegorz RógIdea ArchitectDzięki CMS masz możliwość zdefiniowania w ramach Webflow bazy danych wraz ze strukturą, którą możesz uzupełniać Ty lub osoba zajmująca się rozwojem strony, w ramach intuicyjnego modułu Editor, bezpośrednio w przeglądarce. W Kursie przyjrzymy się temu, jak działa CMS, jak tworzyć kolekcje i korzystać z dynamicznych danych w ramach podstron w Webflow, jak również w ramach stron kolekcji.
Rozpoczniemy od stworzenia systemu identyfikacji dla naszej strony, który umieścimy w ramach Style Guide w Webflow, dzięki czemu kolejne modyfikacje stylistyczne będą łatwe i dziedziczone na wszystkie podstrony naszego serwisu. Dobre przemyślenie struktury i komponentów pozwoli nam na wydajną pracę w Webflow i szybkie poprawki.
W Kursie przygotujemy od podstaw strukturę danych bloga, użyjemy dynamicznych placeholderów a następnie osadzimy bloga w ramach istniejącej, statycznej witryny, którą przygotowaliśmy w kursie podstawowym Webflow. Dowiesz się wszystkiego o tym, jak działa CMS i jak wykorzystać jego bardziej zaawansowane możliwości.
Poza tym, w kursie przewidziałem szereg lekcji, które pozwolą Ci wzbogacić funkcje Twojego serwisu o logikę biznesową, którą stworzymy bez konieczności używania języków serwerowych. Zbudujemy wyszukiwarkę opartą o elastic search, czyli najlepszy otwarty system do indeksowania i zwracania wyników.
W kursie pokażę Ci też kilka rozwiązań, które pozwolą rozbudować możliwości Twojej strony o przydatne automatyzacje, w ramach których wykorzystamy takie narzędzia jak Zapier czy Integromat. Dzięki temu będziesz mógł wyjść poza ekosystem Webflow i wpiąć na swoją stronę, bez kodowania, w zasadzie dowolne narzędzie, z pomocą API!
Kurs przygotowałem przede wszystkim dla osób, które znają już podstawy Webflow i potrafią stworzyć w tym narzędziu dowolny layout, ale chcą wzbogacić swoje projekty o dynamiczne dane i zaawansowane narzędzia, które oferuje ta platforma. Konieczne są tu solidne fundamenty Webflow z kursu podstawowego oraz przynajmniej podstawy HTML i CSS. Nie zaszkodzi trochę wiedzy z programowania, choć nie jest to obowiązkowe. Ten kurs to świetny sposób na to, aby przygotować funkcjonalne MVP swojego produktu, ale też zacząć oferować klientom dynamiczne strony i funkcjonalność CMS w połączeniu z narzędziami no-code, które pozwala tworzyć projekty w rekordowym czasie!
Witaj! W kolejnej lekcji pracujemy dalej z naszym Blogiem, czyli z jego główną stroną.
Teraz dodam tutaj element sekcji Section.
Oczywiście muszę go wyciągnąć poza
nawigację. Wewnątrz tej sekcji znajdzie się kontener,
standardowo i wewnątrz tego kontenera mogę
zrobić kolejny techniczny div block, który nazwę blog hero title.
Będzie to część tytułowa tego elementu bloga, czyli w kontenerze znajduje
się taki element, sekcja, może dostanie margines od razu, żeby
była oddzielona odpowiednio od nawigacji górnej. Sam blog hero title
będzie miał też pewne właściwości. I teraz można pomyśleć sobie o tym, żeby te
właściwości starać się zapisać sobie na później, czyli mieć je w naszym Style Guidzie.
Jeżeli przykładowo robimy karty to zawsze one mają białe tło, zaokrąglone narożniki i
zawsze mają jakiś cień i ten cień w zasadzie zależny jest od tego, czy ta karta
jest duża, czy mała. Jeśli jest duża to ma też odpowiednio bardziej
rozmyty cień, jeśli jest mała ma trochę mniejszy, więc to, co moglibyśmy zrobić to
usunąć na chwilę tę klasę blog hero title, nadać jakąś inną ogólną klasę np.
Card Big.
W ten sposób
i będzie ona zawierała te podstawowe właściwości, czyli kolor tła, który
wybierzemy na biały, jak również zaokrąglone narożniki Border
Radius 12 i Box Shadow, który dodamy będzie to 180 stopni, 20, 30 i 6% Alpha
opacity.
I w tym momencie zdefiniowaliśmy sobie taką fajną pomocniczą klasę.
Gdzie ona jest?
Którą będziemy mogli reużywać na elementach, więc, jeśli teraz usunę Card Big i skorzystam
z tej klasy blog hero title, którą stworzyłem, ale dodatkowo dodam tutaj Card Big
to będę miał to ładnie ostylowane. W ten sposób możemy zrobić sobie właśnie takie
typowe na przykład tła które mamy na stronie,
typowe elewacje tzn.
jakieś wielkości cieni, które możemy tutaj np.
elevation 1, 2, 3 i zrobić sobie cień, który będzie
największy, później mniejszy, później trochę mniejszy, więc można robić też te elementy
Style Guide'a właśnie z pomocą takich klas, które później zresztą warto
jest przerzucić do samego Style Guide'a, czyli do samej podstrony Style Guide.
Czyli mogę przejść teraz tutaj. Dlatego, że często zapominamy o tym
jak zrobimy, że mamy jakąś klasę, której moglibyśmy użyć w takiej sytuacji.
Możemy np.
wstawić sobie tutaj jeszcze jedną taką sekcję, która będzie się nazywała Building Blocks.
I do tej sekcji wstawimy sobie
tę przykładową kartę, czyli blog hero title.
Możemy jeszcze dodać jakiś nagłówek H3 tutaj.
I wpisać, że będzie to Cards.
Stąd możemy usunąć teraz obie klasy i wybrać tylko klasę Card
Big, ponieważ to ona zawiera te style, które stworzyliśmy.
Dobrze by było jeszcze zrobić z tego osobną całą sekcję, może
Style Guide Section skopiuję i wkleję tutaj i będzie, to jest ta część z Building Blocks,
więc umieścimy ją tutaj, a te pozostałe rzeczy, które się tu znajdowały usunemy.
Znajdą się one w Style Guide Section pod spodem, czyli tu.
A z niej usuniemy
cały Building Blocks, czyli mamy teraz
Building Blocks, a pod spodem dopiero znajdują się elementy sekcji.
No i świetnie. Mamy uzupełniony Style Guide.
Wracamy do strony bloga.
Teraz przed nami najciekawsze zadanie, czyli umieszczenie w środku danych z CMSa.
Jeśli przejdziesz do designu to właśnie ten element będziemy robić,
a tutaj ma wyświetlać się najnowszy post,
ale dodatkowo taki, który jest oznaczony flagą featured.
W związku z tym będziemy musieli po
pierwsze umieścić tu element kolekcji, od tego zawsze zaczynamy.
Czyli dodaję sobie CMS Collection list i wskazuję, że będę korzystał z kolekcji
blog postów. Tutaj będzie wyświetlany jeden z blog postów, jego dane.
Wszystkie blog posty zostały tutaj automatycznie
załadowane, w związku z tym musimy w jakiś sposób to ograniczyć. Wybieram polecenie Show all settings,
czyli przechodzę do zakładki Settings i w tym miejscu mogę wybrać rozmaite opcje,
które pozwolą wyfiltrować, a także posortować wyniki i odpowiednio je
wyświetlić. Przede wszystkim chcemy wyświetlić tylko jeden, najnowszy post.
Jak to zrobić?
Jest tutaj opcja Limit items, czyli będziemy limitować, ograniczać ilość
item'ów, która jest wyświetlana i chcemy ograniczyć tę ilość do jednego item'a.
Teraz musimy jeszcze sprawdzić, który z tych postów jest postem.
najnowszym, bo ma się tutaj pojawić
najnowszy post, w związku z tym wybierzemy Sort order, czyli kolejność sortowania.
Dodam, z pomocą Plusa, sortowanie i będziemy
chcieli to zrobić po dacie opublikowania posta.
Mamy to automatycznie w prezencie od Webflow dodawane do każdego wpisu, czyli każdy
taki element kolekcji będzie dostawał datę Published on, kiedy został opublikowany,
a my teraz musimy się upewnić, że to sortowanie jest od najnowszego do
najstarszego, czyli najnowszy post będzie zwracany jako pierwszy.
Wybieram Save.
Ale to jeszcze nie wszystko, ponieważ my musimy nie tylko wybrać najnowszy post, ale
też taki, który jest oznaczony flagą Featured i do tego skorzystamy z filtrów.
Filtry pozwalają nam ograniczyć w ramach tych pól, które dodaliśmy, ograniczyć
wyniki. Będziemy chcieli tylko i wyłącznie te posty wyświetlać, które flagę Featured
mają włączoną, czyli jej ustawienie jest na ON. Wybieram polecenie Save.
I w tym momencie już mam skonfigurowany ten
wynik. Podsumowując, będzie tutaj wyświetlany tylko jeden post,z
pomocą opcji Limit items.
Zgodnie z sortowaniem od najnowszego,
a także tylko ten post, który ma zaznaczoną flagę Featured na ON.
No i teraz możemy zająć się wnętrzem, czyli
Item'em. Wchodzę do Collection list i wybieram polecenie Collection item.
Spójrzmy na chwilę na nasz projekt.
Mamy tu po prawej stronie zdjęcie, po lewej
stronie będzie flaga Featured, tytuł, excerpt oraz guzik.
W zasadzie nic nie stoi na przeszkodzie,
żeby cały ten kafelek linkował po prostu do tego ostatniego posta.
W związku z tym, już na tym etapie, ja dodam Link block, który będzie linkował do strony i
tutaj, jeśli wybierzemy stronę fioletową z CMSa to będziemy mogli linkować do Current
blog post, czyli właśnie do tego posta, który jest wyświetlany.
I, jeśli chodzi o ustawienia to w sumie
zmienię to tylko na Flex box tak, żeby wyświetlało się to na całą szerokość i teraz
wewnątrz tego Link block'a będziemy tworzyli kolejne elementy.
Możemy rozdzielić obie sekcje po prawej i po lewej stronie Zróbmy najpierw sekcję po
lewej. Zrobimy div block'a, któremu nadamy od razu nazwę blog post hero.
Niech to będzie blog post hero np.
Wpiszę tutaj blog hero.
Niech to będzie blog hero, a następnie dodamy od razu do niego elementy, czyli będziemy
chcieli mieć Caption na górze i możemy stworzyć z pomocą prostego text block'a.
Kolejno będziemy mieli Heading i będzie to Heading 1. Kolejno
będziemy chcieli dodać Paragraph, czyli excerpt, który tutaj wstawimy też dynamicznie i
ostatni element, który potrzebujemy, to ten przycisk Read now, aczkolwiek, jeżeli
zrobiliśmy całość jako link, to w zasadzie to może być już po prostu zwykły text
block, który tutaj wstawimy pod spodem. Wewnątrz tego tekst block'a
wystarczy, że wkleimy sobie ten tekst Read now, będzie on stały
i kolejnym stałym tekstem, który się tutaj znajdzie będzie Caption, czyli napis
Featured. Heading jest dobrze ostylowany, ponieważ ma styl Heading 1. Natomiast
tutaj chcielibyśmy zmienić to stylowanie paragrafu i zrobimy sobie tutaj Blog Hero Excerpt.
Blog Hero Excerpt.
Nie mamy takich stylów jeszcze w
Style Guidzie, więc ewentualnie będziemy mogli je później dodać.
To, co będę chciał zrobić to ustawić dodatkowo marginesy np.
od góry ustawię margines na 12, z dołu ustawię na 24
i właściwości, które tutaj jeszcze zmienię to Weight wybierzemy na 400,
jak również kolor tekstu zmienimy na kolor szary i będzie to kolor 8d8d8d OK.
I to w zasadzie wszystkie właściwości, które chciałbym tutaj zmienić. Jeżeli będę
ten element wykorzystywał wiele razy, można było tutaj zrobić uniwersalną klasę i
dodać go rzeczywiście do Style Guide'u, aczkolwiek on jest wyjątkowy, na mojej
stronie jest tylko jeden taki element, więc po prostu zostawię go jako osobna klasa.
Jeszcze jeden element do ostylowania to ten text block featured i ja mam coś
takiego jak Caption, czyli klasę, która pozwoli mi odpowiednio sformułować ten
tekst, ale oprócz tego chciałbym jeszcze stworzyć nową subklasę tego Caption
i będzie ona w miarę uniwersalna, ponieważ będzie tutaj zarówno do Featured jak i np.
do tych elementów, które są
tagami, kategoriami, więc możemy to nazwać przykładowo blog tag.
Zmieńmy ustawienie na display inline
Block, w ten sposób. Następnie będziemy mogli, jeśli mamy inline block dodać tutaj padding i
dodamy z altem z lewej i z prawej strony 8 pikseli i z altem od góry i od dołu dodamy 4
piksele. Jeszcze dla tego elementu akurat musimy też włączyć zaokrąglanie narożników.
W tym przypadku zrobimy to na 4 i Color background, czyli kolor tła zrobimy na
kolor żółty, później będziemy ten kolor jeszcze dynamicznie zmieniać, ale to jest
dokładnie już tak jak chcemy, żeby to wyglądało, więc mamy te rzeczy ostylowane.
A teraz ciekawa rzecz, ponieważ chcielibyśmy podłożyć dynamiczne dane z
CMSa do nagłówka i do exceptu, więc klikamy sobie na Header 1, następnie na jego właściwości i
wybieramy polecenie Get text from Block Post.
Teraz możemy wybrać pole i zobacz, że mamy
pola kategorii, czyli Name, Decription itd., które są dziedziczone z kategorii, ale
także mamy te główne pola dotyczące blog posta, czyli Name i excerpt.
Wybieramy tutaj w związku z tym Name,
a w tym miejscu klikamy na Ustawienia i wskazujemy, że ma to pobierać excerpt,
czyli ten krótki opis posta.
No i mamy to zrobione jest dynamiczne.
Jeśli chodzi o całą sekcję, czyli całe blog hero to w zasadzie potrzebuję dodać tu
tylko padding, więc zrobimy padding rzędu 48,
tak było w designie, z każdej strony. Natomiast
nie wyrównuję tego jakoś do lewej specjalnie dlatego, że cały link block jest
ustawiony na Display Flex, więc wystarczy, że do tego link block'a teraz dodam kolejny
div block, któremu nadam na przykład taką klasę blog hero image wrapper.
To będzie nowa klasa, a do niej do środka wstawię obrazek, czyli
wybiorę "a", wstawimy image, obrazek i teraz znów możemy obrazek pobrać z
Blog postów. Wybieram polecenie Get image from blog post
i wybieramy, który obrazek nam pasuje.
Chcemy ten obrazek 16 na 9 pobrać.
I, jeżeli chodzi o jego właściwości to
chciałbym po pierwsze nadać mu odpowiednią klasę.
Będzie to blog hero image.
Stworzymy taką nową klasę, w ramach której chciałbym na pewno zmienić wypełnienie
tego obrazka na cover, tak, żeby on wypełniał całą dostępną przestrzeń. Pokażę
Ci jeszcze, na chwilę to cofnę i pokażę Ci, co by się stało gdybym np.
wybrał height 100 proc. .
Obrazek będzie zniekształcony, a w momencie gdy ustawię go na cover, wtedy będzie
dobrze się wyświetlał. Dla tego obrazka też ustawiamy na sztywno, tak jak było w designie.
Zaraz pokażę ci, jak może nam to pomóc. 650,
dzięki temu on też jest wyświetlany, ponieważ jest fit cover i height 100 proc.
. No to będzie dobrze wyświetlane w tym
kontenerze, ale powinien zajmować jeszcze więcej miejsca.
Natomiast na początek, musimy sobie jeszcze
wrócić do sekcji kontenera, ponieważ chciałem ją trochę lepiej wyrównać.
Jest za dużo odstępu po lewej i po prawej stronie.
Zacznijmy może od tej głównej sekcji. Warto by było jakoś sensownie ją nazwać np.
Section Blog hero.
I tutaj w zasadzie możemy zrobić takie
ustawienie, że zrobimy 120 pikseli marginesu od góry i 120 pikseli od dołu.
Natomiast interesuje nas bardziej kontener, który chcielibyśmy ustawić mu max width
na 1282 piksele. To było dokładnie tak jak w designie i teraz już
rozciąga się to fajnie i zresztą to samo powinniśmy zrobić dla tego kontenera menu.
Czyli to jest kontener 2 możemy zrobić, że tutaj jest blog menu container,
po to, żeby nie zmieniło nam to parametrów ze Style Guide'u, ale tutaj 1282 piksele
wstawimy jako szerokość i też będzie wyglądało dużo lepiej.
Kolejną rzeczą jest zmiana tego jak wyświetla się zdjęcie, aby było to w
proporcjach, bardziej sensownie i specjalnie zrobiłem tutaj w div block'u Display
Flex po to, żebym mógł pokazać Ci, że, jeśli mamy dzieci Flex box'a to one też mają
swoje specyficzne właściwości, które są oznaczone w sekcji Flex child.
I mamy tutaj taką opcję Sizing. Sizing możemy ustawić na zmniejszaj
szerokość, jeśli to tylko możliwe, zwiększaj szerokość, jeśli to tylko możliwe.
Albo możemy ustawić to na opcję Don't shrink
or grow, czyli nie zwiększaj, ani nie zmniejszaj.
Jeżeli ustawiliśmy na blog hero image 650
pikseli szerokości, to gdybyśmy na jego wrapper ustalili sekcję nie zwiększaj i nie
zmniejszaj to mielibyśmy dokładnie ten rozmiar.
Czyli w tym momencie zostaniemy dokładnie w tym rozmiarze.
Natomiast ta sekcja, czyli sekcja blog hero,
może dostać na przykład ten parametr Grow if possible,
czyli, jeśli tylko jest miejsce to powinna
się rozszerzać. I to powinno responsywnie całkiem nieźle nam zadziałać.
Jedna opcja, którą jeszcze warto by było
zmienić, bo dostrzegłem, że zdjęcie nie ma tutaj zaokrąglonych krawędzi.
Możemy nawet na sam blog hero image ustawić radius na krawędziach z prawej
górnej i z prawej dolnej strony i w tym momencie będą one zaokrąglone.
No i może jeszcze szybko sprawdźmy wersje
responsywne, więc nie będę jakoś szczególnie się na nich koncentrował, jeśli masz trochę
więcej czasu to warto na pewno poświęcić tutaj chwilę.
Natomiast ja po prostu zrobię jakieś
szybkie fixy, żeby to wyglądało w miarę dobrze.
Jednocześnie zmienię blog hero title,
żeby na wersjach mobilnych, włącznie z tabletem, dostał już jakiś mały margines
z lewej i z prawej strony. Tak to wygląda lepiej.
Wydaje mi się też, że na tej sekcji blog hero moglibyśmy zmniejszyć trochę padding.
W sumie z każdej strony. Zróbmy to w ten sposób.
I jeszcze wygląda na to, że w momencie gdy
rozszerzemy właśnie menu tutaj jest źle wyrównane, jeśli zaznaczymy block menu container,
który ma Display Flex ustawione to wyrównanie justify.
Po prostu ustawmy na do środka i moim zdaniem tak już będzie OK.
W tej wersji mobilnej możemy już zrobić tak, że cały link block, który jest flex box'em
ustawimy dla niego Direction vertical i zrobimy to tak, że odwrócimy kolejność.
Czyli wybierzmy Reverse i będzie trzeba jeszcze dla tego block'u
link block Hero image wrapper, ustawić inne właściwości, a w zasadzie na zdjęciu mamy
300 pikseli i to dlatego. To może to zmieńmy na z powrotem na 650 pikseli.
Teraz powinno być OK.
Jak również pozbędziemy się zaokrąglonych narożników z prawej dolnej części, a wrzucimy
to na górę i zobaczmy jeszcze tę wersję małą, mobilną.
Wydaje mi się, że jest OK. Także udało nam
się zrobić też w zasadzie na szybko, ale są działające te
wersje responsywne, możemy przejść do kolejnej lekcji.