0:08
hey everybody how we doing
0:15
today I'm drowning in my sorrows yeah you got me actually a little warm let me
0:20
take this sweater off here oh shoot car key one second my I think my son's going
0:26
to need this car key to go to work one second let me uh I'm going to go uh put this downstairs next to the front door
0:32
one second give me just give me one
0:57
second okay sorry about that
1:09
all right Matias how's it going Mr Cole Ryan is here Mr oil field gas
1:16
gifts oil field sorry oiled field oil and gas gas man I am Tongue Tied today
1:24
gas gifts man that's like a tongue twister oil field oil and gas gifts man
1:30
that's a a mouthful Ryan Franco how's it going
1:38
bud excellent scooty the gezer suy the
1:48
gezer okay so guys as I said my uh did I say in an
1:54
email I don't know I work three three days on this I am I'm actually quite pooped
1:59
I uh I worked hard to get this site done um by today and uh yeah I literally 20 minutes
2:09
ago I had to run to the corner store to get a little energy boost cuz uh man I I
2:15
wasn't sure how I was going to do a live stream so hopefully we'll we'll be good to go normally when I get when I get
2:21
going get the juices flowing on the stream just starts going hard right so
2:26
wolf how's it going excellent good to see you Budd Mr
2:33
Len Canterbury I've been to Canterbury excellent that was actually
2:40
one of my one of my favorite little towns in uh when I was in England man that was 18 years
2:47
ago damn that makes me feel old 18 years ago
2:54
okay so so long ago okay let's um so today we are going to
3:01
be building a website from scratch now I already built it okay um
3:08
it did take me a pretty solid two and a half days um and two of those days
3:16
yesterday or Monday and Tuesday were like long days too okay so I'm going to
3:22
try to condense this down as much as possible um I do want to make sure that
3:29
I kind of go over the whole process I think it it's a simple website but yeah I thought it would be
3:36
fun to uh a build a a website from scratch with Foundation 6 I know that a
3:42
lot of uh new users are coming from Foundry and kind of want to learn the ropes and this a pretty simple it's a
3:48
simple website um and so yeah I thought that would be kind of kind of an interesting idea to just rebuild this
3:55
entire um site from scratch and then um integrate it with total CS 3 now I use
4:01
total CS3 on this because well uh it's I I I needed to build a website
4:10
that was live right it needed there there's nothing to test a product than to actually build something with it now
4:17
locally I build these little test demo websites right but like building an actual web
4:24
page or an actual website using a tool nothing can compare to that right so um
4:30
yeah last Friday now this website is for a mastermind group that I run uh I've
4:36
ran this group for maybe 10 years now I don't even remember it's been a long long long time
4:43
um and it's just a little website to help manage our weekly meetups okay and
4:49
um yeah so uh I thought it was it was a simple website something that was useful
4:55
and I got to test out total cms3 okay so it was kind of a win-win win all around
5:01
and without further Ado let's go ahead you don't want to hear me jabber on about this um you want me to share my
5:12
screen all right Kyle he needed a Celsius today too yeah D these things
5:18
these things are good I I I I've resisted watching the videos that tell
5:24
you how bad they are for you um because man they work uh never have two of them
5:31
though like early on I I banged two of them a couple times and wow that's a lot
5:36
of caffeine okay so keep it to one you're good to
5:43
go um but because my wife says they're super horrible for you and I resist
5:49
watching the videos telling me why they're horrible for you I try not to drink them unless I I really feel the need to so um today is the day um where
5:58
are we going okay let's go ahead and and let's load up this
6:05
website okay let me log in here oops one second got to go into this and we go into there oops what happened there oh
6:13
that's the wrong one uh that that login for the the live site this is my local
6:20
one actually no yeah no actually hold on
6:25
all right okay
6:30
all right uh that's the admin portal we want to go to the live website all right now obviously um what
6:37
you're seeing here um this is the site we're going to be building today okay um
6:43
simple little web page right there's not a lot to it um you know it's just simple
6:49
menu bar up at the top have a little mission statement um we'll have like a little grid of meeting notes right so
6:56
notes from every meeting um who attended who missed um and then further down we have
7:03
like a directory okay so directory of people and
7:09
uh oh I I guess here let me let me let me go over the feature list from from
7:15
top down I guess okay so up here we have the ability to add a new meeting so you can click on that it'll add a meeting
7:22
okay um we have our list of meetings here you can click on this and it'll open up that particular meetings note
7:29
notes okay obviously this is all dummy data okay but uh yeah so we'll have
7:35
notes here um and then you can also search right so you can be like uh you know
7:41
search for Joe okay and voila right so it has a search page you can do a full
7:48
content search here and it'll search all the meetings and give you the results and then when here you can go ahead and
7:53
see you know the meetings Okay um so yeah there we go okay so that's pretty
7:59
simple um and then further down we have the uh all of the members of the group okay uh
8:05
with their phone numbers if you click on the phone number it'll actually call it with FaceTime or whatever right uh you click on the email it'll send the email
8:12
um it'll open it in mail.app right or whatever your default Emil client is um
8:18
we click on their person's website if you click on here let's go to
8:23
me right if you click on this this is my goals right um so you have a little bit information about me my my goals for the
8:30
year my goals for this particular quarter okay um and then below we have
8:37
uh links to all the various social media profiles right so if I want to find now
8:42
in this case I only have it on my card okay it doesn't have any of the others but kind of get it so depending on if
8:48
the person adds that information to their profile um the icons will show up here you notice that everybody does have
8:54
a contact card and if you click on that um it actually opens up a QR code which you if you were to scan that with your
9:00
phone it'll add the contact card to your phone which is pretty cool okay um would
9:06
be nice to eventually figure out a way to if if you're on a Mac download it or something like that right um but yeah uh
9:14
I just wanted kind of an excuse to use the QR code features in total CMS so um
9:20
yeah there we go total CMS has QR code features if you didn't know okay um and that's basically it uh
9:27
also um with the a the entire site is authenticated so you have to be logged
9:32
in to access it none of it is accessible on the web um and if you click on this
9:37
edit profile and goals um it takes you to your profile right I know you are
9:43
logged in so I allow you to edit your profile so here you can go ahead and edit all your
9:49
information and uh we have all of that uh kind of in a custom a custom custom
9:56
form right so this is a custom total cms3 form um and then I've customized that so that it actually you know uses
10:02
these vertical tabs okay pretty cool I like it I I think it's I think it works out fairly
10:09
nice okay I'm pretty happy with how things turned out um okay let's go back to the
10:15
homepage um there is one there is actually one page um so there's a charter page um so again I just built
10:23
the site this week so uh one thing we're we're g to be doing in my meeting on Friday um is we're kind of drafting up a
10:30
charter for the group it's kind of like the the rules of the group right and and you know various standard operating
10:37
procedures and whatnot right and um so this this actual page is will be
10:43
publicly accessible um because let's say in the future we want to invite someone uh we
10:49
want to send them our Charter so they can actually see it and know whether or not you know this kind of group will fit
10:56
with their schedule and whatnot okay um so just show you here I'm going to log
11:01
out okay and if I go to if I go to the Charter
11:08
page hey you'll notice that the charter page is accessible um minus the menu right it doesn't show any of the menus
11:15
it's just like the blank Charter page okay um but if you go to any other page if I click on this I'm not logged in so
11:22
it's going to prompt me to log in
11:30
oops did I did I type that wrong what the
11:36
heck oh I need to be hold on there's there's two level all we'll talk about that in a little
11:42
bit right um and I will go into the when we start doing total CMS um we'll dive
11:48
into the admin area a little bit but at first actually we're going to go over the just the raw design of the website
11:57
okay so we're going to we're going to review the raw design um because before I I integrate total CMS I had to design
12:04
this I I didn't know what I wanted the site to look like um and so yeah I mocked it up using purely Foundation 6
12:11
Stacks okay and uh so without further Ado uh let's close this browser window
12:17
we're going to open up uh rapid Weaver he we're going to open up um so
12:23
this is the project file now I wanted to uh kind of build this from scratch
12:29
instead of me just going through this project file and showing you um I thought it'd be fun to um build
12:35
components from scratch and then maybe bring in some some stuff from this project file okay um so I'm going to go
12:42
ahead and uh create a new project and uh let's go ahead and add a
12:47
Stacks page okay and so again this is just a completely blank uh blank project
12:55
file and that's what we're going to be working on
13:00
okay now um here let's just do uh we'll just call this
13:08
live I'll save it to my desktop all
13:14
right now before I can start designing um
13:19
something I felt that I needed
13:24
is like something that's important I think to any website okay okay and that's uh here let's just bring uh bring
13:32
here okay something that kind of is is the rock that kind of determines everything about a website not
13:38
everything but a lot right is is a logo right like so um my group as you see is
13:45
called the growth Guild okay and um I was we we needed a name so
13:52
actually the name is new too before we were just a group of people that met and I was like well if I need if I'm going
13:57
to build a website for us we need a name right so I found the growth Guild okay uh.org and registered that this week and
14:05
uh and so we have a name cool and then I I needed a logo
14:11
okay and um so let me show you the logo now I didn't design this logo okay um
14:18
and it looks it looks a little rough large okay but at a small size it actually looks quite nice I think right
14:26
um I use chat GPT to Design This okay
14:31
and um yeah I figured I'll uh here let me show you exactly what I did let me go ahead I'll open up chat GPT on my Mac
14:38
right hold on let me put it over here I only want to let me find the chat I don't I don't need all my chats uh
14:45
posted on the internet so there let me find the oh okay
14:52
here right so here is my chat that um that I Ed to create this logo pretty
15:00
much just said I need concepts for a logo for a mastermind group called the growth Guild that's all I that's that's
15:07
what I typed and chat gbt came out and B popped all these things um and uh so it
15:12
gave me a bunch of ideas and I liked this tree uh this tree emblem with roots and branches right I like the concept of
15:20
that idea right because it's kind of like um it's kind of like growth right so I said I love the tree emblem can you
15:26
mock up some logos for me and its first mockup was this and I loved it I was
15:33
like I really like that okay um and I at first and then I went
15:39
to I said hey can you give me the file and it created this and I was like that's not what I wanted um I I wanted
15:46
this logo and I couldn't actually I could never actually get this particular
15:51
logo it to just give me that raw thing right um so what I ended up doing was um
15:58
I I loaded this particular image and I load it into pixel Mater and I just
16:03
cropped it and straightened it out and that's all I did for the logo okay um
16:09
it's just it was purely just me downloading this particular image um throwing it into pixel Mater
16:16
and you know just getting rid of the background and as you see in the screenshot the image was a little
16:22
cockeyed so all I did is straighten it out um so yeah not rocket science as you
16:27
see here here is the the actual image right again pretty simple and this
16:33
website again it's it's nothing for a huge company if if I were to use this as a business or something that was like
16:39
you know more than just a group that I run um I'd probably take this concept and then redesign it using Affinity
16:46
designer or pay someone to do it okay um I do like the concept of it but as you
16:52
see when we get larger okay um it just it's it's losing
16:58
some stuff right um but like I said earlier I think it looks great small and that's pretty much the only place it's
17:04
going to be used up at the at the top of the site okay now um next up is so now
17:11
that I have my I my logo situated I needed to um figure out the
17:17
site colors okay um now what I did was I
17:23
opened up the logo here let me just go ahead and open up this logo okay
17:29
and I wanted in order for my site to if this is the the logo for my site I want
17:35
the colors of the website to be used from this logo right um so what I did is
17:40
I took my uh my favorite color tool it's called color slurp okay and all I did is
17:46
I just used this Color Picker and I picked various colors um from the image
17:51
and I created a color palette a few shades of green um kind of this gold that's around the outside um and a
17:58
couple different different shades of white okay um I kind of have a very
18:03
light green which is actually here and then actually what what I did was so this is uh this I thought this was going
18:10
to be my white color but it turns out it as it wasn't white enough um so what I
18:16
par what I did is there were no other versions of white in this logo and I didn't want to use white white I I try
18:23
in my designs to not use Pure White okay I always try to tone the color down a
18:29
little bit whether or not it's um it's just toning it down um from here let me for example
18:36
let's just go ahead and do uh let's go to my grayscale color palette okay um and if you see like here is pure white a
18:44
lot of times what I will do is I'll I'll adjust it now if I want it to be just pure white but toned down a trick is to
18:52
um take your colors and reduce them all by the same amount okay so let's say I
18:57
do 250 250 250 okay um that's fa a lot
19:03
of times that's actually maybe too much I think 250 oops uh hold
19:09
on ah if I can type okay FC is I I use that I use FC a lot which is 252 that is
19:17
very very close to White okay um but it just kind of tones down the really harsh
19:23
brightness of white sometimes okay um so uh but what I did on
19:29
um the growth Guild okay is I I started with this color okay and then um in this
19:36
tool it has a let's see what did I do here here tints um and I just kind of
19:41
kind of went through this and was like I just want a slightly whiter tint like
19:47
that's pure white this is just slightly off white and that was this color that I used here uh well uh it's not the same
19:54
color I I used these to kind of find a slightly off-white version okay now if
20:00
you see these these colors are 248 249 246 um what this does is it actually
20:05
adds a very I'll bit very minor a very minor green tint to this white
20:14
okay um so yeah so that's how I found my color palette so now I I have my color
20:19
palette that I want to use for my website now let's go ahead and start using that color palette
20:27
okay and and um so over here what we need to do is we need to start with a sight Styles right so let's go ahead and
20:33
start with a sight Styles okay and uh what I do here is uh
20:40
all let's keep it big uh normally I mean I've used site Styles a lot so uh I tend
20:46
to uh remove those uh distractions um I loved them when I started but uh I tend
20:53
to not need them anymore okay um they just kind of are distractions but I do
20:58
like that they're there uh and some people love them and I do think they're great okay um so let's go ah here uh
21:07
also I I know I'm not going to use any of these extra utility classes I recommend you turn that off if you don't
21:13
think you're going to need them they're on by default for backwards compatibility sake um but yeah uh I I
21:19
turn off the load extra utility classes I love the normal utility classes though okay uh we might dive into those I don't
21:25
know if we'll dive into that today I have a video on them check it out he now our site Background by default site
21:31
backgrounds for um all Foundation 6 sites are going to be white and like I said I don't like it to be white so I'm
21:38
going to go ahead in here and I want it to be this color okay so what I'm going
21:44
to do is I'm just going to take that color and drag it into there okay as you see it saved that color right that's
21:50
actually kind of a cool little trick that I like about these color palettes is you can just drag and drop your color
21:55
onto the palette and voila you get the color okay um max width um I think in
22:03
originally my tests i h i reduced this to be a th000 pixels and then I increased it back to 12200 I I just like
22:08
1,00 pixels for a standard site width
22:14
okay okay um now we have our our primary color our color palettes okay and what I
22:21
want to do is um I'm going to set my uh primary color to be this green okay and and then
22:28
I'm going to use this white as the primary text color okay my secondary color I'm going to use that brown and
22:36
I'm going to use that same white color right um let's see for white um I'm
22:42
going to use this color so if anywhere I'm referencing white um in various things I'm just going to use that okay
22:50
um and then for black I'm going to reference this darker um gray green and
22:58
then my overlays I also want to use the darker green okay and actually we're going to give that like a 70%
23:07
opacity I'm kind of whizzing through some of this stuff I mean a lot of this stuff I took time to kind of do back and
23:14
forths of of my content right um okay so now on my header I'm going to use this
23:20
color green for my headers and then um I forget I think am
23:26
my text I think I left it black let me just check no I did make the text uh the darker
23:31
green okay and so uh instead of the text being black it's going to be this very dark green voila my links are going to
23:39
be that color okay and then my link hover uh I forget what I did what did I
23:45
do on link hover I just kept it the same color right so link hover I just kept it
23:51
the same and then what I did do is um I did um when you un when you hover over a
23:57
link it'll underline it okay so uh by default links are not underlined when
24:02
you hover over them they will be underlined okay
24:07
um uh let me I think I kept 48 and then I think I did 36 on my h3s this is
24:14
something that I mean you'll tweak probably over time right and then here I think I did
24:20
uh 36 there yeah I think that's right uh my buttons I think my button text I did
24:27
slightly larger let me see uh buttons 18 and 20 yeah so here
24:34
we're just going to do um um 16 oh no uh
24:39
10 12 18 and 20 okay these are uh you can customize
24:46
the size of your text in in the various size buttons which is nice okay um and
24:51
then my my border radius I increased that to five I believe so uh yeah I did
24:57
that five and my gutters uh 20 pixels 32 I think I yeah those were default okay
25:03
so that's site Styles all done okay um and if we preview uh you'll notice that
25:10
the there's nothing except the site background which is no longer white
25:15
okay but there we and if we turn on the color palette so you can kind of see there's our our colors okay so there we
25:22
go um actually the text oh it's a darker green oh yeah cuz
25:27
I used the the dark green uh for the text and then the slightly lighter for the headers that's right
25:34
okay um so now my base colors for my theme or my site um are pretty set and
25:41
they're all based on that logo okay now something I am going to do is just to save some time um here we're just going
25:48
to did I do anything there's nothing here it's just a container okay sorry I'm going to refer that other site just
25:54
to kind of remind myself of what the heck I did um um just to kind of make
26:00
and I added some padding to that so we're just going to add I'm going to add a p24 here just to add a little bit of padding around the entire site content
26:08
okay um and then at the very top we're just going to have this um I'm just going to copy this in there and we're
26:14
going to paste that in oops paste right and that is inside the three column um
26:21
so if we look at this um pretty simple right it's just the um I have a three column stack okay uh and if we preview
26:30
that this is what we're looking like okay so we have um our picture okay uh
26:35
with our logo we have our header uh and then we have a menu okay
26:42
and um essentially the column one shrinks to content um and then the third
26:49
column also shrinks to content and then the the center column that has this header it's just Auto it's going to fill
26:54
up the rest of the space okay um by doing that essentially um it gives us
27:00
that look right so if we see here uh column one is set to shrink to content uh column two is set to Auto and column
27:07
three is set to shrink to content okay there we go um and I think
27:12
that's all I did there now another thing that preview this I set this preview said I don't
27:18
look at the stacks so maybe I I redevelop something so um down here I have a uh accent line right just to add
27:25
a little bit of divider so I'm just going to go ahead and check in pop we're going to do that okay
27:33
now if you notice that this divider is not necessarily exactly what we what what I think would look nice so what I
27:40
want to do is uh we're going to go ahead and um let's style that a little bit and so uh
27:47
here let's just do that uh I'm going to go ahead and add in a uh a border
27:53
Swatch okay and uh what I want to do is I want to style uh the divider
27:59
okay um so I think if I go to elements actually and just do divider is divider
28:04
in here oh interesting divider is not in my list here that's interesting I need to that should be in
28:10
the list right what I'm going to do is I'm just going to go to CSS I'm going to type HR because I know that's what a divider is that's my bad I you know I
28:17
should have that as a page element since it's a def definitely a foundation element but so I want to style um this
28:24
is going to style all dividers on the page okay and uh what we're going to do is I'm going to um for the color of the
28:31
divider I'm actually going to use a Swatch right so we're we're going to see me do this a lot during this project
28:36
where instead of going simple and defining a color okay what I'm going to do is I'm going to defi I'm going to use
28:42
a color that's defined inside site Styles okay so um this instead of uh
28:47
defining the color I'm going to set to be my secondary color okay and remember the secondary color is here let's let's
28:53
enable the colors back so we can kind of see those my secondary color is this this golden brown
28:58
right all right um and then on top of that I think I want I think I you made it a little bit fatter right so we're
29:04
just going to do um and I only want it on the bottom right so we're going to do
29:09
uh let's see border size was going to be two pixels okay and we're only going to do the bottom border and uh we're going
29:17
to only do the bottom border and make it solid right so let's uh let's preview that there we go there's my nice little
29:25
um line okay my little border all
29:31
right now the next thing that I did actually before I even developed all the page content was I I felt I needed to
29:39
find a really good font okay now I spent a long time testing fonts and playing
29:46
around with fonts and and all kinds of stuff right oh there's an update
29:52
uh I'll remind me later right I won't install that update now while I'm on a live stream don't break things when
29:57
you're on a live stream um okay and uh I use this app called uh right
30:04
font uh you don't need it though it is not cheap okay um but one thing I like about it is um you can actually search
30:11
and look through all the Google fonts okay um now you can also just go here and go to
30:17
fonts. goole.com okay um and you can PES through all the
30:22
fonts here another really great resource um is and actually use this um for this
30:30
project okay if you go to type wolf there we
30:37
go okay if you go to typ Wolf um there's a lot of this interesting site where he
30:43
kind of just shows you tons of fonts and font pairings okay and I think on here
30:50
he has let's see top free fonts that aren't oh that aren't Google so here's uh top
30:56
10 uh font combinations on Google gole fonts okay so here is a oh this was his
31:01
his paid product which I own I do own that and it's good um oh here top 40
31:08
Google fonts okay um and so here we go I I think I actually used this and I found
31:15
the the font that I use
31:23
is where is it there it is it's algra sand
31:31
oh here it is uh oh it's very it's at the very top okay so I I chose this I
31:38
wanted um for the heading at the top of the page okay um essentially what what I did
31:45
here is uh let's go ahead and type in the uh growth and actually I wanted it
31:53
in all caps right so it's the growth Guild okay and
32:01
um in here you can kind of you know I wanted a a Sans serif okay I knew I I
32:07
wanted that and by property I kind of wanted I knew I wanted like a fatter font okay um and so you can kind of just
32:15
kind of peruse through these and and see the all the various uh types and how things look right um and if we look here
32:25
this is the one that I chose okay uh Sands bold it's the one that I
32:31
chose and um then what I did is uh so if you go to if you visit this on Google
32:39
fonts uh let's go ahead
32:44
and oh on my on my on my laptop I got used to the new version that has a
32:50
different layout one second give me a give me a second here
32:55
uh where can I get little panel they changed the layout in this in the tool there's a nice sidebar
33:02
in the other one in the new version that I can like copy the name oh well let's
33:11
uh let me just here copy this name there we go that way I don't remember need to remember how to type it we're going to
33:17
go into browse Google fonts okay and I think Google fonts if
33:23
we go into this uh Google fonts itself
33:29
has pairings choosing type oh they used to do they not have that
33:39
anymore I guess they don't have that anymore um and uh was it in here nope
33:47
essentially that now what I so I I knew what I wanted this this particular font okay and then what I think what I did
33:54
was I did um pairings okay so if you just search for your font and
33:59
recommended pairings oh here on typ Wolf they have it download oh font
34:08
pairings uh let's see what did this they use that pleas he
34:14
tell you what font no he doesn't uh best font pairing oh I think
34:21
it was I I remember this site I think yes it was this site so yes I did Google
34:27
algra s's font pairings and I found this page and um I I went through a bunch of
34:33
these I ended up all just spoiler alert I ended up with with Merryweather okay
34:38
so uh what I decided was I was going to use algra Sands for my headers and then
34:43
I was going to use Merryweather for everything else on the page okay so um
34:50
let's go ahead and set that bad boy up um okay and just to save us a little
34:56
bit of time I am just going to I'm going to cheat and I'm going to go ahead and I'm going to
35:02
um copy those and I'm just going to paste them
35:07
right in here okay uh we'll look at them but just save me a little bit of time here because I know we're uh we got a
35:13
lot of stuff to cover today so here we have uh I loaded my two Google these are the Google font Stacks
35:20
that are here okay that come with Foundation 6 now I know not everyone can
35:25
use Google fonts right if you esecially if you're in Germany right um You can always download those and use them as
35:31
Local web fonts or whatever okay for Speed and convenience I just went with Google fonts okay um so I chose uh the
35:41
default font here is Merryweather so if you look what I did is I set the Page by default to be um Merryweather okay um
35:48
normally what I do is I assign a class of Merryweather um of the the name of the
35:53
type face right so that way if there's anything else that I know I specific speically want to be to be a particular
35:59
font um all I have to do is put the Merryweather class and it will kind of be forced to you know get that font
36:06
family um so again pagewide default because I want this to be the pagewide default throughout my page um I assign
36:13
it a class of Merryweather so if I can ever want to use that I can um and then
36:18
further down you put in uh this edit label is just to kind of give you a uh
36:23
some notes okay this is important though family name Merryweather that has to be
36:29
the exact name from Google fonts okay um and then uh you define what
36:36
weight you wanted I want this to be 400 okay so I'm loading the 400 weight
36:43
of Merryweather for all text on my page then you you can supply a fallback which
36:49
is uh here I I supplied a serif font if you're curious what a serif
36:54
versus a non-s serif is I don't want to go town too far this pathway okay um
37:01
but so you you'll see things like siif and Sans serif I'm not going to go into the other ones script is obviously uh
37:07
you know script ones right so they're kind of the the more fancy crazy fonts okay but a lot times people don't know
37:14
what a serif and a Sans serif is okay Sans or a serif font okay if you
37:22
look at these fonts that we're looking at here you'll notice that each letter kind of has these tails
37:28
okay um those are called serifs okay so all these fonts like the
37:35
T instead of it just being a a straight at the top it has these little these little doys right these serifs um these
37:41
accents on every character okay that is a serif font now
37:47
if we look at a Sans serif you'll notice that there are none of that right the T
37:53
it's mostly I mean there's some accents to some of these fonts right there's kind of some curvature they're not all straight lines okay but there's nothing
38:00
there's no hanging serifs or Chads coming off of the letters so that's why these are called a Sans serif Sans
38:08
meaning does not have Okay so yeah Sans siif doesn't have
38:16
little fancy dooh coming off the letters that's a very technical term doohickey
38:21
okay so yeah these serfs are a sand serpant are pretty much are more they're
38:27
considered to be a more modern um type face now um I personally think that it's
38:34
nice that if you mix up Sans serif and sarif fonts on a web page okay let's go
38:41
ahead and search for um let me just turn off that filter and let's search for Merryweather
38:49
okay um if you see Merryweather is a serif font but the algra Sands is a sand siif
38:58
font I think it's nice to mix up your headers and your your text to be the
39:05
opposite of each other so here um again Sans serf is going to be my headers and
39:12
then Maryweather which is a sarif font is for my default text so there we go
39:19
okay um yeah little uh text or font education there
39:27
so here I'm Lo loading Merryweather and then in this Google font what I'm doing here is um I'm
39:33
loading in again here let's start at the bottom here my family name is algra
39:38
Sands the font weight that I want is 700 um and then further up I gave it a
39:45
class of algra Sands so I don't know maybe I wanted a button or a paragraph for some reason to be algra Sands I can
39:52
plop that class on there and voila okay then up here at the top I don't want
39:58
this to be Page by default because I only want this to be default on all of my headers so I checked all of my
40:03
headers now sometimes you don't want your H6 to be the header maybe you want that to look more like the default text
40:09
on the page so there we go right but as you see here you can select all the elements that will be assigned by
40:14
default you can give it a class um and then you know obviously your font family definitions now here I gave this a uh
40:22
oops this should be a Sans serif fallback font okay because algra Sans is a Sans serif font you want your fallback
40:29
font to be a Sans serif not a serif that way um while the font is loading it will
40:37
display your headers as a Sans serif font um that's installed in the system
40:42
and then it'll convert it to the font once once we're done okay so um now that we've loaded those let's go and
40:49
preview oh and in preview I hate this the Google fonts sometimes they don't
40:54
load inside so if we preview in the browser you'll see now we get this nice
41:01
uh well I I think it's nice right this nice bold um up here at the header um you'll see that now this is uh
41:08
Merryweather okay uh with my menu now if you notice this isn't this
41:13
isn't really um lining up properly with the logo it would be nice if if the logo and the text were were proper right if
41:20
they were all the same size okay so um one thing I I didn't mention here is my
41:27
picture I set it to be 48 pixels okay it's a circle right so I know it's going to be 48 by 48 so I know that this image
41:34
is going to be 48 pixels tall now um in sight Styles what I did
41:40
is since I want them to all be the same size if you notice here I made my H1 48
41:46
pixels tall okay so that means in theory this
41:51
text is the same size as this image okay but why aren't they they they lining up
41:57
and that has to do with font uh or I'm sorry with line Heights um by default
42:03
normally when you're typing text um the the size of your line needs to be taller
42:09
than the size of the font itself hopefully that makes sense and so and you see this when I highlight this
42:15
you'll see that there's a bunch of space below and above this and that's because by default um I think this is
42:21
1.5 so basically it it kind of centers the text in a line height that's 1.5 *
42:27
bigger than the font itself so how can we fix that so uh what
42:33
we're going to do is I'm going to go ahead and add in a um a font style stack
42:41
okay and um what I'm going to do is I'm going to Target H1 okay uh because I want to Target that
42:48
particular header another thing if you wanted to do what you could do is I'm sorry uh did I add a class oh uh no oh
42:55
you could add a particular class cl to this header if you only wanted to Target this one okay totally possible okay um
43:03
and uh yeah I'm just going to give this um a utility class so let's just call it
43:09
line height one okay um just that we don't
43:15
you have a default class of my class on everything right so I I tend to uh for the font stuff like to put in something
43:21
in there uh and then I'm going to turn off the text size because all we want now is this line height and I'm going to
43:28
set this to be one across the board so what this is is by setting the line
43:33
height to one it's saying the line height is going to be the exact size of
43:38
the font itself okay so now if I go and refresh this
43:45
voila so now my text has a line height of one which is the size of the text
43:51
which equals the size of the icon that is starting to look
43:58
nice
44:04
okay okay so there we go uh we did we did quite a bit already right um so but
44:12
we have a lot of work to do right but this is a good a great start we have a nice start to our page we have good
44:18
colors we have some nice fonts picked out um now I have to agree when I have to say when I built this I actually
44:24
didn't even have a menu up here I decided to add that later but it's okay okay um so next up is uh let's build out
44:34
our sections of of the pages right so I know I want to have my kind of my
44:40
mission statement up at top and then a meetings area that has all these meetings um and then a a members area
44:50
okay so um let's go ahead and just build out that kind of basic structure of my
44:56
page
45:03
okay all right so we're going to do in we're going to add in a header okay and actually you know
45:09
there's a there's a new stack uh or relatively new stack that I I kind of like uh called Bento Box I I think I've
45:16
done a pretty decent job with it I like it and um what we can do is I'm going to
45:22
uh create I'm going to add a container in here okay and this container I'm just
45:27
going to make it a uh a section okay and we're going to make it a simple
45:33
container and uh yeah I think that's it right what i is I'm going to add in that
45:40
we're going to add make that an H3 okay and I know uh this is going to be a um
45:47
let's see mission statement okay um and let me get I'll get back to
45:55
Bento Box really quick but now I have this container now this container I set it to HTML tag of section kind of for uh
46:02
you know this is called something called semantic HTML where um I know that this container is a section of my web page
46:10
right um technically like uh let's see like this Bento Box actually also has
46:16
HTML tag and I'm going to set this to be main um which is this is the main part
46:22
the main content of my page okay now th this really does doesn't make a huge
46:28
amount of difference um but if you're techy and geeky and really want to go
46:33
all out um we have a lot of fine gr controls like that okay doesn't style
46:38
anything differently um and you can argue whether or not it helps Google index your page or not okay but um yeah
46:47
it's people that are like to be very OCD about certain
46:53
things so now we have a container each one is set to be a section okay and I'm just going to copy and
46:59
paste that now if you notice um before Bento Box I would I would used the same
47:05
thing I would have done container container container and then I would have added like a margin on on each
47:10
container okay but now with Bento Box what I can do is um I can add a gap in
47:16
between sections of my page so and I can make them all uniform so what I'm going to do here is I'm actually going to set
47:21
it to be 32 okay so now I have 32 pixels in
47:27
between each section and I can I can quickly adjust that actually earlier I know on the site
47:33
I'm using 32 but earlier I had it set to 24 right and now all of that is set on
47:38
one page right or I'm sorry in one location and there's also a Bento Box
47:45
Swatch and whatnot watch the video on that okay um which you can then assign it to a container or something like
47:53
that okay and then up here um this was uh
47:59
meetings okay and over here this was um
48:06
members okay uh let's go ahead and preview
48:12
that voila okay
48:20
um so let's start building out what do we want to build out next let's build out um I guess I I can quickly add just
48:27
a a paragraph in there right so let's just quickly add in u cuz I know the mission statement is just a paragraph of
48:33
text right so let's just let's just get her done again right now we're just mocking things up we're trying to create
48:38
stuff right so I'm just going to add in some laurum ipsum
48:45
okay now now we're going to get to uh something that's interesting here so we
48:50
added this mission statement right and and that looks okay but right now it's
48:56
just this big B ginormous bit of text
49:01
okay and here's a nice trick that I like to do um on my websites
49:09
okay and what I do is I'm going to uh there is a common nomenclature out there
49:16
that says um it is very difficult to read long bits of text like this okay um
49:24
pretty much the the best kind of range where a human can actually read is
49:31
around 65 characters per line I think there's a range it's like 60 to 75 or
49:37
something like that I personally normally use 65 characters okay so how
49:43
can I how can I make sure that this paragraph is never bigger than 65 characters okay so pretty simple
49:51
actually let me close some windows here let's see we don't need that I tend to you know over time get a accumulate
49:57
Windows being open remind me later and I don't need that
50:04
okay um so what I'm going to do is I'm going to add in a um with
50:09
Swatch and um what I'm going to do here is I'm going to go to CSS okay and I'm
50:15
going to type in P comma UL or I'm sorry UL comma O Okay um and basically what
50:24
what this does is it's going to Target all paragraphs and and unordered lists and ordered lists okay um so yeah it's
50:32
going to Target all of that and what I'm going to do is um I'm going to go into minmax and I'm going to
50:39
go to detailed and under Max unit I'm going to use
50:45
characters and under Max size I'm going to put 65 so now I have a minimum size of zero
50:52
which is fine and then a maximum size of 65 characters
50:57
let's have a look voila so now I have this uh this
51:03
paragraph of text that uh will never go above 65
51:09
characters pretty awesome now you might be thinking well what about this big huge blob of empty area over here that's
51:16
okay it's okay to have white space embrace it okay I'm get getting a
51:25
little nervous there's not many people in the chat so if you are um yeah have any questions let me know okay
51:44
um looks like I lost some users
51:52
here okay um so now yeah now that I have the
51:59
mission statement kind of done let's let's move down to uh members okay and uh what we're going to
52:06
do is we're going to build out a uh we're going to build out a block grid okay because I just want to kind of a
52:12
block grid of of
52:18
data so uh so now I'm going to go into again I'm going to skip meetings
52:24
actually this is the order that this is the exact order I did when I built this um I didn't know what I needed what I
52:29
wanted my meetings layout to be so I I went to what was the easiest section of the page which was members because I
52:35
knew I kind of wanted a member card right so we can see everything so let's just go ahead I'm going to go into block
52:42
grid okay and add that below members and then um inside block grid uh
52:50
I I'm going to do uh on small I want one um and then maybe on medium and large I
52:56
wanted to I don't remember exactly what I did before we can look at that later but um let's start with
53:02
that and um in my block grid cell essentially I want a card okay so let's
53:08
go ahead and interesting you guys are commenting but my my viewer count went down to zero so that's why it uh yeah
53:16
it's wasn't updating so I was just nervous that people like either the stream stopped or something like that okay um okay so now anyway we want a
53:23
card so I'm going to use this Foundation 6 card and I'm going to draw drag that in okay um now I spent a long time I
53:32
kind of know what I've do doing now uh but I spent hours kind of messing around and dragging things here and there and
53:38
to kind of get the layout that I wanted okay so you're you guys are going to benefit from I already know what I did
53:45
okay for the most part I don't have every setting memorized but there we go
53:51
um and then inside of this card okay I had a I have a two column
53:58
okay uh oh wait uh I thought it was
54:05
a wait what what happened there oh there we go I have a two column inside the card okay um and then on this side here
54:14
I'm just going to for ease of it I'm just going to copy this picture stack so I don't have to
54:20
um we're go over there just going to paste all right put that picture stack
54:26
over there okay and then over here um I I just have a bunch of text here I'm
54:31
just going to copy this this is just a bunch of text okay uh just to save a little bit of time just a card section
54:38
stack okay which is from here card section um and I have a header with
54:44
which is Jo Workman um and then uh one thing you'll notice that some of this
54:52
content is getting truncated and this can make it hard inside edit mode okay um so a lot of times in Block grid what
54:58
I'll do is there's this cool setting here called Full width in edit mode what that does is it makes just an edit mode
55:04
it makes it so that card no matter what your size is for your block grid just makes it 100% width okay which is nice
55:12
okay so now we can start playing around with this a little bit more now I I played around a lot with
55:18
how to um display um the phone number email and
55:25
website okay okay and what I what I settled on was the list stack now this
55:32
list stack actually isn't in Foundation it's actually from my starter pack okay and what it allows you to do is it
55:37
allows you to create a bulleted list okay now by default it'll actually create bullets um but I set it to be a
55:45
style of none okay and another thing that I did is I used the utility class
55:50
um because by default it adds a little margin because normally bullet lists are kind of indented a little bit so I
55:56
wanted to get rid of that by doing using mlon Z which is a utility class for
56:01
margin left zero okay voila okay I now
56:07
have a link uh a list now uh I did have to in order to get these to be links um
56:14
I needed to type out HTML into here okay um so there is that um but link HTML
56:23
isn't too difficult okay um so yeah there were other ways I could have done this I could have used a menu stack um
56:32
the the foundation 6 menu would have worked um that tends to have some padding around all the menu items and
56:37
then I could reduced the padding or set the padding to zero that totally would have worked and then at that point I
56:43
wouldn't need to use the HTML in here as well um but this works
56:49
okay uh I was just I'll be honest I was just kind of lazy to have to muck with
56:55
the menu styles get it exactly how I wanted um this was pretty much exactly what I wanted style-wise I just needed
57:02
to use some HTML for for the links and I'm not scared of HTML it doesn't scare
57:07
me right so um I'm good with that okay and if you notice here
57:13
something that's really oh well before I get into that okay then we have uh I just have a button that is going to open
57:19
my goals um and as as you saw on the web page that opens up a light box so I just
57:25
used an open goal a button stack um and set it to various settings right so uh I
57:32
set the color to be primary so it used the actual primary color which is that dark green okay um I set it to be a
57:40
hollow button and I wanted to be round okay so uh I try to use uh all the same
57:46
style buttons throughout the site um I do mix Hollow and unhollow buttons um
57:52
but all of them are pill-shaped okay so I they all have the round setting chat
57:57
uh set okay and then below I have Social Links okay um now in here what I did is
58:05
I just uh have a container and then I have svgs okay um and these svgs I got from
58:12
uh there's all kinds of places where you can use it I could have I could have used font awesome 5 it is integrated
58:18
into Foundation um however what I did is I used an app called nucleo again uh it
58:25
is not cheap I think it was like hundred and some odd dollars um but it just has
58:30
a oops what did I do there I clicked something okay um but it has just a ton of icons so I can search for like you
58:38
know LinkedIn okay and it just gives me you know here's the LinkedIn right right and
58:44
then I can just right click and say copy SVG code and voila okay so I did that I did an SVG
58:50
stack okay um some
58:56
cool things that this app does okay uh if you notice here okay um I have the
59:04
SVG if you notice these are all um my secondary or my link color okay it's
59:10
this color from here okay if you notice I didn't set that anywhere okay um so
59:16
what I did is if you notice if I add so here inside the SVG I said add link okay
59:22
if you remember inside site Styles my link color are set to be this secondary color okay
59:31
so how did I get um this SVG to follow the colors defined on the page so if I
59:38
if I don't have a link okay this icon is actually going to be it's actually that very dark green okay because it's
59:45
inheriting from the default text color okay but once I added a link to this it
59:52
follows the link color how do I do that okay okay
59:59
um essentially uh there is a cool feature in an SVG where if you set the
1:00:05
fill okay if you set the fill to be current color it has to be set to this
1:00:10
exact thing current color okay it will follow the current
1:00:16
color of the um text in that particular area and it will assign the SVG fill
1:00:22
color to be that okay now a cool feature of
1:00:27
nucleo um whenever I right click and say copy SVG it automatically sets The Fill
1:00:34
color to be the text color that current color um and that's a that's a feature
1:00:40
in the uh in the settings and it's in the advanced
1:00:46
options here so if you have nucleo okay if you set the advanced options to remove inline colors okay what that will
1:00:54
do is by default it'll use whatever color I Define here okay um but with
1:01:01
that setting now when I whenever I say copy SVG code instead of choosing the colors that I have here or the color
1:01:07
that you actually see it'll it'll put in current color for you okay so little
1:01:14
small little tangent I know not everyone is going to have this nucleo app um but if you don't have
1:01:20
that uh again it's not too terribly hard just set the current color again to be or set the fill to be current color in
1:01:28
your SVG and then it we'll use that um that cool little trick okay right so
1:01:34
yeah so in here uh this is just a um Social Links uh and then I just added
1:01:39
SVG Stacks one for each social network um and yeah again this is just a mockup
1:01:46
so I just added a link and then the default link is fine because I again I'm not trying to add content here I'm just
1:01:52
trying to get my design the way I want it
1:01:57
okay and let's uh let's go ahead and see how this looks all right whoa what happened Joe
1:02:04
what's going on here okay um so couple things um a these
1:02:12
svgs are ginormous okay um so a couple things that you could do oops I'm going
1:02:18
to go back here okay um well hey let's look at everything else here I have my card okay and my header is good all
1:02:26
these links if you if remember we set uh underscore on Hover to be set right underline on Hover so that's working our
1:02:34
link colors are the correct color um our header is the correct color our uh
1:02:39
button is good okay so yeah everything else is looking good except for these social icons okay so what can we do
1:02:49
now oh you guys can hear my dogs yeah the gardener is here um so they they
1:02:55
don't like the gardener very
1:03:01
much is markdown easier for links um yes markdown is easier for
1:03:07
links however um this uh list item stack doesn't support markdown um this this
1:03:15
particular list item only supports HTML so markdown wouldn't help us
1:03:21
here okay um Okay so what can we do here um what
1:03:27
I'm going to do is I'm going to cheat a little bit uh just to save a little bit of time I'm going to go over here and I
1:03:34
already have some um some Styles in here right so I'm going to go into here and uh let's just
1:03:41
add in a Swatch a stack above okay I'm going to paste this pen move it up into
1:03:47
here and let's look at this all right so I'm doing quite a bit here
1:03:53
okay um so let's look at this let's look at everything that I've done here so here I
1:04:00
have a container okay that I have a class called Social
1:04:06
Links okay and um so what I'm doing is on all
1:04:13
these swatches um I'm either targeting that Social Links container or I'm going
1:04:18
to Target um child elements okay so um essentially what we're going to do
1:04:25
now is let's preview this okay so now what we'll see is um
1:04:32
they're a they're all in the line the svgs have been made small um they've also been made by
1:04:39
default their I think 50% opacity when I hover over each one um it changes the
1:04:45
opacity to one and it makes it grow right a nice little
1:04:54
effect okay let's let's analyze how we did
1:05:00
that um so the way uh first let's start off with the size okay um so in here um
1:05:07
I'm defining I'm basically targeting all the svgs inside Social Links and I'm
1:05:13
setting the width to be 20 pixels okay easy we've talked about that
1:05:19
one let's shrink it okay um next is uh the padding okay I
1:05:27
wanted um I wanted actually you know what what would be kind of cool
1:05:38
is I'm thinking I'm thinking I'm thinking here
1:05:44
um here let's do this watch this all right I I I want to
1:05:50
kind of show you guys the progression because obviously I I built this out progressively okay so I'm going to say
1:05:57
Do not uh post um in here what I'm going to do is I'm going to remove all of
1:06:05
these pop them over here all right so right now um I'm going to set the width
1:06:11
of my svgs to be uh 20 pixels okay and
1:06:17
uh let's go and preview that you know another thing we're going to do is I'm going to go uh no wait that's not what I wanted
1:06:26
there and then we're going to go here okay let's make this uh efficient so now
1:06:33
that I have now I have my preview over here and my stack over
1:06:41
here okay um so now all my icons are good right they're all 20 pixels just by
1:06:48
this one this one uh Swatch okay now how do I make them in line okay so now I'm
1:06:54
going to use a display Swatch now this is definitely kind of a there's different ways we could do this okay um
1:07:01
I could have used something like a block grid okay and then displayed them all
1:07:07
out okay I went for a slightly simpler approach and this probably something um
1:07:13
that definitely is an advanced thing and it's only Advanced because I I
1:07:19
understand the underlying technology okay now I understand this isn't true of everybody okay um so that's why we have
1:07:25
these live streams okay so let's look at the structure here I have Social Links
1:07:30
which is a container okay and then inside of that I have
1:07:36
svgs okay so when I use a display Swatch and
1:07:42
I'm targeting the Social Links class so I'm targeting that container okay I'm going to set it to be excuse me display
1:07:52
Flex Now by doing that what that does is um it changes the the stacking context
1:07:59
of that container by default as you see things stack on top of each other but
1:08:06
you'll notice when I refresh this page now instead of them being on top of each other they're now directly next to each
1:08:14
other okay now Flex does a lot more but
1:08:19
that little tid bit of information can be very powerful if you have again if you have a
1:08:25
container and you set it to be a display flexx all the contents of that container will
1:08:31
default to be directly next to each other instead of on top of each other so we're getting there right so uh
1:08:39
again I set my width first to be 20 pixels so I made all the svgs smaller
1:08:45
then I set the container to be a display Flex so everything is now next to each other
1:08:50
okay now obviously we uh we need a little bit of of pading right cuz I
1:08:56
think that that doesn't really look nice we need some stuff in between okay so I'm going to add in a padding Swatch
1:09:02
okay and this padding Swatch just adds um four pixels of padding on the top and bottom and eight pixels on the left and
1:09:09
right okay let's refresh and there we go so now each one has four pixel or eight
1:09:16
pixels there's actually a 16 pixel uh Gap in between each one because each one has eight pixels on both sides so that
1:09:22
kind of evenly spaces those out rather nicely L
1:09:28
okay um okay so now uh you know I thought in at this point I thought that
1:09:35
these icons were just a little too in yourr face right I mean they're they're
1:09:40
very they're very eye-catching okay so what I wanted to do was at this point I wanted to adjust the
1:09:46
opacity of them so I'm going to go ahead and I I added an opacity Swatch and let's talk about the selector
1:09:53
here actually I should have talked about this in the in the padding Swatch okay um so what I did here is you'll notice
1:09:59
that I have the class of Social Links and then what I'm targeting is the child
1:10:11
elements uh Kyle says fluxbox is one of the hardest modules in CSS to understand
1:10:16
yes fluxbox is hard um it is definitely tricky okay um
1:10:21
I'm I'm not going to try to teach all of fluxbox but that one little trick was a nice one okay um so here is a nice
1:10:28
little um so I'm I'm targeting uh Social Links to that container and then I'm going to Target all the child elements
1:10:36
again let's visually look at that so I'm I'm uh I have Social Links and then I'm
1:10:41
targeting the SVG stack now if I wanted I could have gone ahead and selected all
1:10:47
of these svgs put the same class on all of them and then I could have targeted that class that's not very efficient
1:10:54
right because then in the fure future if I added a new SVG I'd have to remember to add that class to that as well so um
1:11:00
instead what I do is I Target this one container that has a class of Social Links and then I want to Target all of
1:11:06
its children so again here I'm targeting Social Links and all of the children
1:11:13
elements again this is just a strategy of just being a little bit smarter with your swatches because again now I can
1:11:20
add as many svgs inside of this container and they'll automatically get those particular stock FES does that
1:11:27
make sense whereas if I were to add a a class to this SVG I'd have to if I were
1:11:32
to add a new SVG stack I'd have to remember to also add a class now chances are you would copy and paste this and
1:11:39
that would do it for you okay but again why why require a class when we don't need one okay so that's a little
1:11:46
Advanced Swatch selector tip there okay um so here uh in the opacity I set
1:11:54
the opacity to 50% so let's refresh let's look at that and there we go so
1:12:00
now um they're at 50% now obviously I think it would be nicer if when I hovered over it actually made them full
1:12:09
uh you know the opaque basically okay so let's go ahead I'm going to add in another um
1:12:16
Swatch and what this does is it's going to use um all the Social Links and I'm going to use the selector add-on of
1:12:24
hover okay okay and then I'm going to set the opacity to one so
1:12:29
now when I refresh and now when I hover over you'll notice that the colors now
1:12:35
become fully opaque and that's nice but I think a um
1:12:41
if you notice the transition is a little uh it's a little abrupt right so to fix
1:12:46
that what we're going to do is we're going to use a transition Swatch
1:12:51
okay and what this uh what a transition Swatch is it ows you to transition from
1:12:57
one style to another okay so here on Social Links child
1:13:04
elements um I I set the transition speed to 300
1:13:10
milliseconds so now when I when I hover over instead of it being in an Abrupt
1:13:16
color change it takes 300 milliseconds to go from
1:13:21
0.5 to one right so it's transitioning now I think this it's close but I'd like
1:13:29
to add a little bit more Pizzazz that let someone know that you know they can kind of click and just makes it a little
1:13:34
bit nicer and so one thing you can do is you can add a transform okay now that was the last Swatch let's delete that
1:13:41
all right so this transform what this does is it scales okay so what this does
1:13:47
I I I'm targeting only the Social Links on Hover okay and um I'm going to scale
1:13:54
to one 1.2 so I'm going to make it 20% bigger
1:13:59
when I hover over so let's refresh and voila now not only do we do
1:14:07
we go from um 50% opacity to fully opaque it also grows to
1:14:14
20% and it all does it in a nice animation pretty cool
1:14:20
right I'm really liking how this is is working so far okay
1:14:25
now I think my card I'm pretty happy with it okay um something if you noticed
1:14:31
has very Square edges and depending on your design um you either going to probably go with square or you're going
1:14:38
to go with round corners okay and um so if you go to the card what I want to do
1:14:44
is I want to round the corners on this card okay so I'm going to go ahead and
1:14:50
there's something really nice that we can do there is a utility class called radius
1:14:56
you can add it on anything and anything you add it to gets a
1:15:01
radius okay let's refresh oops
1:15:08
refresh okay so now if we notice here I have rounded
1:15:14
Corners voila pretty cool right
1:15:25
all right so now what we can do is um you know if we want to fully test this layout a lot of times what I'll do now
1:15:30
is I'll just kind of uh you know because I want to see what this is going to look like when I have lots of things on on
1:15:35
there right so let's go ahead and copy this and paste paste a few times refresh
1:15:42
and there's there's kind of like my grid uh and now we start seeing some problems right a these cards are budding up right
1:15:49
next to each other that's obviously not good that's an easy fix though we can go to our block grid stack okay and let's
1:15:55
just add some gutters okay gutters on the top and the bottom and let's refresh
1:16:01
right there we go okay so now we have uh some nice gutters now this gutter here
1:16:07
I'm pretty sure actually this uh uh these cards
1:16:13
okay let's go ahead and go back into the the one card okay um I'm going to go
1:16:19
ahead and Shrink this Social Links so it doesn't take up lots of space in edit mode I'm going go to this card and I'm
1:16:25
it has a bottom a bottom um margin okay
1:16:31
um and so what I'm going to use I'm going to use a uh MB colon zero on that
1:16:37
okay and um now I'm just going to take that block grid cell and I'm going to paste it
1:16:45
again there we go all right so now you'll you'll see that now it's nice now
1:16:50
all the gutters are equal right it's the little things you got to pay attention to right that I didn't like that and how
1:16:57
did I know that there was a bottom margin okay let's let's go into that that's a fair question um okay let's go
1:17:03
ahead and uh let's go do this let's hide all of those right that's right so I'm
1:17:11
going to let's go to this card again and I'm going to delete this utility
1:17:16
class right and let's just refresh that so if you notice here the Gap is
1:17:22
bigger now okay um so I'm going to open up the dev inspector
1:17:27
um so yeah if you just go ahead and click on this card we can kind of just kind of go up and voila margins are
1:17:34
always going to be orange in this Dev ins Spector okay and you'll notice that um when I hit this the card component
1:17:41
and we know it's a card because it you can kind of tell from the code right this is div class equals card radius
1:17:46
remember we did add the radius class ourselves um and when I do that you'll notice that it has a bottom margin okay
1:17:53
and you can actually go if I click on this card you can actually see all these are all the styles that are applied to it okay and if we scroll down we
1:18:01
probably should see oh here margin bottom one REM and we actually if I go ahead and turn that off we can see I can
1:18:07
turn that style on and off in the dev inspector okay um so I know if I if I go
1:18:12
ahead and set this to be zero voila it sets margin bottom to be zero everywhere okay and so in order to
1:18:20
make that that um that change permanent there's two things I can do I can use use a utility class like I did here MB
1:18:27
colon zero uh that's probably probably my most used utility class is MB colon
1:18:33
zero margin bottom zero um and or another thing is I could added a um a
1:18:40
margin Swatch set it to be zero and then applied that swatch to the card you know
1:18:45
but yeah mix and match whether or not you want to use a Swatch or some utility classes the utility classes can be
1:18:52
definitely useful okay so um there we
1:18:58
go I just noticed we're at like an hour and a half almost and I still have a
1:19:03
long ways to
1:19:10
go oh Steve asked me about the greater than sign okay you know I I was gonna I was going to glance over that Steve but
1:19:17
you caught me okay
1:19:22
um okay um he caught me good one good eye Steve
1:19:28
man keep me on my toes okay um I'm just going to go back to one card just to reduce the Edom mode
1:19:35
okay um for those that that maybe didn't know okay or that didn't see
1:19:44
um right so it was in this particular one uh on this hover Swatch okay um a uh
1:19:52
so let's let's stop and let's look at opacity okay um so in this opacity
1:19:58
Swatch um I used Social Links and if you notice I used um the child selector
1:20:04
elements um selector add-on okay um and one thing that is nice about
1:20:14
swatches okay is that um I inadvertently or I sneakily let's say I sneakily
1:20:21
attempt to teach you a little bit of CSS okay because while over here you can
1:20:28
put in a class name and then you can you can choose this thing called uh child elements what you'll notice is over in
1:20:35
the Swatch over here it actually shows you the exact CSS selector that is
1:20:42
used what does that mean what that means is um it's the same as if I were to go
1:20:48
um over to here and go to the CSS mode and if I were to type in that same exact
1:20:53
selector so was do sociall links um greater than star okay oh uh i' have to
1:21:03
set that to be none okay essentially now this Swatch is the
1:21:08
same exact thing that that that I did before okay it's just a lot of these little settings that I build for us
1:21:15
they're it's kind of like a CSS selector Builder right okay so when I choose uh
1:21:22
child elements well first off let's go to none okay oops so um by default if you just add a
1:21:29
class you'll notice that um what the Builder does is adds a little dot in front of there so it it knows dot in CSS
1:21:37
is to the way to define a class that we're targeting something with a class so dos Social Links targets anything
1:21:45
with a class of Social Links okay now when I added on the child Elements by
1:21:52
the way a small caveat uh I don't this month or last month I released a update
1:21:58
that changed this from pseudo state to be selector add-on I really like that change um I don't know if you guys do
1:22:05
but yeah selector add-on just makes sense so for this selector add-on I chose child
1:22:11
elements and if you let's look at what that did okay um so it did CH uh Social
1:22:17
Links uh greater than star what this does is it f is it says
1:22:25
um star obviously if you don't know means anything okay so star means
1:22:30
anything now what the greater than sign says is it's anything that is a direct
1:22:38
child of Social Links um so if I were to change this
1:22:45
selector add-on to be all descendants okay you'll notice that that
1:22:50
changes to just be space star okay
1:22:56
what's the difference between those let's have a look over in the dev
1:23:01
inspector okay um all right so let's let's look at
1:23:06
the exact exactly what we're looking at here okay um so let's
1:23:12
find uh here it is here is Social Links okay I actually don't need I close that
1:23:18
no it's not that is it this no I'll just do that okay so here here we have Social
1:23:26
Links okay and if you notice inside of Social Links I have all of my little
1:23:32
icons okay now inside of there um I there's a lot of other stuff there's a link and then inside the link is an SVG
1:23:39
and inside the SVG there's even more stuff okay now uh let's go over here
1:23:45
when I say OPAC uh Social Links space star that means all descendants okay so
1:23:53
what that means is is it not only Targets this div but it also Targets
1:23:59
this link this SVG this uh group SVG group this SVG path it targets
1:24:06
everything okay now for something like um opacity that probably doesn't matter
1:24:12
but if you're using something like margin or padding or border or background color or something like that
1:24:17
right um You don't want to Target every single child every single descendant
1:24:24
okay so in this case what I I only want to Target this div I only want to Target this and this and this and this and this
1:24:32
so in this case I only want to Target the direct children of Social
1:24:40
Links so uh and that's what that carrot does okay or I'm sorry that's what that greater than sign does so when we choose
1:24:47
child elements and we do instead of space star we do greater than star okay
1:24:53
what that does is it finds anything that is a direct child of Social
1:25:00
Links okay hopefully that is hopefully that makes sense okay
1:25:07
now let's go to this um opacity on Hover okay um so normally when when I do
1:25:15
a hover style um here let's I'm going to delete this and we're going to recreate it normally when I create a hover style
1:25:22
I copy that swatch the original original state and I paste it
1:25:27
okay then I make adjustments to what I want on Hover so in this case I want my
1:25:33
opacity to be one okay and then normally what you would do is you you would change a selector add-on to be um
1:25:42
hover however let's look at what this does right I'm going to refresh this
1:25:49
page if you notice that doesn't actually work right it's not working okay because
1:25:56
I'm I'm targeting Social Links itself the container I'm not targeting the children at this point because I Chang
1:26:03
my selector add-on from child to hover okay so um what that means is I I
1:26:12
need to I need to muck with this this selector and and find a different way to
1:26:17
Target the um the svgs when I hover now one thing I could have done is I could
1:26:23
have done uh oops darn it I closed that didn't I let's let's refine those
1:26:28
things all right um if you notice in here I could Target there's SVG has a class so I
1:26:36
could have done something like this Social Links space um
1:26:43
SVG okay and then done um hover right that could that could have
1:26:49
worked okay and that does work okay there's a
1:26:54
lot of different ways to do this okay um but what I did was I already knew um
1:27:01
again let's go back to I started with this Social Links um oops uh save that
1:27:07
Social Links greater than um star and that gets me all my child elements but
1:27:12
how can I get hover how can I mix child elements and hover at the same time
1:27:18
because I I I need to use both selector add-ons okay um so what I is I just did
1:27:24
something tricky and I just took the um greater than sign oops I just took the
1:27:30
greater than sign and I could have done greater than star okay um and then set
1:27:35
this to be hover and at that point this would this would work as well okay so
1:27:41
let's go ahead and refresh and that does work okay um but I I I just because I
1:27:47
know CSS uh I I knew I didn't need the star um and I just needed to have a
1:27:52
greater than sign um and so what this says is um Social Links uh uh greater
1:28:00
than sign and then when I hover on anything that's a direct child of Social Links apply that
1:28:07
style okay so and that's what I ended up with on the on the site um and what I
1:28:14
had earlier and uh and yeah Stephen you called me out okay so that was a nice
1:28:20
five or 10 minute tangent there
1:28:28
okay if you ever need to if if you just do
1:28:34
um okay um you've probably seen me use this app um if you've attended my live
1:28:40
streams at all or hangouts um this is an app called Dash
1:28:47
um you can also just find all of this online Okay um it's all on MDM web docs
1:28:54
okay um but Dash just integrates it and it's all local on my Mac um and I can
1:29:00
search it fully okay and it has I use Alfred and integrates with Alfred as well um but yeah you can just search
1:29:07
here and do selector I think it's selector list and um is this one that has all no this
1:29:15
isn't this isn't what I wanted
1:29:26
uh types uh Universal selectors ah here right
1:29:36
um well that just tells you about ah there is a I know there is
1:29:49
a oh there is a CSS Doc Page I mean I it's all in my brain now but I know um
1:29:55
for a while I used to reference it every now and then before you know uh that kind of showed you all those little
1:30:00
things the greater than signs and there's other ones okay some of them are there's like a little TIY one that is
1:30:07
like a a brother um or next two basically um which is useful sometimes
1:30:14
um oh there's a plus sign um as well which is good uh I guess this one has
1:30:19
some of it but anyway uh also hold on one second let me uh me share
1:30:31
something I I've preached this book a lot okay it's um HTML and CSS by John
1:30:38
Ducket okay um I think there's one chapter in this book that is now kind of
1:30:43
obsolete um but for the most part um this book is gold okay um it is like no
1:30:50
other technical book you've ever seen okay it's like a it's like a coffee table book okay it
1:30:59
literally is like the most approachable technical book I've ever seen um and it
1:31:05
is it is a brilliant way to learn CSS okay brilliant now I I I've boughten
1:31:14
like four versions of this book or four the same version but for books spend a little bit extra get the
1:31:21
hard cover okay um the bindings on the soft cover book are not fantastic okay
1:31:29
um so yeah on am this book is cheap on Amazon spend a couple extra bucks to get
1:31:35
the hard cover okay um if you didn't buy the hard cover already sorry uh
1:31:40
eventually your bindings on your soft cover I've gone through two or three of them okay um I I I'll be honest I don't
1:31:46
really use this book any longer um but it is gold right check out this book
1:31:52
HTML and CSS John Ducket it's awesome
1:31:57
okay all right uh let's get back to
1:32:03
sharing okay
1:32:11
um okay what was I doing now oh um okay I
1:32:17
think I think I'm pretty happy with the cards right um
1:32:25
let's see what else did I uh let's just preview this page
1:32:34
um yeah all right so now let's move up uh you know I I can create these
1:32:41
little edit profile buttons those are pretty simple um again we're we're going
1:32:47
to all we we can start mocking this up this page up now actually um let let's move to actually We'll add these little
1:32:54
uh these little buttons here I've actually changed this a little bit on the final site I'll have this new meeting it's I have it a little SVG over
1:32:59
here so we'll tweak this up a little bit to kind of get uh the final you know uh
1:33:05
this final page done oh one thing I okay um I I wanted to add some um some some
1:33:11
hover styles to the card itself okay um so I'm going to do is
1:33:17
here what I do on that oh okay yeah um what I do
1:33:25
here oh interesting uh sorry just reminding myself of some of the other
1:33:30
things that I I did okay
1:33:38
um I'm going to copy these Styles okay and um I'm just going to paste them into
1:33:46
here right uh I'm not going to dive into every single one of these Styles okay
1:33:51
but let's go ahead and review what I've done a little bit right um oops so this
1:33:58
uh targets member card and inside here I'm going to add a class of member
1:34:06
card okay and actually here if you notice it instead of that remember earlier I added this um this utility
1:34:13
class mb0 okay um here I just had member card I actually have a margin Swatch
1:34:19
that sets margin to zero there we go okay
1:34:24
um so let's refresh that so now voila okay you'll notice now that when I hover
1:34:31
okay let's close that when I hover we get a nice effect but if you notice something here you'll notice that that
1:34:37
shadow gets cut off okay um so let's go ahead and if we look let's go ahead and
1:34:44
on this container okay uh I'm actually going to do it on all of these uh
1:34:50
actually let's just do this one container I'm going to set overflow to be visible okay on that refresh
1:34:58
that oh it could be on uh where
1:35:04
is where is
1:35:12
that oh actually it's the bottom of the web page I think
1:35:18
interesting yeah if I were to add in uh
1:35:24
did I what did I did I add some I thought I had some pading here hold on one
1:35:35
second yeah it should be interesting oh there's overflow hidden
1:35:42
it's on this bad boy here all right so on this container overflow visible
1:35:58
come on man all right let's see let's keep going down uh let's see we have this container
1:36:04
here overflow
1:36:12
visible oh wait oh oh I'm looking at the wrong wrong project file oh
1:36:18
Jesus I was looking at the old one uh okay uh visible all sorry my bad go on
1:36:25
this one uh overflow
1:36:30
visible there we go okay helps if you open if you change
1:36:36
make the setting changes on the right project file okay um so there we go um so here we will see that when I hover
1:36:43
over the card um we get a shadow and also the the card kind of lifts up a few
1:36:49
pixels right it gives it a quite nice effect okay
1:36:55
um so let's let's just look at that really quick so um here I I provided a maximum height to
1:37:04
the um to the cards okay
1:37:10
um and why did I do that I don't remember now um here we do the Shadow on
1:37:15
Hover I'm not sure that actually is doing anything useful
1:37:24
yeah interesting 1 th000 pixels minimum
1:37:32
100% oh okay um yes uh this this Swatch actually
1:37:39
isn't even useful anymore I was that was from I was playing around with some other ideas okay um Shadow so here we
1:37:45
have a um a default Shadow actually here let's do uh actually there is no Shadow
1:37:51
by default okay and then on member card on Hover right basically I'm adding uh
1:37:57
and the shadow if you look the shadow um is using a actually you know I should do a use a Swatch
1:38:03
color and then you can actually use uh let's say I want the primary color okay
1:38:09
and that way uh the Swatch uh the shadow always follows the colors from sight
1:38:16
Styles right one thing I don't like about that you we could probably tweak that a little bit is that um it makes it
1:38:24
very harsh right so what I had done is I used that the same color from uh primary
1:38:30
but then I made it opacity 40% right so that um it makes the shadow much less
1:38:36
harsh um you could probably tweak these settings a little bit though maybe increase the blur and decrease the
1:38:42
spread a little bit to kind of make it so um that color isn't quite as as
1:38:49
harsh um so anyway so yeah there is a shadow on Hover and just as before if
1:38:55
you notice the shadow kind of animates it's not like an Abrupt change okay um I
1:39:02
used a transition Swatch we already learned what a transition is and then I use a transform Swatch um to make it
1:39:09
rise up by two pixels okay so in transform I use move and I move on the Y
1:39:16
AIS negative pixel negative -2 pixels up okay so yeah so I'm moving -2 pixels up
1:39:24
um and I I left all the other uh settings uh default and one thing I also did is uh
1:39:30
by default board uh cards have a border okay uh if I just go ahead and here just show you I we'll disable
1:39:37
that okay cards have a border okay and um W they they look actually it makes it
1:39:44
look nice uh it doesn't look nice when you have the shadow um so yeah I what I did is I just added a border Swatch and
1:39:51
I set the Border uh it border size to zero pixels so you're setting I'm
1:39:57
setting effectively removing the border from the card okay and uh there we go it
1:40:03
gives it more of a flat look um when without the shadow um and then it I
1:40:09
think it looks nice so there we go okay
1:40:17
um so there is the some nice effects that we did for the card um let's look
1:40:23
at some some other things that I did okay um let's look at the uh open
1:40:28
goals okay so this button um I like Hollow buttons but I thought it I
1:40:33
thought would have been nice when I hover over the button it kind of um flips the colors okay um so let's have a
1:40:41
look I I'm going to copy that and this is a really really really
1:40:46
simple one okay um so on this button I have a class set to open goals okay okay
1:40:54
and something that I I like to do um when I remember okay is uh when when
1:41:00
something has a class I put that same class in the title so that I can see that this uh button has a class of open
1:41:07
goals right so like on this card uh when I added member card okay I should have
1:41:13
added it to the title okay and that kind of when I when I'm looking at my um stuff I can see um all the various
1:41:20
classes that I can Target things with okay so if you see down here I have Social Links okay uh on the button I
1:41:27
have open goals um and then in this in the card I have member card right so now
1:41:33
I have all various things that I can start targeting so if we look at the open
1:41:38
goals I have a background and a font color swatch so um basically uh what I
1:41:44
did is I did open goals on Hover and then I I set the background color to be
1:41:50
the primary color and then on for font color I did on Hover set the uh color to
1:41:56
be the white color and again I I'm using the Swatch colors here so that um if I
1:42:02
were to ever modify the colors and sight Styles um it's going to just reference
1:42:07
those colors super useful uh you can define a custom color but then at that point it's no longer linked to your kind
1:42:13
of your site colors right so um I like using these Swatch colors as most as much as possible
1:42:20
okay um so now let's refresh this page now when I hover over this button uh we
1:42:25
get a nice U kind of uh effect where uh again the background color changes to be
1:42:31
that uh that primary darker green and then the goals are uh the text color is
1:42:38
white pretty nice
1:42:43
okay um now the last bit here
1:42:50
is comes into effect um I'm going to show you the problem
1:42:56
that I had now right now this card looks I think looks amazing okay I think it looks pretty
1:43:02
awesome uh and uh at this point what I did was I then um oops uh
1:43:11
I'm I'm going to take this right and we're going to duplicate this multiple times just so I can start testing um
1:43:17
this page out uh with multiple cards I think it looks I think it looks great
1:43:22
right right but then you start playing around with okay now we need to make
1:43:28
sure it looks good everywhere it looks great on desktop right but how is it
1:43:34
going to look when I start once I start shrinking oh no what happened now uh I
1:43:39
can refresh and oh man what the heck's going on this starts it starts looking
1:43:45
horrible right uh so what are we going to do here
1:43:51
you know it it looked really good when was on a big screen uh when the image was bigger than the
1:43:57
text okay it looked great but once we started going down starts to not look
1:44:05
great okay so what are we going to do
1:44:14
here this next bit um took me a long
1:44:20
time okay um and I'll I'll show you a there's a cool tool um it is not
1:44:26
cheap okay um it is even subscription software okay
1:44:32
um and uh it is pretty nice though I have to admit I I sometimes I forget that it's
1:44:39
there um and I forget to use it myself um but it is a it is a special browser
1:44:46
called polyan okay and um what it's really good
1:44:51
as it kind of shows you your pages um across a lot of devices all at once okay now you could use um
1:45:01
the simulator windows in Rapid Weaver okay uh definitely
1:45:06
possible um poly pane I think is nice but again it it is not cheap okay so you
1:45:12
might uh you might just be fine using the dev inspector and um using like this
1:45:17
responsive view okay in the dev inspector okay where you can be like
1:45:22
okay I want how's it going to look on an iPad Pro now right and you can start seeing this okay so um I admit polyan is
1:45:32
a luxury right and it is a subscription a yearly subscription I bought it Black
1:45:37
Friday last year um and I said I'm going to use this for a year see if I like
1:45:45
it and I have to admit I kind of forgot about it for a long time and it just kind of fell by the wayside
1:45:55
um however when building this site over the past few days it was actually a it
1:46:01
was really nice okay I I really did like it um it was a huge benefit what I do is
1:46:06
and what I did is I actually added a fourth view here um and I added
1:46:12
a small iPad Mini okay so I kind of had this this view was
1:46:19
kind of like my view right where you have small iPhone um actually instead of small tablet what it is I set this to be
1:46:25
um iPhone 16 uh here let's do this one is like a iPad or
1:46:30
iPhone what's the oh here the mini right so yeah here we have the iPhone 12 mini
1:46:36
iPhone 16 Pro an iPad and then desktop what's kind of cool is it kind of syncs
1:46:42
the scrolling uh it it it's a nice app okay again I'm not going to sell you on
1:46:48
this app um because it is expensive but it's nice right allowed me to quickly
1:46:53
debug this stuff and really I think it looks okay on on small devices um but
1:47:00
where it doesn't look good at all is is in medium it just breaks down it's just
1:47:05
garbage okay um and let's go over what I did to
1:47:11
fix this uh let's uh how do I exit this mode
1:47:18
there we go all right so let this mode here right
1:47:25
just looks garbage so let's analyze this layout a little
1:47:33
bit okay um so here I have a block grid oops let's just open up the top one okay
1:47:42
I have a block grid and um and a two column right so there's two things I can
1:47:48
kind of break here um and if you notice in this two column um I had it set to 12
1:47:53
and then um so column one um on small devices it goes full width and then on
1:48:00
medium devices it uh basically it splits 50/50 okay now let me remind myself what
1:48:08
I did here okay oh yes okay um this very interesting okay
1:48:24
and then that was I remember photo yep yep yep yep yep
1:48:30
yep right um so a couple things you'll notice that in here I have a link
1:48:35
container um and the reason I did that is that um essentially uh what I wanted
1:48:40
to do is if I clicked on the person's picture or on the goals button it would open up their that person's light box
1:48:47
okay so um that's an easy fix right so let's let's let's add that really quick
1:48:53
um let's just go ahead and add a link container and I I did put a a class of
1:49:01
member Das photo on this okay and I'm going to add that
1:49:10
there okay and let's just copy that paste it
1:49:15
in there okay um so now uh eventually when when I go
1:49:22
to to create this I can I can configure this link to open up that light box
1:49:34
okay trying to think of the best way to do this without taking an hour to to to go through my entire
1:49:41
thought process of of this
1:49:46
um because again this this bit took me a lot of playing around and ideas and uh I
1:49:53
first I I chucked this whole thing and I tried to do it with Bento um which kind of worked but I kind of like the
1:49:59
Simplicity of this this layout and I wanted to make it work okay um so I
1:50:05
think what I'm going to do is let's let's analyze um what I did
1:50:10
here and I'll tell you why I did it okay um all right
1:50:20
so let me just review let's see this block grid okay so in the block grid um
1:50:26
this is probably the simplest thing um I went from small in medium is one column
1:50:32
and then large is two column okay so uh let's make that change first okay so in
1:50:38
this uh in this block grid I'm going to change my medium to be one so I'm going to one column for small and medium and
1:50:46
then large uh I'm going to break up to two now let's have a look at what that
1:50:51
looks like all right so uh here on large we go two column and then once we hit medium it
1:50:59
goes to one column okay uh and then small it goes to
1:51:04
one column as well okay so that that's actually I think a pretty decent
1:51:09
workflow right I think that I think that that looks a lot nicer so that fix
1:51:15
actually I didn't I didn't do that fix first I tried a lot of other complicated stuff first that that actually is really nice
1:51:22
really simple small change and if you notice it it actually completely changes the layout a little
1:51:28
bit just by that one simple change because we kind of have two styles of cards right now right if you look uh on
1:51:36
here we have the image and then our content okay and then on small the image
1:51:42
is on top with our content okay and then on medium um it goes from
1:51:50
it goes to one but it's side by side side so it's not as tall right so we
1:51:55
kind of have three different cards here just with that one simple little
1:52:02
change okay now one thing we need to fix is um this image like right here it's
1:52:10
not it's not working too great okay so and that is a little complex
1:52:18
okay um so let's go ahead and I'm going to copy I'm going to do what we did
1:52:24
before and I'm going to I'm going to take all these swatches that are here that are assigned to member photo okay
1:52:30
we're going to paste them in here and actually you know what I did uh what I liked before is I'm going to um
1:52:37
I'm going to say Do not publish any of these okay uh and now actually I'm going to go into
1:52:44
here all right um and let's just go ahead and all right so now uh what I'm
1:52:50
going to do is I'm going to move everything up uh one at a time
1:52:56
okay um so we can kind of see the difference um of what we're doing
1:53:01
okay let me talk about conceptually what what I plan on doing first okay right
1:53:08
now um this First Column okay is uh controlled by the size of the
1:53:17
image right and if I shrink this uh if I shrink the browser okay that means the
1:53:23
size of of in this two column the size of the columns remains kind of static
1:53:28
right it's 50% but this image because how images scale is when
1:53:35
you when you make it more um narrow it shrinks right because the image
1:53:42
scales right and it it's set to display the entire image all the
1:53:49
time so what I plan on doing is I'm actually going to make this First Column here
1:53:57
static okay um so uh it's just going to be a static size it's always going to be
1:54:03
the same
1:54:08
size of the card hopefully you see that right if we
1:54:13
go down again look the image is the same size it's just the content okay and then
1:54:19
when I flop down a you'll notice that the cards oh that one kind of oh this
1:54:25
one got a little funky for some reason with that image but in this image here okay you'll
1:54:31
notice that um it doesn't display the whole image um and it only displays kind
1:54:36
of a portion of the image okay now something happened in this particular mockup not sure I I must have fixed it
1:54:42
in a different location okay um but yeah there we
1:54:48
go I'm thinking this uh this mockup actually I fixed some of those issues on
1:54:54
the non-m mockup page okay I might be jumping ahead of myself a little bit
1:54:59
okay um so let's review this okay um and
1:55:04
actually to do this let's look at my two column settings okay so in in this two
1:55:10
column settings um column one on small is going to be 12
1:55:17
okay and on medium it's going to be shrink to content okay because let's say on medium
1:55:23
and large it's just going to shrink down to the size of this one column and I'm going to statically set that size of the
1:55:30
column okay um and then in column two it's just
1:55:36
always going to be Auto so column two which is the content it's always going to be it's always going to grow as much
1:55:42
as it can to fill all the space right so let's make those changes
1:55:49
I'm going go into column this two column I'm going to set it to be uh instead of uh 12 on small and then medium it's
1:55:55
going to be shrink to content and then uh the second column is always going to
1:56:01
be Auto okay essentially having it uh uh how it was uh 12 on small and then Auto
1:56:10
effectively the same thing okay but um yeah we're just going to set to Auto on
1:56:15
everything just to keep things simple right so now we've done that
1:56:22
now um what I need to do is as I told you before I'm going to set the width of
1:56:28
the of this member photo okay I'm setting it to be 192
1:56:37
pixels okay let's see what that
1:56:44
does okay actually in this case um it's only this card remember I can't I have a
1:56:51
lot of other cards just focus on this on this one right here okay so as you see that is uh oops this
1:57:00
image here is um static okay um now there's a very cool thing here called
1:57:08
object fit okay because what we want to do now is we want to take this image and
1:57:13
have it fill the container okay um and we need to do a
1:57:19
couple things um
1:57:32
first is member photo okay I want the member photo which is this photo I want
1:57:37
it to grow to be 100% height okay so here I set the height of member photo to
1:57:43
be full container height so height 100% then what I'm doing is I'm
1:57:50
targeting the image inside of member photo and I'm setting it to be cover
1:57:57
essentially I'm taking the image and turning it into like behave like a background image okay and then you set
1:58:04
the position to be Center Middle actually these settings are the default settings okay for object fit so um and
1:58:11
let's have a look at that right so now again I set in member photo I set it
1:58:19
to be 192 pixels I set it to be 100%
1:58:26
height and then I set the image to fill the container and Center
1:58:32
itself even if that means cropping some of the image and as you see it looks different
1:58:37
than this over here but now as I shrink it looks good
1:58:43
okay well it doesn't look good on small yet we're getting there okay okay because on small we have it
1:58:50
set to be height 100% that's not what we want right so um I have another um
1:58:57
another thing here called height third so here on this Swatch I have a height Swatch that's set to be small only to be
1:59:07
33% height so now when I when I refresh okay and I go back to small
1:59:15
you'll notice now okay the small container is uh it it
1:59:21
takes 33% % height and but the image is still kind of filling the container and
1:59:26
centering itself pretty
1:59:35
cool okay um now have to admit I'm not sure I I recall what happened I'm not sure what
1:59:41
happened down there uh it doesn't happen on the on the prod site we'll look at that in a second whoops didn't mean to
1:59:47
do whatever I just did that was an accident okay
1:59:53
okay here let's quickly look at that what did I do
1:59:59
there something that's useful some sometimes when you're debugging stuff sometimes you can put the inspector on
2:00:05
the side um especially when you want to debug um small view um
2:00:16
so wonder if it was in that card remember I think I I deleted a uh I
2:00:23
think I deleted something that member card I think it was this height Swatch let's see does that fix
2:00:37
things nope that didn't fix it remember
2:00:42
card okay what did I do here
2:00:53
oh it's still way over there that's weird
2:01:03
oh okay instead of that two column being Auto if I set it to
2:01:09
be 12
2:01:15
Auto okay that worked and then
2:01:28
this small 12 medium shrink that's
2:01:36
correct uh let's look at this two column what did I do here
2:02:10
right uh what vertical alignment what if we did top that actually would probably do it oh but then that that's not what
2:02:19
we want
2:02:40
I remember running into this yesterday let me let's set that back cuz
2:02:48
that obviously oh I did refresh
2:02:57
I recall fixing this yesterday but I think I did it after I was in out after
2:03:02
I was out of the mockup phase I think I fixed it
2:03:08
but um here I'm going to I'm going to cheat a little bit
2:03:14
here uh let's go back up to here which is the final page it m card
2:03:29
open walls you know for fun I'm just going to
2:03:35
I'm going to copy this let's go to my mockup
2:03:52
still not
2:04:07
fixed oh it's meetings down
2:04:17
here oh it's meeting notes on 111
2:04:23
gutters vertical line stretch looping up
2:04:32
cell 12 12 12 Auto oh yeah I did do 12 Auto there
2:04:53
oh man here I am doing the wrong project file again it's all
2:05:01
good idiot all right let's go back to this one sorry paste in
2:05:11
there oh same exact Behavior right
2:05:25
all right uh let's all right
2:06:01
H it's stuff like this that can take me a half hour to figure it out or something like that um I don't want to
2:06:07
waste your time I obviously did figure it out in the final project I do remember this what was it
2:06:14
though that is bugging me uh let's go ahead and let me just
2:06:21
preview this page because this page doesn't have the
2:06:27
problem right oh oh it does oh let's go to the
2:06:33
homepage oh oh let's let's go to the actual live
2:06:47
page oh I remember now um
2:06:54
uh I remember now uh let's go to oh here
2:07:02
yes I have this sneaky little Swatch at the bottom of the page I used equalizer
2:07:09
okay that was stressing me out here all right um so I used an equal here just
2:07:16
copy that that's why you keep your stuff together um actually here all so what I did is I
2:07:22
used the equalizer Swatch and I targeted um the class
2:07:29
member grid okay which is um this here let's um I added a class to the block
2:07:36
grid itself okay called member grid so I'm going to do member Das
2:07:42
grid let's add it to the title because that's always good okay and then
2:07:49
um I targeted the uh equalize class uh card column okay and that
2:08:01
was where did I put the card column class okay I put it on um on the member
2:08:11
photo I have a card column class and then in this card section I have a card
2:08:17
column class okay and essentially what it's going to do is it's going to uh set
2:08:23
the height of the member photo to be the same height as the card
2:08:29
section okay and actually you know what now that I'm thinking about this solves a different problem that I didn't run
2:08:36
into I think right but it's fine this was a
2:08:42
something that I
2:08:50
did see how that that
2:08:55
works was it this
2:09:02
one oh also I think part of the problem is
2:09:08
that okay let's go ahead I'm going to delete
2:09:27
what that equalizer Swatch did uh okay um what you would notice is without that
2:09:35
equalize um if we were in this view here if you notice uh well if if let's say
2:09:43
someone didn't have a phone number okay the size of this content would be different than the size of this content
2:09:49
and what would happen is um the car cards themselves um would have like a small Gap somewhere so that equalize was
2:09:56
needed and it was something that I figured out as I was testing with live data okay um
2:10:05
okay I'm going to move on hopefully I I discover uh what I I did um
2:10:13
previously okay to fix that issue because at this point I'll be honest a
2:10:19
lot of these minor tweaks that I'm making right now okay um I didn't make
2:10:25
until I already migrated this particular page to be used as total CMS and we're
2:10:31
already two and a half hours in on this okay so um all right let's uh let's move
2:10:39
on and hopefully again hopefully we'll we'll figure out what's going on in that small device because I did fix it uh and
2:10:45
I do remember it happening I don't remember the exact fix though okay um
2:10:52
let's go ahead and I'm going to take this um this block
2:10:58
grid um that I built for the meetings okay and uh I'm just going to copy and
2:11:04
paste that okay and we'll we'll review what
2:11:10
I've done here okay um so if you see this layout it's pretty simple it's
2:11:16
pretty simple um I actually uh started uh this lay out with hold on one second
2:11:24
let's go ahead and just do hide which show the top one okay um I
2:11:32
started off with the same exact card down here okay if you notice even says
2:11:37
member card it uses all the same classes to be honest I I probably should change it since this is a meeting card and not
2:11:44
a member card uh I should probably maybe make this instead of a member card maybe like a I don't know a guild card or
2:11:50
something like that so that it's a generic card that could be used anywhere but I was
2:11:57
lazy right so it uses the member card class um that way we get the same uh hover effect okay as we got with the
2:12:04
other one so we get all those styles for free just by adding that uh card with a
2:12:10
member card class and then um in here I just added a card
2:12:15
section um and then in there I have a a header um I have a button uh that uses
2:12:21
that same uh I use the same open goals class so that we get this uh this effect
2:12:27
again this is a meting notes so maybe I should uh rethink the open goals class
2:12:32
since it's now more generic and it be something that you know isn't open goals
2:12:38
right um but I did make it smaller so I just changed the the button on this one to be a smaller
2:12:44
button um and then here I just I used a block grid okay and in the block grid it
2:12:51
just adds in um a bunch of images okay and I thought it would be fun here I
2:12:57
have a header a block grid of images and then a header and then a block grid of images and um the block this block grid
2:13:05
here um right now my group has seven people okay um in it um so that's why I
2:13:11
made the columns seven so it'll if everyone attends all seven images will
2:13:17
fit perfectly right here in one row um but obviously some people miss they'll be you know dispersed across two of the
2:13:24
things okay so this was my general mockup actually this this I played around with quite a bit with different
2:13:30
layouts this was the a pretty simple layout that just I I really liked okay I
2:13:37
played around with like adding people's names but it just didn't look great right um so yeah having just a list of
2:13:44
images uh with uh the people down here uh was was pretty good okay
2:13:52
um so at this point um actually it was before the before I did the meetings uh the meetings layout um I actually
2:13:58
started integrating total CMS into this and let's start doing that now let's start integrating total CMS into this
2:14:06
layout um and so let first off let's let's go into here and let's integrate total CS with with the members grid
2:14:15
okay um so
2:14:21
this is kind of uh ending the foundation build site build portion of this
2:14:27
um page or this live stream okay and we're going to start diving into setting
2:14:33
up total CMS now I'm not going to set up total CMS from scratch here and and I'm going to show you what I did um or else
2:14:40
we'll be here for five more hours okay
2:14:52
um so I'm going to go into um my total CS admin
2:15:02
area oops what's going on
2:15:11
here there we go right um I created um
2:15:16
if you notice this is the total CMS 3 um now I'm not going to dive into
2:15:22
publishing essentially publishing total CS super easy all you have to do is add in your
2:15:28
um total CMS core to the page okay um and then you publish and you get
2:15:36
access to this now a workflow that I've I've grown to really like while playing
2:15:42
around and using total CMS 3 is um total CMS works 100% inside preview
2:15:50
okay okay um but um I have M running
2:15:56
okay if you notice this um this domain here is just local. thegrowth guild. org okay and um
2:16:05
in M I set up that as a domain U this this domain doesn't exist on the internet um
2:16:13
and so basically I set it up um and it w it looks at a folder that inside my
2:16:18
project file okay if I go go to my publishing settings it just uh publishes to that
2:16:25
local folder okay and then I can just preview it right here inside
2:16:32
M and um I really like that workflow um I mean for me I I never use you know
2:16:40
I I don't know it just it I just kind of learn to always use the browser and so
2:16:46
now what I do is and Publishing to a local folder even though total CS 3 has a lot of files 5,000 files um is super
2:16:54
fast okay um so yeah that's the kind of setup that we're going to be using today
2:17:01
it's running a full-blown Apache web server so that you know um total CS 3
2:17:06
works great I have a custom domain that I can reference that works perfectly on
2:17:12
my Mac you can't get to it it's not online it's only on my Mac okay um and yeah it this this works with
2:17:20
or without rapid Weaver even running okay so pretty cool um what I've done here is um again
2:17:28
I I'm not going to go through the ground zero of total CS 3 um but in total CS 3 you create
2:17:36
something called a schema so I need to be able to manage meetings and members
2:17:41
so I've created a meeting um schema and these are all the fields available to me
2:17:47
um in that schema we have an ID for the field a date uh who attended who missed um summary
2:17:55
and chat then we go to my member schema okay
2:18:00
and that has a lot of fields okay um we have a photo whether or not the user is
2:18:05
active or not so I can actually disable a user um and basically turn them off so they can't access it an ID a name an
2:18:12
email phone website birthday I have some cool stuff with birthday I'll show you in a little bit um password LinkedIn um
2:18:21
so basically a bunch of social profiles so LinkedIn Instagram YouTube xmed on Facebook um a little about paragraph um
2:18:28
the person's goals for their year and goals for the current quarter um and
2:18:34
then some hidden fields for um you know when their account was created how many times they've logged in and their last
2:18:40
login okay um oh and passwords in here somewhere password okay so there's a lot
2:18:47
of fields for a user okay um um but yeah there we go uh you define uh the required Fields
2:18:56
um and then all the fields that you want to be able to access um on the main page
2:19:01
okay and also any field that is searchable okay so like in meeting uh when I set up the search I wanted to
2:19:07
make sure that everything was searchable so actually all fields are part of the index because I wanted to be able to
2:19:12
search for any field okay okay so uh yeah really quick that
2:19:21
was that okay uh then I went in here you can uh I created a bunch of other things
2:19:27
that I did um actually here let me go into the setup I took the time to go through here and set up the factory
2:19:33
information so like here is an image um for name I use name um and email I it
2:19:41
just set Factory to be email um and what this does is it allows you to automatically generate things right so
2:19:48
for example if I go into my uh meetings you notice that it just
2:19:53
automatically generated a bunch of stuff for me okay using something called the factory and you can automatically add if
2:20:01
I want to add 10 more meetings um it just adds fake data into your CMS right so right now I just created 10 meetings
2:20:08
right now so if I go back to my meetings um you'll notice that there's actually a page two here there wasn't even a page
2:20:14
two before okay so I've added 10 more meetings uh which is pretty cool okay it
2:20:21
didn't populate attended and missed because yeah it it's not that cool okay
2:20:26
um but it does generate a lot of fake data and i' same thing for users um it created a bunch obviously I created mine
2:20:32
manually and then I just created a bunch of other users that had names and emails and fake phone numbers and fake website
2:20:40
kinds okay um I did manually upload my photo um so that you know um there isn't
2:20:47
the ability to uh you know maybe I should create a Joe Factory so you can automatically you know populate your CMS
2:20:53
with pictures of me if you ever wanted that right um there we go okay um I'm
2:20:59
probably not going to dive too much into this backend area again um but now that I've showed you how I've created dummy
2:21:05
data um in the CMS um another thing I did is I I just added like this the site
2:21:12
logo um I added uh in style text I have the charter and our mission statement
2:21:17
okay as static text in the CMS
2:21:23
okay with that done uh let's go back to um our
2:21:29
project okay so let's start off with building um
2:21:35
this okay and uh showing you how uh I'm going to basically migrate all this data
2:21:42
okay so I actually kind of liked this workflow quite a bit um you know
2:21:50
building the the mockup and then um taking this data and replicating it many
2:21:56
times to create the final grid um that I wanted
2:22:03
okay so uh what we're going to do is uh let's make this window a little bit bigger so I can have the
2:22:09
uh the stacks Library open actually we don't need the pages just a library okay
2:22:15
um so now here I have all of my my total CMS Stacks I know they all have the same same icons right now and that makes it a
2:22:22
little bit tough but uh eventually they'll have their own icons okay um so what I need to do is I need to create um
2:22:29
member cards here okay and so in this block grid I need to I need to generate
2:22:35
multiple block grid cells for every single member right so if you see this
2:22:41
this particular area Okay uh right here I need to replicate this for every
2:22:47
single member okay so let's do that so we're going to do this with the loop
2:22:54
stack okay and again at the very top you add in your total CMS CMS core you can actually even add it into the uh the
2:23:01
features inside sight Styles okay um so what we're going to do is
2:23:06
we're going to drag this into the block grid stack right it has to be inside block grid okay and then what I'm going
2:23:14
to do is in I'm going to drag this block grid cell into the loop
2:23:21
that Mak sense okay so now what I'm going to do is I'm
2:23:27
just going to start replicating or deleting this data with the data that I need okay well let's configure the loop
2:23:33
first so in the loop I need to uh Define The Collection so uh the collection that
2:23:39
I created um for this was called members so I'm going to Loop through the
2:23:44
members collection okay um in total CMS and the loop variable basically I'm
2:23:51
going to uh each one of these is a member okay so most of the time your
2:23:56
collection and your variable are going to be the plural and singular versions of whatever you are doing okay so we
2:24:04
have members and when we Loop through it each each instance of the loop is going to be assigned a variable called a
2:24:13
member okay so um and now what I can do is I can then access that member
2:24:19
information so um for example here now this is where it's very
2:24:25
important that you know your data okay uh let me go back to uh here so if I go
2:24:32
into my collections we'll see that I'm in members okay and actually let's go into our schemas and see what a member
2:24:39
is here's all the data that we have available to us so obviously my the name
2:24:45
of my member is called name okay so here I would use curly brace curly brace
2:24:53
member. name okay so there wherever I put this
2:25:02
this is now where um the member name is going to be put okay um and just for Speed I'm going
2:25:12
to go ahead and in here I'm just going to
2:25:17
copy these
2:25:27
all
2:25:35
right so um here basically if we look in here I have the member phone number now
2:25:40
I updated the this again I am using HTML as I said earlier okay and uh
2:25:46
essentially I I'm using the telephone uh syntax so you do Teel colon and then
2:25:52
it's going to inject the phone number into the U into the URL and then I I put the phone number as the link text okay
2:26:01
um then uh I do the mail for email I put I use a mail to link and then I put in
2:26:07
the member email and then the member email is text again this might be a little more user friendly if I had again
2:26:14
chosen the menu stack instead of list um but I was kind of building this for myself and it I'm not scared I'm not
2:26:21
scared of HTML but um yeah in retrospect uh it might be a little bit
2:26:26
more user friendly uh for you guys to use the menu stack uh for something like this okay um and then you wouldn't need
2:26:32
to know the some of this scarier syntax now this is kind of interesting
2:26:39
okay so um let's look at let's look at my
2:26:45
um my user account okay if you notice here my website is
2:26:52
set to https www. weaver. space okay however if
2:27:00
we go to um the website where am I you're right here
2:27:08
okay oh oops where where' I go down here you'll notice that it doesn't
2:27:14
say https weever dospace okay
2:27:21
and um this is because I I did some twig
2:27:27
trickery and um if we look at this let's inspect this
2:27:33
really
2:27:42
quick okay if we look at this we see that the link inside the the link it we
2:27:48
have to have https col Weavers dospace okay but in the text part of my link I
2:27:55
don't want that I it just doesn't it looks nicer if you have if I were to put
2:28:00
www. weaver. space inside the link it wouldn't work okay you have to have
2:28:06
https or HTTP uh or else it won't link to the correct website okay um so what I
2:28:15
did was um for the for the actual content of the um
2:28:20
um link the text of the link I stripped out the https and the ending slash with
2:28:29
twig right because twig is freaking really cool okay and um I'll I'll show this to you
2:28:37
um I do some a lot of twig trickery in in this project um and yeah just because
2:28:43
I was playing around and I thought it was fun okay um so I will I'm not going to dive into every single little thing
2:28:50
but I'll I'll show you what we can
2:29:02
do all right let's turn
2:29:11
on um let's oh uh hold
2:29:18
on uh language mode HTML all right there we go
2:29:25
now we can kind of see see this a little bit better okay so if we look at this um I
2:29:31
have the beginning of my link and and then you have href equals and then inside here I have U member. website and
2:29:40
this is where it's going to put in the exact data um here let me go ahead and close some of these tab that I know we
2:29:46
don't need anymore okay so it's going to put in the
2:29:51
exact website all of it okay uh and then I use Target blank which opens it in a
2:29:57
new tab uh and then inside here right let's let's put this on a new line here
2:30:03
there okay so here's my opening link tag here's my closing link tag and then
2:30:10
inside here this is the content of um the text of the
2:30:18
link so we're using some magic in here okay and what it's doing is it's doing
2:30:24
member. website so it's taking the full website that includes https okay and
2:30:29
then I'm splitting it what that means is it splits it based on um the
2:30:36
slashes okay so what that means
2:30:42
is okay so what what it what it's doing is it's finding every single one of
2:30:47
these and it's kind of a splitting that data so it's going to be that's one part of the data that's another part of the
2:30:54
data and that's another part of data okay so first it's getting that as one
2:30:59
part and then it's getting this then it's getting that and then it's getting that so it's splitting the data um
2:31:07
splitting this string based on a slash
2:31:12
okay then um now this is the this is probably the the most confusing part is
2:31:19
um of the results from the split I want you to start at um so this
2:31:27
is an array again this is getting quite technical okay um in Array this is uh
2:31:34
item number zero this is item number one this is item number
2:31:40
two and that's item number three okay so it
2:31:46
split this string into an array where this text is item number zero that's
2:31:52
number one that's number two and that's number three so what we do is we say okay I
2:31:59
want you to start at number two so it's going to start here and then only give
2:32:05
me um one only only go one okay so
2:32:11
basically what what it's doing is it's it's slicing this up and it's returning a different array that only
2:32:18
contains the text that I asked it to okay now if I had done um 2 two what it
2:32:27
would do is it would give me Weaver space slash it would have returned an array of Weaver space and slash because
2:32:34
it says I said start at number two and give me two items okay um so slice also returns an
2:32:43
array now in in this array again I only wanted one okay so it only returns this
2:32:50
but in it returns this as an array okay so at that point I pipe it
2:32:56
and say give me the first item and and it is that so yes um hopefully I know
2:33:04
that was confusing and I don't teach programming very much so hopefully you
2:33:10
know some of that stuck in your brain especially since we've we've been talking now for almost three
2:33:16
hours okay um but yeah this now returns
2:33:22
Weaver space and yeah uh that was that was a
2:33:27
lot of fun I thought that was pretty cool uh because it makes it a little bit more user friendly a little bit nicer
2:33:33
but it it also means that I don't need to save two versions of my string in the CMS right so anyway there we
2:33:43
go um okay that was interesting all right so let's go down let's keep going
2:33:49
if you no now um in my button I have Joe's goals well in my data I don't store
2:33:58
first name and last name as two different fields I store Joe
2:34:05
Workman so if I want Joe's goals I need to be able to purse this
2:34:12
string and give me just what I wanted okay so let's have a look at that I do
2:34:18
something very similar um and let's have a look at this so inside of this um this
2:34:24
open goals button okay um I copy
2:34:30
that so here we have member. name um and then I'm splitting on a
2:34:38
space similar to up here I'm splitting on a on a slash here I'm splitting on
2:34:43
space and then I'm giving me the first one right so let's say if I'm doing Joe
2:34:49
space workmen okay it splits on a space it uh
2:34:55
split again returns an array an array has zero and
2:35:01
one okay and basically I'm saying give me the first item in that array which is
2:35:07
Joe so now this returns Joe and I have
2:35:12
an apostrophe s goals so this returns Joe's goals
2:35:19
pretty cool okay um and then in Social
2:35:26
Links okay um I have a Q QR code thing here we'll review that in a little bit
2:35:31
um it's something I added after I did the whole mockup thing okay uh it's pretty cool though right but we'll
2:35:38
definitely look at that all right in Social Links um you
2:35:43
notice that I have a uh the link containers just like I had before um now here I I have a new one for for the
2:35:49
contact card again we'll skip that for now I added something uh for each one of
2:35:56
these okay so before we just had a link container and the SVG now I have a conditional around each
2:36:03
one and what this says is um the conditional the rule is purely member.
2:36:11
LinkedIn now when you have that what it says is does a user have member.
2:36:16
LinkedIn defined if they do do display this
2:36:23
content and then it goes to the next one and the rule here is member.
2:36:30
Instagram so um so basically it says if the user has defined if a user has set
2:36:35
member. Instagram um use add link container with the Instagram logo this
2:36:41
way um if a user doesn't Define something so let's say for example I'm going I'll disable I'll delete my
2:36:48
LinkedIn okay and let's save this let's go back to this page and if I
2:36:55
refresh right whever my card is there it is linkedin's
2:37:01
gone so this makes it so that if someone doesn't provide a particular social link
2:37:06
it's not going to be defined and that's why all these other users that um have no data um because these were all
2:37:13
artificially generated ones I didn't take the time to add Social Links for any of these so they're all gone
2:37:22
okay so that's pretty
2:37:29
cool all right um now let's look at the
2:37:35
um the image okay um and so uh in order to
2:37:43
replace this image uh we're GNA have to go into here and we're going to find the
2:37:48
image stack in the content image okay and we're going to
2:37:56
drag that out there right and I'm just going to delete this picture so we're replacing that image
2:38:03
with the total CMS stack uh version okay and so what we're going to do is um we
2:38:10
need to define the object ID um for this and the ID basically we need the ID of
2:38:16
the member so that is member. ID okay up here member. ID now this is a
2:38:24
variable that we're referencing from the loop so what we're going to have to do is we're going to have to say that this
2:38:29
uses a variable for the object okay um now um because we're referencing from a
2:38:36
custom collection we need to check this box and we need to set the collection to be
2:38:42
members and the property of my image okay it's not image it is I think it's
2:38:49
photo um yeah so if we go just to show you uh
2:38:54
I the name of that property is photo okay so uh here I'm going to use
2:39:00
property photo okay and you can set all your width and
2:39:05
height and crops and all kinds of stuff um here
2:39:15
okay sweet ultimate I'm uh I'm getting a little
2:39:22
winded now that we're at 3
2:39:27
hours and I think a lot of you are um probably uh brain overload as well okay
2:39:36
um so I am going to maybe put my foot foot on the gas a little bit and I apologize for that for those that
2:39:44
are um you know novices to Total CS3
2:39:51
okay um but I I wanted to show just kind of how some of these more advanced
2:39:56
things are possible you know um I do have other videos that that go even more beginner for total CS 3 and I know I'm
2:40:03
breezing through a lot of this and not really going through all the general concepts again we'd be here for days if
2:40:10
if if I did okay so I apologize for that okay um
2:40:22
okay what I'm going to do is I'm I'm actually going to move over to this project file that has um everything okay
2:40:31
and I'll show you some some other things that I did um in here to get things uh
2:40:36
working okay um so inside the loop here if you remember I have a checkbox for
2:40:42
active Okay um and what I did here is um I applied a filter to this loop stack so
2:40:48
I have a filter and assort okay um and in the filter I just said filter if the
2:40:55
active property is set to true that way I can go in and I can disable any member
2:41:00
that I want I can go in here and I can um disable this member and that
2:41:07
particular member is now disabled okay and they won't show up on the
2:41:13
homepage okay so that filters out anyone that is um that is active so we only want to
2:41:20
display people that are active um and for sort I just shed it to shuffle um and that way if you go here
2:41:27
um it's just you refresh the page it's just they're just always in a different order okay um I think for a small group
2:41:34
like I said my group only has seven people Shuffle is great it kind of just shuffles everything you can see everyone
2:41:39
in one in one Fell Swoop anyway um Shuffle probably doesn't work great if you have a a lot of things in your in
2:41:46
your list right so you probably want to have some sort of defined um sort and sort by a particular field like maybe by
2:41:52
name or something like that okay I just thought it would be fun to have Shuffle that way everybody has a chance to be on
2:42:00
top okay
2:42:07
um let's talk about something that's kind of fun um and that is this
2:42:13
um I'm not going to go through this in great detail okay um
2:42:21
but uh I thought it would be fun again uh my group is a it's a small group of
2:42:26
people um and we've grown quite close have a nice friendship and um it's nice
2:42:33
to be able to know when it's somebody's birthday okay um and so I added it if
2:42:39
you know in the uh in the admin area you can Define someone's birthday right so you can Define their
2:42:45
birthday and um I thought it would be fun to add this little emoji when it is somebody's birthday week not
2:42:53
just today but like it's their birthday within plus or minus 5 days
2:42:59
right um so that if we meet every Friday I know if your birthday just happened or
2:43:04
it's about to happen right thought that would be kind of fun and I did it um so
2:43:10
yeah pretty cool um so basically
2:43:16
um here I will show you the TW Wiig um let's just paste this in
2:43:22
here uh let's turn on wrap word wrap all right uh actually let's make it a little
2:43:28
bit smaller oh there we go looks much nicer now okay um I'll quickly just
2:43:33
review the it so I I get the date of today I create a variable called today that gets the date um then I get I take
2:43:40
the member's birthday and then I get the month and the day of the mer of the of the
2:43:47
birthday because I don't want the year I just want I I need to know the month and the day of their birthday so that then I
2:43:54
assign that to a variable called month day then I get the current year of their
2:44:01
birthday so I get um basically um let's say it's November 6th so their their
2:44:08
birthday is on November 6th basically this then gets me a date object that is
2:44:14
November 6 2024 even though in in the in the CMS it
2:44:20
probably November 6th 19 you know 60 or something like that right um but now I'm
2:44:25
getting again their month and day of this year so that's uh some tricky stuff
2:44:34
there okay um then I create a start and end date so basically what I do is I get
2:44:40
the current year minus 5 days and the current year plus 5 days
2:44:49
I wonder if I do um language mode oh oh that's probably much
2:44:56
nicer okay um yeah so now I get the current year um modify it I'm subtract
2:45:04
five days and then I I return the actual date object of that pretty cool
2:45:11
right so now I have a start date and an end date okay so I chucked all of that
2:45:17
inside of an HTML stack well first off actually all of this is inside of a conditional that if somebody set their
2:45:24
birthday because obviously this is only going to work if they actually defined a birthday so I have a conditional that
2:45:30
checks whether or not they set their birthday and if they do all of this stuff runs okay so if they did set a
2:45:37
birthday I I run all of this and I I get the start date and the end date then I have another conditional
2:45:45
that basically says here let me uh take this okay if today which is is greater
2:45:55
than the start date and today is less than the end date so if it basically if
2:46:01
the date is between the start and the end which is plus or minus 5
2:46:07
days display this container that has an emoji that's
2:46:14
it um and then I do have some uh uh
2:46:20
uh uh up let's see here it is I just have I have a couple things right so I I
2:46:26
set the font style for the Emoji or the font size I set a position um I change
2:46:32
the cursor um and I transform it so I rotated a little bit okay so essentially
2:46:38
this position Swatch is the important one this is what basically takes that emoji and always puts it at the top
2:46:44
right corner of my card
2:46:49
right pretty magical that's some that's some Next Level stuff there that that
2:46:55
was a lot of playing around to get that to work um and oh another thing I do if
2:47:01
you notice um I don't display people's birthday but if you hover over it you
2:47:06
can actually see what their what day their birthday is right so um I added that with just a little um I added a
2:47:14
container around this and in the container I added a tool tip and inside
2:47:19
the tool tip I just display their birthday using twig inside of the content of the tool
2:47:26
tip and I just say member. birthday and I put in uh the date format that is
2:47:31
November 4th or January 6th or something like that right so there we
2:47:37
go pretty slick this is next level stuff right there like that's pretty cool and
2:47:43
again it's all Dynamic it'll only display this if it's Plus or plus or minus 5 5 days of the person's birthday
2:47:51
like that's pretty cool right just to show just to just to
2:47:58
play around here I'm going to go ahead I'm going to change my birthday if you see here uh it doesn't show uh this so
2:48:05
I'm going to change my birthday to be um 114 1980
2:48:11
okay which is um November 4th was two days ago right so now if I go ahead and
2:48:16
reload this page okay the birthday sign shows up on my
2:48:22
card with November 4th because it's plus or minus 5 days but didn't show that
2:48:28
before because August 4th which is my actual birthday isn't within the realm of possibility right definitely next
2:48:36
level stuff
2:48:42
okay um pretty cool stuff there uh the same
2:48:48
process that I did for um the mockup of um this meetings thing you know I like
2:48:56
that where I dragged I I basically replaced all the mock data with total CMS data I did the same thing up here
2:49:03
okay and let me show you what that looks like okay um so here again I added a loop
2:49:10
stack inside of that block grid okay um in here I I put the collection to
2:49:16
meetings I put the V Loop gr variable to be meting okay um at that point I can then
2:49:23
use meting do whatever to display my data so here um at the top I have the
2:49:30
date okay um it is meeting. dat and then I pipe in uh I format my date using this
2:49:36
logic here so capital M gives you the the
2:49:41
uh letters or the the word ver or the short word version of the date then I
2:49:46
have a space and then I have the day comma and then capital Y gives us the full year right so that displays the
2:49:54
meeting date I then have the meeting notes um
2:50:00
and we'll go over uh in a little bit how I open up the light boxes right so when you click on this it opens up a light
2:50:05
box okay um wa then in attended now this is
2:50:12
pretty cool so I have another block grid and this is something that I I'd
2:50:18
never done before total CS 3 either I have another loop stack
2:50:24
okay um let me show you uh what it looks like when you add a meeting okay um so when you add a
2:50:33
meeting now this is actually a page that I'll man there's so much more I I haven't shown um in this project I uh I
2:50:42
didn't want users to to log into the total seams admin area so I created this
2:50:47
custom page that has the um meeting form
2:50:52
okay um so in here you put in your date and if you if you click on the attended
2:51:00
if you notice what it does is it shows you all it pre it's pre-filled with all of the
2:51:07
members okay so I I can just click on the member names for the for the
2:51:13
attended and the missed that's really cool
2:51:20
okay and uh in a little bit I can show you how I did that actually you know what let's go
2:51:26
ahead and let's Jump Around um so inside of the total CS admin area um if you go
2:51:32
to your schema for your meeting okay we have the attended and
2:51:38
missed um fields or properties okay let's look
2:51:43
at attended okay um the this is a list uh
2:51:49
field okay and if we go into the settings we'll see that there is um some
2:51:55
really cool uh settings that we can set for um this works for list fields and
2:52:01
select boxes okay and what you do is it allows you to
2:52:06
create relational options and what it does is you can Define you can give it uh the collection
2:52:13
of members so it's going to go to the members field um you Define a value and a label
2:52:21
okay um so the label is what you see in the dropdown but the value is the ID okay so
2:52:29
what I'm doing is um in that form while you see the person's name the value that
2:52:37
gets added is that user's ID
2:52:45
number okay so this allows us to do relationships between different
2:52:51
collections now so again it's going through the
2:52:58
collections it's going to Loop through and it's going to create options for oops darn
2:53:04
it it's going to create options for each member where the value when a user is
2:53:10
selected is their ID but the label that you see in the form is the name so the
2:53:15
value again the value that gets saved is their ID right so that's important to know to
2:53:21
know because now um I am looping through my
2:53:28
meetings and inside there I need to Loop through all of the people that attended
2:53:35
this meeting man I am getting
2:53:42
hungry um so I have a second Loop
2:53:49
and in here I am looping through meeting. attended so I'm going to Loop
2:53:56
through everyone that attended this instance of a
2:54:01
meeting and then I'm going to uh the loop variable is called
2:54:10
member okay now it's uh this isn't the member object what it is is it's just the ID so
2:54:18
I I probably could have called this just ID right um but it's essentially uh it's
2:54:24
going to Loop through the attended and the actual variable is going to be member the ID of the member
2:54:33
okay so now uh what it's going to do is it's uh it's going to Loop through each
2:54:39
member and it's going to create a block grid cell and if you notice right when we do
2:54:44
that uh let's go back to the homepage
2:54:50
um it's going to Loop through each person that attended this meeting and add an image for each person that
2:54:57
attended okay so um when it Loops through we want to add an
2:55:04
image that image um the object ID is the member okay and that
2:55:11
is probably be it should be member ID right so it should be Loop variable is
2:55:16
member ID okay okay and so in here that variable is called member ID and then it's going to be a part of
2:55:23
the collection members and the property is photo so again in order to get the image
2:55:32
for each member all I needed to know was the ID once I know the
2:55:38
ID um the collection and the photos or sorry the collection of the property are
2:55:45
static values I know exactly what they are because I know the memb collection is member and I know the property of the
2:55:50
the photo that I want to bring in is photo okay another thing we need to make sure that the object value of this we
2:55:57
have to tell that we have to tell the stack that that is a variable okay I set my sizes to be 32 or
2:56:05
64 by 64 okay so it it puts in a 60 it brings
2:56:11
down and generates a 64 pixel version of that image
2:56:20
I want to ensure that um because I wanted these to be circles I need to
2:56:25
make sure that the even if the person uploads a nonsquare photo that it generates a square version of the image
2:56:33
therefore I set the fit and crop to crop focal point when you do that it's going
2:56:38
to make sure that the image that is generated is exactly 64 pixels by 64 pixels and it will crop anything else
2:56:45
outside of that for more information on images I have other videos on that on
2:56:52
how the cropping works okay and then obviously it uses the focal point which
2:56:57
by default is the middle of the
2:57:02
image all right um so yeah there we go that Loops again Loops through all of
2:57:08
the um the member images or all the members and displays the image for each
2:57:15
person that is attended and then I do the same exact thing I have a header for mist and then I have another block grid
2:57:21
and then I Loop through all the people that are inside the mist and I display that all the images for all of
2:57:30
those pretty cool
2:57:39
right um sorry I was not paying attention to uh uh the chat James you
2:57:45
said is this going to be more complex than the previous version um I mean I I have I'm I'm definitely
2:57:52
driving at 60 M hour right now okay um so I know a lot of stuff that I did is
2:57:57
probably very very this video this live stream wasn't meant to be a here's the
2:58:03
basics of total CS3 I personally think that total CMS 3 will be easier than total cms1 um but
2:58:11
it's also has some really cool more it's easier to do more advanced things okay
2:58:16
that you can never do in total cms1 um so yes please don't take what
2:58:22
I'm showing you right now as a uh as a beginner tutorial to Total CS
2:58:30
3 okay um I tried to do somewhat of a beginner thing with the when I built the
2:58:36
website with Foundation um but yeah uh again I we'd be here for days if I
2:58:43
tried to start from the beginning with total CMS 3
2:58:50
okay um and thank you Sean for the for the comment you said I make it all look easy um okay so yeah
2:58:59
um that's how I kind of built out this grid okay as you see I I didn't a lot of
2:59:05
these meetings were dummy data so I didn't go ahead and try to you know add in attendees for each of this dummy data
2:59:11
okay um so excuse that um
2:59:19
okay next up
2:59:25
um let's talk about um oh how about these light boxes okay
2:59:33
um I will go through uh essentially the implementation for this this light box
2:59:39
and this light box are identical okay it's just um so let's pick let's pick
2:59:46
the the profile one okay we'll go over that implementation okay um if we look at the
2:59:54
project file okay um while this website does appear to be a single webpage
3:00:01
project for the most part there are multiple pages okay um so like if I were
3:00:07
to click on this this looks like it basically what this is this is actually an
3:00:12
iframe and the iframe is injected inside of a light box same thing here if I
3:00:17
click on this this is an iframe that is injected into an uh into the light box
3:00:24
okay what's kind of cool about this approach is um if I hold down the
3:00:29
command uh tab if you're if you're familiar with browsers if you command click uh it opens a link in a new tab so
3:00:37
if I'm going to command click this button okay it does open the light box but you'll notice is actually opened up
3:00:42
another tab that is this person's page right it's basically the page that is
3:00:48
inside of that light box okay um so yeah that's pretty
3:01:02
cool uh I need to I need to run I'm going to take a quick potty break or not a potty break I need water okay um so
3:01:10
just give me a minute I'm going to run downstairs and get a glass of water um my mouth is getting famished here um so
3:01:16
I'm sorry I just need to take a quick Break um literally 30 seconds I'm going to go get a cup fill it up with some
3:01:22
water I'll be right back maybe you can do the same thing
3:01:46
okay
3:02:16
e
3:02:46
e
3:03:16
e e
3:03:57
okay I even found some leftover breakfast here I'm going to take a couple bites of uh bites of food here
3:04:30
okay Sean you asked a good question why use why why have one light
3:04:37
box instead of a why have an ey frame in a light
3:04:42
box so um we'll answer we'll answer that it's a good question
3:04:55
talking for three hours straights No Joke Man
3:05:05
okay okay
3:05:11
why why not do multiple light boxes okay I'm still sharing my screen
3:05:17
right thank God okay let's take this um this into
3:05:22
account uh if we look down here um I have two light boxes I have a member light box and a meeting light box
3:05:32
okay um so if I wanted to have
3:05:38
uh all of this data show up in a lightbox okay and um not use the iframe
3:05:47
approach um it is possible um there's some caveats okay um
3:05:57
if you could basically uh drag this into um let's say this light box into this
3:06:02
container right I'm just going to shrink that okay um and then uh basically uh in
3:06:10
right now you remember this is the loop okay and so it would create a light box
3:06:16
for every member in this Loop okay and inside of this light box you could
3:06:21
actually put in content like you could put in all of this content into this light
3:06:26
box okay I have an offsite I'm not going to I'm not going to do that I'm not going to delete the offsite and do
3:06:32
everything like you know I would okay but you can you can display you
3:06:37
know all this you can put the member name all this list inside of the light box you can definitely do that okay
3:06:44
however um in this case um I want to also in this light box I want to display
3:06:49
the about the goals uh and the goals right so both goals and the
3:06:58
about and uh now remember in order for something to display in the loop okay it
3:07:05
needs to be a part of the index and I'm pretty certain if I go to
3:07:11
here if I go to look at member okay inside member the about and the two goal
3:07:18
content areas are not a part of the
3:07:23
index so I now I could add those to the index but um as as we know it is it is
3:07:31
better from a perform from a performance perspective to um have the least amount
3:07:37
of data in your index as
3:07:43
possible so in this case um I don't want I I don't want access to the about or
3:07:49
the quarters or or the the goals inside of the index okay but had I I could
3:07:55
display them in here okay um now another caveat
3:08:02
is once I uh if I create a light box for every member so every member has their
3:08:07
own unique light box I need to do some trickery with um the light box ID now
3:08:14
this isn't too difficult you could probably just do um I mean every member has a an ID so I probably could just do
3:08:21
like uh member. ID right inside the lightbox ID and that would work right
3:08:29
oops member. ID right so I could probably add member. ID into the light boox ID and that would ensure that every
3:08:35
single light box had a unique ID right definitely possible okay um but
3:08:42
it's just it adds a layer of complexity okay
3:08:48
um so those are two two reasons why I don't do it that way
3:08:56
okay again I don't want to have all data inside of my index by using an iframe I
3:09:02
can um I can point that iframe to the member page and the member page has access to
3:09:10
all of the data about a
3:09:15
member okay let's let's explain um how I did it
3:09:23
here oops and let's open up this this member light box okay so let's look at this
3:09:31
member light box a the the light box ID is called member okay um and then inside
3:09:36
the offsite um uh it's important you give it a name I called the name here member
3:09:43
page okay so the light boox setup is actually very minimal and you just set you can set the URL to be blank it's
3:09:54
fine yes so Sean you're correct uh by by uh this by putting the light box in here
3:10:01
you potentially have I mean here I only have seven members but if you had a 100 or a thousand things it would create a
3:10:09
thousand different light boxes right and potentially if that light box had an image or something special it would then
3:10:15
load in all of those resources right this way it's only loading things when you when you click on it okay so
3:10:22
well I'm getting ahead of myself okay so this light box is pretty simple um again the me the the important thing is here
3:10:28
in the light box you set up a member uh a lightbox ID which is member um and
3:10:34
then the offsite um I set you have to give it a unique name so I call it member page okay so let's look at this
3:10:42
um this goals button because remember if we go into uh this when I click on it it does
3:10:49
two things okay it it um opens the light box
3:10:55
and it loads a specific URL into the
3:11:01
iframe okay so let's look at that con that settings so if we look at the edit
3:11:09
link okay um what I'm doing is I'm linking to the page and passing it the
3:11:15
member ID right so what that is is that's this page if we look at the URL oops okay it
3:11:23
is just um uh Slash member and then question mark ID equals and then the ID
3:11:30
of the user now here because I I was using fake data the IDS are like these random things but you know in real life
3:11:37
like if here if we go to my uh my nicely created user account if we click on this
3:11:43
one oops not in the light box
3:11:49
okay we'll see here it says ID equals Joe Workman okay so um here again I'm
3:11:56
just loading the member page I'm going tell it to go to the member page and then ID equals and then I'm injecting
3:12:02
the member ID which in my case here is Joe Workman is my ID okay I'm injecting
3:12:08
that with twig
3:12:15
okay then um in Target by default it's set to current window what we want to do is we want to
3:12:22
set the target to be iframe name so if I were to set this to be
3:12:28
current window this would essentially make this button open this web page just by
3:12:35
clicking on it but that's not we don't want it to load this web page we want it to load the web page into an
3:12:42
ifame and this iframe name is the same name that we configured inside
3:12:53
offsite okay so that um this setup here loads the URL inside of the
3:13:01
iframe now further down we have an add custom attribute okay and this we do data- open
3:13:08
equals member what this does is this tells the link to open the light box
3:13:18
data open uh can be used across a lot of foundation components um light boxes
3:13:24
dropdowns off canvas okay um so you can open up any foundation component or most
3:13:31
Foundation components with data- open and then you have to give it the ID of that component and that ID obviously has
3:13:37
to match the ID that you defined inside of the component so in the light box I
3:13:42
gave it an ID of member so we said data- open member see attribute data open
3:13:52
member so the combination of these things to these two things that we've done opens the light box and loads the
3:14:01
member page inside of the iframe all with one click that's I discovered this
3:14:07
trick I don't know a couple years ago and it was like it was man it was oh man opened up
3:14:13
so many cool possibilities okay I love it okay again the benefits
3:14:20
are um the resources for you know right I
3:14:25
mean these are pretty simple right um you know it just loads an image and and some other extra text right um but this
3:14:32
could have a lot of extra like if this this could be a G have a gallery in it or something like that right and um at
3:14:39
this point with the way we've built it now this the data inside this light box is only ever loaded when you click
3:14:49
so it makes the page super performant this is a great
3:14:54
workflow okay and an added benefit that I kind of like is if you hold down the command key and click you still get the
3:15:02
option of it opening in a new browser window I like that too so you get both
3:15:08
right I mean I still have this page right and we can look at this page right let's go ahead and look at that
3:15:14
now right so we go to this this this is the member page this is this page here okay
3:15:22
um and so what what do we do here um here we have
3:15:29
uh the I'm using the uh total CMS uh object data loader okay so I'm using
3:15:36
where data loaders I'm using the object data loader stack okay and it's right
3:15:41
here and what I'm doing is I say the collection is members and load the um
3:15:48
get the ID from the URL so what it's doing is it's parsing the URL and it's getting the ID from the URL
3:15:56
dynamically and then um it assigns that member to a variable called member right
3:16:01
so again this is kind of like similar where you know your collection is kind of going to be the plural and then your variable is going to be the singular
3:16:09
because we're loading that particular member and then a lot of this data is
3:16:14
actually the same exact uh I just copied and pasted from from the other page you you'll even notice on this page when I hover over you still get the hover
3:16:21
effect okay um I kind of like that I was like I left it in there cuz it was kind of like just like a nice little Easter
3:16:26
egg or something right um so yeah I just L um the QR code which I don't think i'
3:16:34
I've shown if you click on that it gives you the QR code okay um remind me I can go over that in a little bit okay it's
3:16:40
still has the me as you see it has the member stuff like now may maybe on this page maybe I don't want to load in the
3:16:45
the birthday I could just delete delete that and now that that member stuff is
3:16:50
gone okay um and then further down uh
3:16:56
basically I'm just I'm doing um what am I doing here uh I'm doing oh about Joe
3:17:02
and again I'm doing that little uh that little split thing where I only get the first name okay and then I'm adding the about
3:17:11
contents and then um so here here's some interesting uh stuff so um the goals for
3:17:17
2024 and goals for Q4 2024 are Dynamic so a this is always going to display the
3:17:23
current year and this is always going to display the current quarter that we're in of the current year so right now it
3:17:32
it's uh Q we are in Q4 2024 so this is all Dynamic and I I did that with this
3:17:39
little twig statement here okay um I'll admit I I even Ed I think
3:17:47
for this I Ed chat GPT to create this particular twig for me um and I didn't
3:17:53
need to I don't think I did anything actually to be honest with you um yeah so then uh it it this creates a variable
3:18:00
called year that I say goals for year and then it creates also creates a variable called quarter that I do goals
3:18:05
for quarter year pretty cool right um and then um if someone doesn't
3:18:13
have a so here I do uh display the member goals if they don't have any goals set it displays no goals set so
3:18:20
there's a way of defining default data right so like if I were to go
3:18:25
to uh was it this one before oh let's just go to another let's go to this one
3:18:31
uh oh uh oh looks like maybe maybe that is broken cuz it should display no goals
3:18:38
for okay there might be there might be a problem with that oh well um interesting
3:18:45
I I swear I thought I saw that working anyway
3:18:50
um so now I I did have some small customizations um for some of the member
3:18:57
photo stuff just for this page um so for example uh if we look at
3:19:04
oops over here if you notice uh it doesn't have uh it actually oh the the
3:19:09
background color of this um I've changed it to be uh the same as the background color of the web page so so that it kind
3:19:17
of bleeds into the web page so it doesn't look like a card until you hover over it so again again because um the
3:19:24
other member photo stuff is actually inside of my partial my with site Styles um on this particular page I want to
3:19:30
override some existing settings and just change things up a little bit um so yeah there we
3:19:40
go um oh another thing uh that's quite cool is uh you notice that when we go to
3:19:46
the this page you see the the menu bar up at the top okay but when we click on
3:19:51
it in here you don't see the menu bar okay um that's a feature of
3:19:56
offsite and uh he um something I haven't shown you
3:20:02
is how I created this whole site layout partial um maybe we could do that that's kind of going backwards back into
3:20:09
Foundation 6 the site design World okay um so inside this um this is my menu bar
3:20:17
okay uh which which you see now has been I added a couple other things added a log out button um and links to the
3:20:24
homepage as well as the charter page okay um but the thing is here I added this inside of an offsite hide
3:20:31
stack okay and what that does is um
3:20:39
oops um what that does is um if you visit this web page uh inde dependently
3:20:48
um it shows everything okay but when you open up that web page inside of a light
3:20:53
box or inside of an iframe IT hides that particular thing right so that's how we
3:20:59
I can kind of make this experience a little bit nicer um because when you go
3:21:05
directly to the page you want to see this right because you want to be able to get back to the homepage right and
3:21:10
maybe see some other stuff again this is a very simple site but maybe you could have a whole bunch of other stuff that you can do okay or
3:21:17
hide um but yeah when you're in a light box you don't want to see the menu and the title bar again like that that's not
3:21:23
useful so um that off-site hide stack will hide that menu when is inside of
3:21:29
the iframe but when it's not inside it'll display it so pretty cool little
3:21:34
um hack there okay
3:21:39
um so that was a very long- winded explanation of how the light boxes are done um again the same exact thing was
3:21:47
done for uh the meeting notes button um it goes to a meeting page um which the
3:21:54
same exact thing happens if I were to go up here and uh command click on one of
3:21:59
these um here is the meeting page right uh again the same thing this this top
3:22:05
bar um is hidden within the iframe um but else if it's not it opens it up in
3:22:11
the light box right pretty cool
3:22:28
um next
3:22:35
up hey guys I have a I have a half hour left okay um before I have a hard break
3:22:41
I didn't I never thought I'd be going for four hours but I half hour and we got to call it
3:22:48
um let's talk about some of the other pages that we have so um let's talk
3:22:54
about uh the the ability to add a new meeting okay um so if you see I have a page here
3:23:01
called new meeting okay and um since this has a form on the page you
3:23:07
need to have the admin core stack on the page okay um and then uh
3:23:15
here actually let's let's let's back up a little bit before I get into that let's talk about why uh I have this this
3:23:22
thing called this site layout okay and
3:23:28
um let's go ahead and let's duplicate this
3:23:34
page okay so there are uh some things on a web page so when you're building out a
3:23:41
site okay um I'm going to extract let's see let's
3:23:46
take this site layout and unpack it okay um so obviously as we build our web
3:23:52
pages out uh there are going to be a lot of things that we want on multiple web
3:23:58
pages or every web page okay and
3:24:03
um let's um so up here obviously I have a lot of swatches okay so remember I I
3:24:11
unpacked this particular uh partial and it contained site Styles uh which has a
3:24:16
lot of these has a lot of these other uh the the Social Links a lot of these other swatches that I created um that I
3:24:23
use across multiple Pages uh initially I didn't have them inside sight Styles because they were um I only used them in
3:24:30
one page and then I decided like you know I used them across multiple pages so I just chucked them in here into the
3:24:36
into the partial um and it's nice kind of separating them out um so I have my meeting grid stuff I have some the
3:24:42
search input that potentially shows up on multiple pages so um I added that into there as well okay
3:24:49
but um the important bit here actually I should
3:24:58
have I don't know if I can keep do undoing my
3:25:05
changes oh well in this site layout let's look at it here okay obviously I have a lot of
3:25:12
partials or I have a lot of styles okay but um in this
3:25:17
area I had um again at the very top of every web page is this menu okay so um
3:25:24
again I showed you why I have it in inside the offsite hide because if I load a page inside of an iframe I don't want it to be there okay um and then I
3:25:32
have a three column that has um here it's loading the logo from the CMS okay
3:25:38
um and then here I have a section lock which
3:25:44
which I'll I'll get into hopefully we have time to get into into some of the authentication stuff that I did okay basically if the remember I showed you
3:25:50
before how the charter page if you're logged in if you're not logged in it doesn't show the menu okay that's what
3:25:56
this section lock does so if you're not logged in it's not going to display this menu okay um so that's how that's done
3:26:05
um and then this menu item with the log out um there's a special macro called cms. logout and that will always create
3:26:13
a logout URL for you okay um so that's how that's done okay now before I talked
3:26:21
about remember in when we were doing the mockup I had a Bento Box right um so in
3:26:27
here on this page um I had this container uh that has uh again uh the
3:26:35
three column and the divider and then I had this bento box and all of my page content is inside that bento
3:26:42
box right so what I did is I created a partial out of that and here's the
3:26:47
container here's the the menu here's the Bento Box those were components that I wanted
3:26:55
on every single web page so I created a partial out of that
3:27:00
I unpinned the bento box so now that on every web page all I
3:27:07
have to do is add this site layout partial and then all the content in here gets inside of that same exact layout so
3:27:14
that every single web page has the same exact
3:27:19
layout okay pretty cool now um on some pages like this new meeting I I don't
3:27:25
want this inside the of the site layout partial because not every web page I want to have the admin core same thing
3:27:30
with the page lock I don't want every single page to be locked because this Charter page isn't uh locked right it's
3:27:37
actually publicly accessible okay um so yeah um and then uh I had a couple
3:27:44
custom swatches uh for this particular page okay and let's talk now let's talk
3:27:50
about this uh this new meetings page okay now I talked about the kind of the site layout partial that I
3:27:56
created this is actually really super simple okay so all I did is I had a a
3:28:02
heading so I have a header say new meeting and then I have a custom form
3:28:08
stack okay and that is if we go to forms custom form now this is the super the easi
3:28:16
implementation of it because inside here there is a checkbox for auto bu
3:28:23
form okay and uh when you set that so A you you in your form you set it we're
3:28:29
creating a form for my the collections of meetings my meetings collection and I
3:28:35
just set it to be autobuild form and what it does is it goes out into the collection it looks at the schema and it
3:28:42
will automatically build out the form for me
3:28:48
pretty cool zzy um and then uh what I wanted to do is in
3:28:54
here I uh I automated the ID field um and it just uh the ID is automatically
3:29:00
created every time with a with an ID The UU ID um because yeah I just want to be
3:29:06
able to create a meeting and this the ID is just some arbitrary random numbers and digits right and letters so uh I
3:29:13
don't want to display the meeting the ID field here um so what I do is I have a
3:29:18
Swatch here that just hides it okay so I just uh display Swatch ID
3:29:24
field display none
3:29:30
done okay another thing I could have done is I could have gone into
3:29:36
the um into the schema for a meeting um oh I guess I did do that I I
3:29:43
think I did that afterwards um I set the form to be hidden okay so whenever you create a new
3:29:50
um a new ID um it just hides the field automatically so actually this Swatch isn't even needed anymore okay um and if
3:29:59
you didn't know um for ID Fields you can set up an autogen setting and if you set
3:30:05
the autogen to be exactly this essentially it just makes the the ID always automatic and it will always be
3:30:13
unique okay um so that way that's why in this particular instance it's okay to
3:30:18
always hide or set your ID field to be hidden because the object ID is always going to be some random string of
3:30:25
letters and numbers okay it's not pretty to look at um as you you saw them earlier uh if we
3:30:33
go into our meetings I mean it's these here right so again they're not nice to
3:30:38
look at but they're guaranteed to be unique okay so there we go
3:30:47
um so that's it for the for the form this was I I have to say uh I forgot that I built this Auto build form thing
3:30:54
and uh yeah it worked it worked like magic here absolutely Gang Busters pretty cool okay and I already showed
3:31:01
you how to do the uh the attendees stuff so that you can you know have a defined preset list and Associate and do some
3:31:09
linking and relationships between um you know again different collections objects in different collections
3:31:18
okay um now let's go into the let's go back
3:31:24
up to the homepage and let's show um this edit
3:31:31
profiles thing actually well right before we do that um because that that
3:31:37
requires I I show you some authentication stuff first um let's look at the search okay so here I I can
3:31:42
search anything so I can search up Joe hit enter and it takes me to the search page okay and so uh if we go to the
3:31:50
search page here um relatively simple page um I did
3:31:57
do some fancy styling this is just a foundation 6 form um I did some fancy styling on there um I'm not going to
3:32:04
dive into the styling if you want to join me on Friday I'm happy to um kind of show you how I did that essentially I
3:32:09
just uh I did a bunch of form uh swatches here actually wasn't even that much was it oh no I think I added that
3:32:15
too the um here so there was a few different swatches here set the
3:32:22
background to transparent unset the Box Shadow unset uh borders um added a
3:32:27
bottom border um change the font and set the height okay that's the the 5-second
3:32:35
tour of what I done okay um so yeah I I kind of like
3:32:41
that um and so it's just this this search field obviously I didn't an inline I did an inline form here so that
3:32:48
the button and the field are inline um you don't really need to click the search button because you just hit enter
3:32:53
right so you just um I just type lauram there's none laurum there's some right
3:32:59
so you can search and you know and whatnot I just probably make this page not do that scroll thing um I just
3:33:04
copied and pasted the this this grid layout from the homepage but I'd probably turn off this maximum height so
3:33:10
it just displays and it Scrolls the page instead of this container um this uses a
3:33:16
search field um so in the uh in the input here um it uses a keyboard type of
3:33:23
search um this is just a foundation 6 form okay so yeah you kind of get that
3:33:29
for free uh with the little uh with the little X you can clear the search and whatnot um done by the browser which is
3:33:36
nice um so yeah um here this is a pretty rudimentary uh
3:33:45
you know loop again I'm looping through meetings um in this particular one um I've set it to be a search form okay so
3:33:52
I enabled search within this Loop um and yeah uh if you notice when when I do a
3:33:58
search that returns nothing I have um nothing found content uh that you then
3:34:03
display down here um and then essentially I just duplicated that the same exact layout
3:34:10
that we have on the homepage um but here uh the loop instead of preloading data
3:34:16
um or instead of loading all of it it only loads data from the search request okay so yeah because I uh you
3:34:24
just do that by enabling this um right there okay and if you're curious how on
3:34:30
the homepage how I have a search box here okay um on the
3:34:36
homepage that is also where is it oh here that is also a form okay that
3:34:44
is set these the search URL uh to the search page okay so we just do a get URL
3:34:50
action and we point it to the URL of the search page which is SL search right so the URL on this page
3:35:00
oops it is just uh you know the web uh the domain search so it just set you
3:35:06
just set the get URL action to to the web page and it's just the same exact form um in this form in the homepage
3:35:14
form I just made the text smaller right so I just made the text smaller and the the box and everything a little bit
3:35:19
tinier um and but yeah it's just it's just a foundation 6 form that points to
3:35:24
this page so is this form this form right here it's the same thing I just styled it I added some additional styles
3:35:31
that just made things bigger so that's
3:35:41
it okay
3:35:48
right the last bit um authentication okay so
3:35:55
um here we have a button that um shows you how you can edit your profile okay
3:36:01
now it is impossible um for this particular form if you look at the you
3:36:07
know as the meeting ID it loads the meeting from the
3:36:12
URL this doesn't do that and that's a security because we I don't want people to be able to edit other people's
3:36:19
profiles right so like if I put in uh you know uh
3:36:24
profile any other profile via the URL this form isn't going to do its job
3:36:30
right um that's because um I've set it to only load in the data for the user
3:36:36
that's currently logged in okay now before I can go on how I
3:36:42
accomplish that let's back up and look at how we lock down this entire
3:36:51
website um from the stack standpoint it's super easy okay at the top of the pages that I want locked you just add
3:36:58
the page lock stack which is right here in the authentication group of total
3:37:03
cms3 add that at the very top of the page now one important thing here is place this before the CMS core stack
3:37:11
okay so this needs to be the very first thing on the page if you want to lock it okay if you if you put this below CMS
3:37:18
core uh some it's you're not going to get the your expected Behavior okay because it it this has to happen before
3:37:26
okay that's why I have this little warning in there it has to be before the CMS core stack it actually threw me for
3:37:32
like an hour or so I thought I had a bug because I I basically what I did is I I put this inside of sight Styles behind
3:37:39
or after CMS core um and things weren't working I was like I knew I had this
3:37:45
working before what happened and so yeah it was just cuz it has to be before now uh if you remember
3:37:53
um in total CS uh there is an authentication group okay there is an
3:38:01
authentication collection if you notice that only has me right in it okay and
3:38:06
then um members so um this this was a this website was
3:38:13
actually really great use case for this and a test for this because um I want my
3:38:18
members to be able to log into this website okay but I don't want them to be
3:38:24
able to access this admin dashboard so uh one way to do that is to
3:38:31
create two different authentication collections um in order to log into this
3:38:38
dashboard you have to be added to the O collection this o collection is special
3:38:45
okay it again you have to be in the off collection to be able to access this
3:38:51
dashboard if any if a user that was logged into um this website any of the
3:38:57
users and if they tried to access that dashboard because they knew the URL or actually on the bottom of this page I
3:39:03
actually added a nice little thing a little lock down here when you click on that it takes you to the dashboard um but if you were again if
3:39:10
you were logged in uh as a member and you clicked on this you would get an access denied okay because they they
3:39:16
they are not a part of the off
3:39:23
collection now if you look at the O collection there are a certain number of fields required for um an off collection
3:39:34
a you need to have a field called active you need to have an email field you need
3:39:40
to have a password field um you need to have a creation
3:39:46
date a log uh a last login and a login count okay there's some other things
3:39:52
that you could optionally add that but they're not required such as um maximum login count expiration date and
3:40:00
groups I didn't need these particular three features for um my use
3:40:07
case okay but if we look at the members collection okay um let's just go into
3:40:13
the into the definitions here uh you'll notice that I added the active field right that requirement um so in
3:40:21
order for a collection to be used as authentication again it needs to have
3:40:26
these fields um uh active uh password uh and
3:40:32
all those other ones I said uh last login account created last login and they have to be named this exact thing
3:40:39
if you're ever curious you could just go look at the off schema you can see all the EX all the available Fields here
3:40:46
here okay and uh I haven't do I don't think I've documented that yet but I'll I'll make sure I document uh custom
3:40:53
authentication collections okay so um with that said
3:40:59
that's how that is set up um you just need to make sure when you create and again you can add as many other extra
3:41:04
Fields as you want so I added like you know all these social media Fields all these goals and about me stuff okay um
3:41:12
you can add additional as many additional Fields as you want but uh you have to have uh those other
3:41:18
fields in order for authentication to work okay um so uh back to the rapid
3:41:27
Weaver um so imp page lock um since I'm using a custom authentication collection
3:41:33
um you have to Define uh the collection that you're using so if you turn this off it's going to assume that you're
3:41:39
you're using the oth collection um I don't want it to use the O collection I want it to authenticate against the
3:41:45
members collection okay and uh then basically on every single web page that
3:41:51
I want locked I I put in that same stack now I probably could partial this out
3:41:56
but I I was I just copied and pasted the stack okay but yeah to be to be fair you
3:42:02
probably would want to um now remember this Charter uh page I don't want this
3:42:08
page to be authenticated so I don't have a page lock stack on this page because this the only page in the entire project
3:42:13
that doesn't require a login but all the others do so the search edit
3:42:19
profile they all have the page lock stack and they all have the collection set to
3:42:26
members okay so now with that set up um once you
3:42:32
um if you ever to go to any of those web pages it's going to uh here I'll log out
3:42:37
right um again if I go to um if I go to the Charter page
3:42:46
again I can access this page again I'm not logged in and I know that cuz I don't I'm not seeing the menu up here
3:42:52
because I'm not logged in um and if I go back to the homepage okay it's going to require that
3:42:58
I log in oops what happened did
3:43:07
I oh yeah I changed my I or I changed the the the the email address on my
3:43:13
account uh support
3:43:26
oh there it goes okay okay so I logged into the account that doesn't have access to the
3:43:31
dashboard right now I did that on purpose um so I can log in and I can see all the data okay um I can go and I can
3:43:39
edit my profile okay um and uh but if I click on this I'm going
3:43:47
to get an access denied cuz the account that I just logged into um doesn't have
3:43:52
access to the dashboard pretty cool
3:44:01
okay uh page lock stack locks down a whole page can you set a message to inform them that they have no access
3:44:08
well yeah you just saw that right so um yeah when I logged in it said access denied um and then you can either click
3:44:16
this page or click that link or after I think 10 seconds it'll it'll redirect you back to where you
3:44:23
were okay um okay um now let's talk about this edit
3:44:31
profile page okay in this edit profile um
3:44:37
form he so if we look here um this um it's the same thing it uses a custom
3:44:44
form okay um however if you'll notice that it's it's quite a bit nicer right I the
3:44:52
member field the member uh data or the schema has a lot of fields and I didn't
3:44:58
want to have it just like this one huge form I wanted to like break it up and give it a nice layout um so I decided on
3:45:06
this layout where I have these vertical tabs um and it gets you access to all the various parts of a profile okay and
3:45:14
um yeah I just I thought this was an interesting um UI
3:45:19
okay so um to do that again I'm loading in the data oh well um so there in the
3:45:29
off uh form there is a user data stack okay and um when you add this to the
3:45:37
page it loads in the user data for the currently logged in user
3:45:45
okay so in that case I'm logged into this account it loads my account information onto the
3:45:52
page okay and it gets you access uh actually in the settings of this stack it shows you all the various things that
3:45:58
you have access to you have access to the user ID the username the user email blah blah blah blah blah blah blah okay
3:46:05
so um let's skip this tab layout that I built all right we can review that in a
3:46:10
little bit if we have time but I want to go into this collection okay or this custom form so in this particular custom
3:46:18
form I I am not using the autobuild form feature remember in the other one it was
3:46:23
simple I just clicked that and I I just magically got the form okay but it was the form it was just a simple
3:46:30
form okay and I was okay with that but this one I don't want one big huge
3:46:35
ginoris form so and I also want to um now this
3:46:41
actually feature I isn't in your version okay the this uh checkbox to say load object that doesn't exist that's
3:46:48
something I just added uh cuz I realized I needed it okay to do this so um I'm
3:46:54
loading in an object and I'm loading it from the member's collection and I'm giving it the user ID
3:47:01
again I'm you I'm I I can use user ID because I added this stack to the page
3:47:08
and it loads all the user data into a variable called user
3:47:15
therefore in here I can give it the object ID of user ID and because that is a variable I need to check this little
3:47:21
button right there now if I wanted to load in if I
3:47:27
turn off that I can put in you know Joe dworman but then at that point that's
3:47:32
always going to load the Joe Workman user and that's not
3:47:40
help um user. ID because we want to dynamically load in the currently logged
3:47:47
in users I from their ID okay so at this point um what you need
3:47:56
to do is um you need to add in oops um you need to add into this form I this is
3:48:03
a big form it actually has a lot of fields okay I just have them
3:48:08
hidden okay um here let me let me shrink some of
3:48:13
these actually okay so this uh this is the first tab so
3:48:21
um if you notice here inside the form I have a tabs content stack and then um inside the tab
3:48:29
contents stack I have the contents for an about tab a social tab a goals Tab
3:48:34
and a password tab okay and then again that's the contents so this is the contents of the
3:48:40
social tab this the contents of the goals Tab and this the content of the password tab okay so if we here if we
3:48:48
look at the password tab you'll notice that it only has the contents of the password field okay and you add that
3:48:53
through this little plus button and you can add in the type of field so for each of these fields you put in the property
3:49:01
of the field and you can put in a few other options within the
3:49:07
field okay now if you wanted you can also do custom attributes with that point you
3:49:12
can do a custom label place holder and help text but if you if you don't do custom field attributes it pulls it from
3:49:19
whatever you stored inside the CMS which is what I'd recommend okay so it says label here but
3:49:25
on the on the page it actually pulls in password because that's how I've labeled that when I set up the
3:49:30
schema okay so again the password uh tab has the password the goals has the goals the
3:49:38
two goals things right um the social has all the various you know soci on or
3:49:45
LinkedIn Instagram YouTube blah blah blah and then the about tab has the uh
3:49:50
the image field which is set to a property of photo the name field which is set to a property of name so on and
3:49:57
so forth now there are some fields that I want I don't want the user to be able to access okay so like the ID field um I
3:50:05
so I add all the ones that I don't want to be seen um I I add them as hidden
3:50:12
Fields right so basically what it is is down here I went in Hidden field and then I added in the
3:50:18
property CU I just want to I don't want to remove the values another thing I could have done is I could have just
3:50:24
Chuck them into a a you know a visibility stack or something like that as well
3:50:31
okay um so yeah so that that breaks again that breaks down uh all my tab content
3:50:37
and it pretty much turns my form into a tab content right and then um now now I
3:50:45
I based this layout um off of actually there's a template called
3:50:54
um tabs or vertical tabs okay it's part of my free template pack for foundation
3:51:00
6 um and that's what I use to build this out um what's kind of cool is um by uh
3:51:06
when there's enough space we have vertical tabs on the left and on mobile
3:51:11
we have tabs on the top right so um that's a nice little setup
3:51:17
as you see it just uses Vis I I create my tabs twice and I just use visibility
3:51:23
to um show and hide them based on the break points right so this one shows for
3:51:29
uh hide for small only and this one is show for small only right pretty cool I
3:51:34
like it um now I did do a bunch of customizations for tabs um and you see
3:51:43
down here I have all these swatches that customize the look and feel to get me the basically the background the colors
3:51:51
um to match my site um I have round corners on the tabs uh actually that was
3:51:57
just the um I think that that was just the radius Swatch uh or not oh no there yeah it was
3:52:04
just a radius uh radius class okay but essentially like on the border I remove
3:52:09
the Border because tabs have borders I remove the Border um I uh by default the
3:52:15
the tab contents have backgrounds um I just wanted it to look like it was on the web page right so um
3:52:21
I just nuked the background on the tab content so it's transparent it's none um in the panels uh by default
3:52:29
there's some padding around this um I I nuked the padding um background on the
3:52:36
tabs so the background here um I wanted it to be one of my colors um that I defined in sight Styles so I just used
3:52:43
the Swatch Color Oops Swatch color of white which is as you see it's that offwhite it's not quite white
3:52:49
right um and then I styled let's see the borders uh the fonts I made them larger
3:52:56
um for some reason the the tabs have very small text by default so I made
3:53:02
them bigger okay um I and all of these if you're curious
3:53:08
um I didn't know the classes of these off the top of my head um and for tabs if you notice there there's all these
3:53:14
under C Swatch selectors element there's all kinds of stuff for tabs so there's tab container there's an individual tab
3:53:22
there's an individual active tab there's the tab content wrappers and the tab content
3:53:27
panel okay so based on all of these you can uh you know I used uh this page
3:53:33
element to Target all of these okay even like here like see to Target the active
3:53:39
tab is actually quite a complex CSS selector you don't need to know what that is you just click t tab active and
3:53:45
that's if you see here the active tab is that dark green okay and as you see it
3:53:51
pulls in the color the primary color from site Styles I don't actually set the color it just uses the primary color
3:53:57
from site Styles okay um so yeah there's just a lot of various little um little
3:54:04
doohickeys um what was this one oh this one was by default tabs have a uh
3:54:10
they're underscored the active uh the active tabs underscored I didn't like that so um yeah I this one was used font
3:54:19
Pro I should make that easier in the future just normal Foundation okay okay
3:54:26
um so yeah that's pretty much how this form was built again uh the magic is uh
3:54:32
I load in the the currently logged in user a the page is locked so you can't even access this page if you're not logged in so um if you are logged in
3:54:39
then it's going to continue and you will uh we're going to load in your data
3:54:45
um and then in the form I'm loading in your user ID so it always loads in the
3:54:50
data for just the loged in user um and it generates this cool tab
3:54:57
layout for the form I think it looks actually I'm I'm
3:55:02
really happy with this with this little site um I say like I think uh this feature of the custom form was the only
3:55:10
thing I added to Total CMS to accomplish everything I've showed showed you
3:55:15
today um everything else is uh is done
3:55:20
uh which is pretty
3:55:29
cool okay um with that guys I I think I've gone over the entire site um that
3:55:36
was 4 hours for those of you that are still with me man you are a hero um I
3:55:42
know I didn't I kind of sped up and I I I glossed over some things um but yeah
3:55:50
uh hopefully you enjoyed hopefully you got some out of some stuff out of today um and I know it was it was I'm
3:55:58
sure you're going to watch the the the reruns of this um or the reruns the replay right uh and you can slow it down
3:56:06
pause do all kinds of stuff if you have any other questions um please go ahead and post on the community on the for
3:56:13
this event I'm happy to answer any questions um I know someone's going to
3:56:18
ask me for the project file um I don't know what to do about that uh
3:56:26
this is a site that I I did build it for an actual project it wasn't a paid
3:56:32
project but um I'll consider it um so yeah uh I hope
3:56:40
you enjoyed this are the lasting questions I think I I know there was a lot of stuff in the chat that I didn't
3:56:47
mention but I think I answered all of the questions um so if you yeah if you have
3:56:52
any other questions um if you want answer now speak now or forever hold
3:56:57
your peace um if not thank you very much everybody um I'll stay on for a couple
3:57:02
minutes and and watch the chat to see if there's any um anything else here let's
3:57:07
let's PR through the page um see if I I missed anything um in
3:57:15
particular one thing I I'll say things some things I don't like okay
3:57:21
um I'm not sure I love this scrolling container here on the
3:57:26
homepage okay um actually I I didn't um when I was building this prior to like
3:57:32
an hour meetings here these two anything in the past you just go to the search page or something like that you know um
3:57:39
yeah and maybe by default in the search page I'll I'll just display everything by default instead of having a blank
3:57:46
page um yeah uh I'm not yeah I don't think I love the the scrolling container it kind
3:57:52
of makes it funky as you're scrolling down the page because once you once you hit this block and you start scrolling it Scrolls that instead of the web page
3:57:59
so H I don't know I I don't love that okay um when will you release the
3:58:05
missing feature um oh for the custom forms um there I'll admit there are a
3:58:11
couple other minor little things I've tweaked um I was thinking of releasing
3:58:17
it this week just as a very minor update since I'm doing the I did this live stream um so yeah probably uh this week
3:58:26
again it's just a some minor things I know everyone wants all the the depot and the other stuff that I haven't done
3:58:31
yet um but I I could probably ship an update this week uh with these minor changes that I that I've done okay um
3:58:39
that way it's just out there okay so yeah I I'll commit to doing that before the hangout on Friday I I'll ship an
3:58:45
update um beta whatever we are at 13 right now um with what I've done here
3:58:51
okay good question thanks Steve um so yeah I didn't I didn't like
3:58:57
this what else didn't I like um oh I didn't go over the QR code stuff
3:59:03
all right really quick
3:59:11
um okay where is the QR code good stuff all right here um
3:59:17
so funny enough you know how I talked about how we have these light boxes okay that are outside um for the
3:59:24
QR code stuff I actually have a light box um in the in the loop
3:59:34
okay and um there is a uh here let's copy and
3:59:41
paste this into okay um so essentially what I'm doing
3:59:47
here is um there is I built a twig extension for QR codes um and actually a
3:59:53
lot of this is documented uh if you go to uh oops uh
3:59:58
shoot hold on one second let me log into my other account
4:00:11
here all right um we go to the docs and then go to
4:00:19
um uh filters no uh shoot oh QR codes
4:00:26
boom um so uh here's uh docs act okay another uh the documentation for for VCF
4:00:34
and event um they weren't detailed docs like this they were just uh Stupid
4:00:39
examples like these ones were so another update for this is some of the QR the doc for the the QR codes I detailed out
4:00:47
all the various Fields okay um so yeah so basically this QR code. VCF VCF is a
4:00:54
virtual contact whatever F stands for um so this is an a contact card
4:01:02
right um so yeah so uh we did that so basically I have qr. VCF and I do first
4:01:09
and then what I do is I the first name is the member name I split by the space and I put first the last name is member
4:01:18
split last right um and then I do uh member phone member email member
4:01:25
website okay um uh and yeah I for this particular use
4:01:32
case that's all I needed I didn't need any of the other member Fields okay um
4:01:38
then so where was I uh oh I was in the I was here right so basically inside
4:01:44
because this uh this generates an SVG file okay this macro generates an SVG
4:01:52
that is a QR code so I put that inside of an SVG stack okay and I I in fact actually I I
4:02:00
probably didn't even need to do that to be honest I probably could have just done an HTML stack um because I noticed the when I put it in SVG stack it like
4:02:07
does this funky thing where it like yeah does something weird um yeah I actually
4:02:13
didn't need to use an SVG stack I could just put an HTML stack um okay but
4:02:18
anyway I'm getting beside myself um so here I have a light box that I set if
4:02:24
you look here remember I said earlier if you have a light box inside of the loop um you have to actually make sure that
4:02:30
the ID is unique so I did qr- member ID okay um so now that that now that
4:02:39
light box is unique for this member okay and then in the Social Links when I uh
4:02:47
do the link container around the address card um I do data- open and then the
4:02:54
value where the light boox ID needs to go needs to needs to also contain the
4:02:59
member ID so I have qr- member ID see so I do data open oops how did that
4:03:10
happen data open and then QR member ID okay and then I don't actually need to
4:03:17
link to anything so I just leave the default link to be um JavaScript void
4:03:22
zero so yeah that's how the QR code stuff was done um and if you're curious
4:03:28
I actually have some uh here now that we're talking I think it
4:03:33
was did I have some QR code swatches oh here i' had an SVG Swatch
4:03:41
that just um makes the SVG use the
4:03:46
primary color okay so um so yeah the SVG just
4:03:52
uses the primary color so when you when you click on it even the color of the SVG goes with my website's
4:04:01
colors pretty cool oh another thing I didn't even talk about is if you notice on each of these
4:04:08
I also added a little tool tip so it it it shows you the the network right so mastedon X Twitter Youtube so on so
4:04:15
forth that's super easy to do as well um inside the
4:04:21
svgs where is it here in the Social Links um in the link container for each
4:04:27
one I just put add tool tip and then LinkedIn and then this one is ADD tool
4:04:33
tip Instagram so so on and so forth pretty simple a lot of that stuff was I just
4:04:39
added like one bit at a time it was like okay you know I just created like task list oh actually you know another cool
4:04:46
man I I really got to get going but something cool that I something I do
4:04:52
when I code is um I do stuff like this like let's say this is some code right and
4:04:58
I'll I'll do a little um you know to do um you know blah blah blah okay
4:05:05
um right let's say it's uh well if if I'm in like an actual code
4:05:12
file it actually uh when I when I when I add the word Todo to a comment um it actually turns this line orange okay and
4:05:21
what I found myself to do is like when I had an idea let let's say um I wanted to add QR codes um here okay and I didn't
4:05:29
want to forget that and I could have like a separate to-do app and I do but a lot of times for just simple stuff like
4:05:35
hey don't forget to do this here's here's a little trick okay I chucked a pen on the page okay
4:05:43
and then I did this um so I would do like I don't know
4:05:49
too um QR codes something like that okay
4:05:54
um and then what I do is I just set that to be orange and let's say orange I determine orange to be my to-do color
4:06:01
okay and then content is I'm not going to add any content to this I always hide so now I have this this bright orange um
4:06:09
pen and I know whenever I see a bright orange pen it's a to-do
4:06:14
you know and you can even do something like you know you can make it big something like that so you just do you
4:06:20
know oh that's too big but whatever you know so yeah you know uh I
4:06:28
don't even think you need to header I you can like that or not but I would just probably just do that right so
4:06:33
whenever I see an orange pen somewhere on the page I know it's a reminder to me like hey I there's something I need to
4:06:39
do like I should add this QR codes right here you know and uh I did that a few times throughout this project I had an
4:06:45
idea and I didn't want to add it to my to-do app so I just kind of chucked cuz I do that in code all the time like I
4:06:50
said I just Chuck in a little to-do comment and just to remind myself later hey eventually I need to to do I need to
4:06:57
do this and I was like why don't I do that with pens and uh I don't know I kind of liked it it was an interesting
4:07:02
workflow so take or leave it okay guys you got me for an extra 15
4:07:08
minutes when I said I was going to leave so um I'm out of here I promise I'm gone
4:07:15
now um all right okay guys I am I'm going to call
4:07:22
it there I think I reviewed everything um about this site if you have any other
4:07:28
questions or things you want to ask me um join me on Friday at the hangouts or
4:07:33
post on the community I'm happy to help and answer things out so take care everybody um that was I think the
4:07:40
longest live stream I've ever done so uh hope you enjoyed it and learned a lot and learn a lot in the future because
4:07:46
I'm sure you're going to rewatch this and play it and pause it and do all kinds of cool stuff so take care hope you enjoyed this hope you got some
4:07:52
benefit see you on Friday bye