 Never got that decon dash layouts dash slides And so welcome. No, I think we did that. Oh la as they say here And so first we're gonna tell us really briefly. We're gonna tell us we're gonna tell you really briefly who we are I think I need more coffee So first Yosef. Hello. So my name is Yosef Davonik or does show in the Drupal community I'm deputy had a technology at the Macy labs in Zurich But I originally come from Austria and I really got started with Drupal in Central America So I've been around the different Drupal communities quite a while Started using Drupal 5 but mainly got got into the weeds of site building module development front end Which Drupal 6? Yeah, I'm quite active on the D8 rules initiative recently where we were reports the rules module to Drupal 8 And in general being a tech lead at the base elaps I'm really interested in what we're gonna do about Drupal 8 as we already started building Drupal 8 sites We kind of want to settle the ground for the new best practices For building layouts, and that's what we're gonna talk about today. And my name is Adam Joran I'm originally from the Washington, DC area in the US and I make my home now in Cologne, Germany I'm a senior front-end developer with form one which is based out of Alexandria, Virginia We work primarily with nonprofits and NGOs. Our rule is any company that does good in the world I've been a Drupalist for five or six years now, but a web developer for 17 I've done it all from logo design to schema design But I'm really really happy as a front-end developer and working with layouts and that kind of thing if any of you all saw Coder versus steamer last year in Amsterdam I was the guy in the kung-fu garb as steamer and in case you missed the pre-note I sang I'm an also an opera singer. So there you go So we wanted to also find out who we have in the room here So you guys know this right we want to find out who y'all are so Raise your hand if you are a site builder All right, Ray keep your hands up if you are also a front-end developer Yeah, raise your leg if you are also a back-end developer Product managers also anyone nice and so yeah, some of you do we're some various various hats Yeah, that's kind of let the take on so we talk about coding versus clicking and who does what? Well coding could be a back-end developer could be a front-end developer and Drupal has this interesting role of the site builder who loves just clicking around the user interface and we kind of felt like To visualize it so either you're more into front-end or you're more into site building But actually as you will find out in our talk building Drupal websites. It's it's basically a combination of all those things So we're gonna quickly talk about what the what the coding approach might look like so it has some of its various aspects First of all Front-end developers, especially now that we're heading towards Drupal a we really want control the markup in the history of Of Drupal is one of the things when I first came to Drupal and my friend showed me a website He wanted to help me theme. I was like what is that? I'm not touching that So we really want, you know different different markup and for some front-end developers some people who are site builders You also don't really want to get into the PHP and that's not your thing. You're really like more of a pure HTML CSS kind of person in Drupal. You kind of still have to sometimes work with PHP But you don't have to there are ways around it Going back to the markup. We want it to be beautiful. We want clean markup. No extra divs just talk to Morton about that and twig twig is coming twig is awesome is a lot of Amazing functionality can't do my school queries from your templates anymore. I mean, this is this is a very good thing So to summarize Those of us in the coding school. We want to take control. We don't want to touch PHP We want beautiful markup and we love twig Right so on the other hand side I being a clicker. I don't really know how to use PHP storm. I rather go on on the internet and I know PHP, but I have to be in my role, right? All right. All right So first of all click all the things Install a module fire up panels fire up manage display We can do everything as being side built as Drupal gives us so much power Which I think is really a great thing And we don't have to always hire a developer to to just assemble a website We can do a lot of stuff via the user interface and Of course to keep calm click all the things Also when talking about layouts, maybe somebody has seen the spark initiative Or have you ever been using Panels where you can actually create your own layouts via the user interface So, yeah, we kind of want to have all the control through clicking instead of writing code And that might be a good thing. That might be a bad thing Yes, and what was the last one? Yeah, exactly. So and You know the context system. So we really Like actually Myself I'm more software engineer So I want to do things right and the cool thing about panels For example is that the context system really allows me to decouple stuff to pass on arguments into a mini panel for example So so therefore while I'm still clicking I can actually build stuff that makes sense. Um, Which is kind of great So to summarize that We want to manage our field display within the back end rather than writing templates We want to also define layouts in the back end. We're going to find out if that's possible in Drupal 8 already Um, we want to control all the markup from the back end. So for example in Drupal 7 There's Like semantic panels, for example, would allow you to control all the markup or Display suite would allow you to do that. Um, which is actually something that my colleague Coder is using right Yeah, I'm I'm a huge fan of panels clean markup, which allows me to take out many of the extra layers of divs It's an it's an awesome module. I'm For the record not a pure coder. I used the best tool available to me But for the sake of today, I'm coder Right So we had a little back and forth on that topic and Yeah, but in the end, let's see what what we come up with So rather than just talking about philosophies you versus me. I versus you We felt like it would be most appropriate to talk about a few examples, which are common use cases And we actually build a website for them So the four examples will be we want to create a very simple content layout We want to create a complex landing page Then we want to do some variations. Let's find out how that works And finally, we want to do more complex content layouts that maybe pull in additional information that is not available on the content type itself And in order to do so We have an example so We kind of love attending conferences like this and one part of the conferences are the sessions and Thanks for showing up for our session today and another very critical part is people sprinting on initiatives Sprinting on Drupal core making stuff happen so that we Potentially can use the software In our daily day-to-day business So one of the conferences that adam me attended was Drupal camp north was pretty awesome More than 100 people showed up there and they had a big focus on sprints So the website that we're presenting here Just aggregates a few people that signed up to sprint at Drupal camp north And we can see that some of them they have the mentor loft So they are actually signed up to be mentors to help others to get into Drupal And then we can also see down there that there are different initiatives that have been Represented at the Drupal camp So we already see okay. There's a like a landing page that aggregates stuff and then we have The user profiles that will be rather like a simple content layout that splits up fields into a left and the right column So that's kind of the the setting that today we want to deconstruct based on either The coding approach or either the clicking approach All right. Okay. So sprinters have an overview. That's what it's going to look like Cool. So I think we're going to go on to the simple content layout As you can see up here. Oh, ah, what did I do? Oh my god Almost there Yes All right. So this is uh, this is a user node and this is you guys know lewis neiman. He's awesome He was one of my first mentors actually when I first started doing a core contribution And so here this is a really really simple layout. It's two columns 50 percent I mean not the most beautiful thing in the world, but for our purposes, uh It serves us rather nicely and there's we're going to talk about the coding approach and it's really really quite simple There there it is. You can see that Uh, I created within an article I just created my two div structure in the css, which I'm not going to show you I float user first and user second left with 50 percent boom done and Out of the box these fields come with a wrapper div A label and a div a field item div and you don't necessarily need all of this but I like Just enough wrappers so that when things go responsive things get grouped right And uh, it makes ultimately theming much easier. So there you go. That's pretty much Boom done I guess the nice thing about twig here is also that there is no php code involved. So You caring about beautiful markup and it's not having to touch php Uh twig and triple eight is really a really great um thing that we have So on the other hand side clicking How could I accomplish that in triple seven? There's different modules that would allow us to do that There would be panels that would be display suite um And that's basically it. Um, we could also say For the record it is My personal preference that when you're dealing with an individual node that you use display suite Because everything is pretty much coming to you rather than panels panels seems like Overkill for Dealing with fields from a given node No, I disagree. All right Because I I want to have things consistent So if my developers have to deal with display suite and then with panels and then with panels everywhere It's just like one piece that is not consistent with the others True, but couldn't you just have in your panel the rendered entity of that node and let the actual Layout and how you manipulate the fields be in display suite for that view mode Everything is possible. All right And and that's actually what we did at true nomics. The the company work worked for Before we tried to manage everything as you say Uh for managed display in display suite and use panels for the more advanced stuff um, but I just kind of feel like it's It's redundant Lots of different ways to get there from everywhere Cool. Sorry, um No, that's fine So let's look at this. Um So When I have my droopalate side up and running and all there's there's not much special going on here I just installed the admin What's it called admin toolbar? I think the the new module instead of the admin menu so that we can quickly access stuff here and I And I downloaded display suite and display suite is one of the the modules that has been ported very early to droopalate Which is great And it's pretty much working. Um Or most of it is working so Um, I can see here. I have um, all my different entity types and their bundles Where I can manage to display for them And in our particular case we want to have um a layout on the user. So the user entity Let's check out manage display for it And what we can see here down there. It's pretty similar to how it was in droopal seven We can just select from one of the layouts um So when I disabled that And go back on the user page We had loose We can see That it's um As twig has also this nice debug feature Isn't it supposed to be back in two columns? I mean one column I didn't Did the cache clear I think right now it's it's it's taking the The template so the implementation Or is it no shit That live demo is is going great Okay, um, we were talking about this place it so when we enable this Because we have like two things going on. We have the theme layer and we have to this place with layer Uh in the same installation, which is kind of funny for for live demos um So when I enable it it should be throwing stuff at me Okay, cool Yeah, so you kind of have to save twice, but then it works Um, it's a feature not about it's kind of cool And yeah So That's basically this place we can do for us. Um, it works pretty much. It's still in an alpha phase Uh, so especially when updating droopal eight, uh as we did last day You will find out more notices popping up But the great thing is on friday sprints. We can try to fix more of them Which is good so, um A quick review that in encoding for the a simple contact layout We we used in d7. We used the php template to belay we use twig and for clicking You have ds and panels And panels is coming soon for d8. They're working really hard on it Uh, but like there's a lot of some of the stuff that was in d7 Is now in core with the field api um And ds is there, but needs your help on friday so, uh landing page this was actually This is the same as the home page. Yes. Yeah. Yeah, so this basically has this view of the sprinters um And those who are mentors get their little like mentor love tag And this is what the bottom looked like and this is a different table. Uh, just another view and I'm going to contradict myself something I said earlier about The front-enders the um That we don't like, uh, the coders that we don't like php. I used to be a php developer. So I'm going to Cheat, I'm not sure actually how I would do this otherwise, but um, oh those Wait, where did it go? Yeah, we started with clicking it. All right. This is supposed to be you then. Sorry. I'll shut up now So, um In order to have a landing page layout First I need the layout and while clicking it's not possible because we don't have a layout builder available in dropper late so far But there's already modules like radix layouts that you can just download and it provides you with a bunch of predefined layouts already And this is how an example looks like so Still being a clicker, I think I can fill out I can just define a couple of regions and that should be fine. And then We mentioned that panels is not ready, but actually the panel's ecosystem is already pretty far in implementation So the context api or the context system of panels went into dropper core We also use it for the rules initiative And page manager for example can also already use it And then there's a layout plugin, which is which doesn't give us all the flexibility that panels gave us Um, but it's still it's already a good starting point and let's find out how that looks like So when I go into my site, we have seen how display suite works and we'll now check out how Page manager works. So after installing it similarly to how it works in Drupal 7 you will have the pages under structure And there you can just define your own custom landing pages And I'm just going to show how that process looks like because it's a bit confusing Um, so I'm going to create my landing page And then page manager presents me With a new layout like page manager in in Drupal 7 and panels had had this left Sidebar where you had to go through context and content and People got really confused about that Um, so how it works right now is that you can Define available context and we can see that the current user is a globally context that is available So this user object will then be We can then pass on to blocks for example as an argument Which is kind of cool So we don't rely on a global argument from the url But the page knows itself what it contains and what the information that it has and then can pass it on So that's the first part and the second part is the display variant So we can actually have multiple different display variants In order to have like fallbacks for maybe different permissions The animus user should see one version and the logged in user should see another version And finally we have access conditions Who should actually be able to access the page? So by default the the page manager just has a status code an hdb status code to return But with the layout plugin we can also create Panels like landing pages here So given that I've installed the layout plugin module and page manager I'll get presented with a very confusing list of options here And it's important for you to just choose the block page with layout plugin integration option That probably will be more simplified along the way, but it already works for us and we have already used this on production websites So feel free to try it as well So we're going to select the block page. We're going to Be able to select a layout here and we can see that I've based on the radix more layouts module. I've I'm presented with a long list of available layouts Which we're not going to use exactly We have this place with layouts. So the ninth thing is that by default they all share the same concepts I also have a test layout that I just created via code Good for this landing page We basically just need a one column layout But because the actual power that we want to leverage is the possibility to place multiple different items Along each other and we don't need to layout it especially because it's just on top of each other So what I can do now is I can place blocks into into the region that the layout provides um That's kind of It's kind of similar to the block placement dialogue that they have in Drupal 8 core itself it will It will just show you all the system blocks and in this case We have a list of initiatives That is a view. Um, we can also Pass on some some settings onto the view and then we just select where to display it and we can do the same for The sprinters Okay, cool. So and we can move them around here um save the variant cross fingers And the page has its own path now It's a landing page It's a bit different as the home page, but it works similarly. We just choose another order. Um, so the concept of Composing landing pages in Drupal 8 page manager the layout plugin I think it's really solid at the moment already It doesn't have all the capabilities that panels has in order to be able to place individual fields We will have to wait for patches. Um, but the community is really working hard on it And you can just join on friday to to to move things forward there. Um So that's landing pages For clickers So in uh for us coders like I was saying earlier, um You Don't have as many options. So we're going into our dot theme file. It's what we used to call the the um The template dot php, but it's now called the your theme name dot theme And there's a preprocess page and you can see that no matter what he does I can be a jerk and overwrite all the page content because this happens after Panels with its layout plugin gets rendered. Um And if I go All right, there it is so I can I was lazy So I did not actually gonna live code in front of you because that's boring But you can see that I'm a resetting the page content. Ha ha ha And Using views embed view which still exists has the same name This is the machine name for the view. This is the machine name for the display and Ha ha and you can see that my template has my um preprocess function has has overwritten what he had so Don't a bit. Uh, yeah better actually to communicate with your team members rather than just to obliterate their work You know Just saying All right And additionally so this was the preprocess function additionally, um, the other part is that you saw me set This variable of view one of view two. I have to create. Um, let's go Go back over here. Oh my goodness. I'm terrible at this. So Nope, this one This is we make this bigger Yep, cool. So this is page dash dash front dot html dot twig And the first thing we can do because we can do this in twig is you can extend the previous template Which basically says this is going to be a variation on the existing one and then you get to tell it how it's going to be different um This this is the coolest part this parent function. This is what the parent is. That's what This defaults to So I can say First i'm going to show the parent And then i'm going to find page dot view, which is what we set in my preprocess There if the second one exists, we'll run to that as well. Um, and we will get to the the footer stuff later um, but you'll see that This view here where the Is the same as page dot view You see this variables page view one is Where did it go? This page dot view one say that works All right, maybe a quick question. What what is the parent now outputting? The parent is would have attempted to be outputting what you just created Except that I told it to go away and print this instead So to to sum all that up Encoding we have preprocess and custom template that hasn't changed that much the syntax has obviously changed a little bit But how you would go around it is Largely largely similar and for clicking Yeah, we basically got the tools page manager panels Um, and in drupal 8 panels is not ready, but with the layout plugin we got pretty far By building landing pages So here's a quick wrap up on the different technologies. Um You want to start with sure, uh, this is just a Really, uh rough first type builders, uh D7 you had php template now. We have twig. Uh, I'm sure you've all gone to a million sessions on twig. So That's not really what we're covering here today, but that is the new that is what is new in dribble 8 And we still have our preprocess functions But no markup, please markup does not belong in preprocess functions You can put logic in there and then you can apply send those the variables that you create in your preprocess Over to your twig template and then run the logic there It's uh, I wish I had that example I have examples that I can I could show later. Uh, I worked heavily on the pagination For dribble 8 and that was we had to rip. There's all sorts of crazy markup in the pagination functions, which all got ripped out Uh, and is now the vast vast vast majority is in the twig template for the pager Um, but that's kind of it's a paradigm shift and you need to Be attentive to that because if you leave markup in your preprocess in dribble 8, it's it The main tip maintainability goes south real fast Yeah, big shout outs to the front end team for removing all of those preprocess functions and replacing them by twig templates. Awesome Um, yeah panels the the similarities as mentioned page manager with layers plugins or we wait for panels And context module. There's no context module Plans for dribble 8 so the maintainers have said that they will wait for um Clients asking them to implement it, but they don't have Particular plans to update the context module Uh, so hands up who's waiting for the context module in dribble 8 Oh, I'm sorry Well, um, yeah, I think that's going to be interesting and maybe uh, there's maybe some workarounds to that so with uh Visibility rules on individual pains and panels. Maybe that's a workaround But still the different concepts of pushing information into a layout or pulling it Um, so context just allowed us from different places to add information onto the page Whereas with panels we basically define everything. This has to be in the page upfront And then we can selectively disable pains for example Um, so the push concepts. I haven't seen any any approaches yet in dribble 8 out there Besides maybe writing code and just injecting additional Stuff into the templates Right, and finally display suite pretty much stays the same. We've seen that panels it changes a bit. It's like a whole rewrite um display suite Also changed a lot under the hood But the the concepts the way that this place suite works is really really similar. So if you're looking into Um a straight upgrade from your triple seven experience to triple eight This place will be the most comfortable from my perspective And also of course manage display itself is really similar from triple seven and triple eight So back to the lab back to our examples. We were on example number three, uh, which is the default layout of variations And the variation in this particular case is not incredibly, uh, beautiful or interesting But uh, it's just to have a on the homepage a different, uh, treatment of the page footer and i'm going to walk us through that So this was the in our page.html.twig in the the default, uh Default page template we expanded this the the footer block. So it has a container. It's got top section with four different, uh, pains. It's got a bottom section with another one and, uh, yeah, this is pretty much standard twig and How you implement it is we have this is also, uh, you may have caught this a little bit at the bottom of our page dash dash front dot html.twig This is where we're going to we're extending that and the footer part of that is, uh, we added this fancy footer with a little, uh Intro a little div above it and a little div below it. You obviously can do whatever you want in this type of thing And uh, yeah, so let me just go to remind everyone What that looked like was here so on a normal page just to Demonstrate the normal footer is just solid black I know it's it's not a very exciting example but There it is we can gives us the point is that we can override our default layout through twig and kind of It gives us a lot of flexibility without disturbing the hierarchy and a lot of power as well So Hey So, um, yeah, so Oh, what is this? I forgot what I meant by redundant code Ah, yes, see in php7 you actually need a separate template and you can't extend things So you actually have to have the standard code actually exist twice whereas through extending the standard code exists once And you just say extend blah blah blah and then you write your modifications Uh in triple eight. It's uh, you only have to do it once Which is As everyone knows a good thing clicking Yeah, try to come up with the clicking solution for extending twig templates and I don't have one so Sorry for that Maybe somebody has an idea Nope, so we're just gonna Keep a good relationship to our front ends and then we can extend stuff together Um, yeah, so it's basically hard or impossible because All the solutions that I see for site building is you have to define it upfront, which is not extending afterwards. Um Maybe you could do some magic with mini panels. Um, I don't know It's not really the way that that site building works Um at the moment So here's our last example. Um, we have seen a simple content layer. We've seen a landing page. We've seen how we can Uh modify different pieces of the website and I think one of the main work Tasks that we do when building websites is creating Uh more complex content based layouts. So um, and we strip it down to a very simple example So we can see front end united being an initiative. Um that Makes triple front end better. Um Its own entity its own contact display and then we can see a list of users that have signed up for this initiative so we show additional related content as a view block and Starting from triple five to triple six seven We have seen a lot of different approaches to doing that um So one of them could be entity views attached One of them could be the context module. One of them could be page manager and panels Um And one of them could be display suite. So let's find out how we do that um so The the really the most simplest thing is to just use the core blocks administration But as you can imagine when you have to So you would just place the the sprinters that are related to the initiative As a block Into a region But as you can imagine if you do that multiple times your block administration will be very long and cluttered And you will just not be able to to make any sense of it anymore And this is this was one of the main use cases for the context module Because we could split it up into separate contexts that would just Enable blocks afterwards, which is great So the core blocks is not very much of an option It gets things done, but it's not sustainable um, and for droop elate um I actually just found out about that feature while preparing the presentation because I was not a big user of display suite But this place suite has a nice feature of so-called block fields So what it does it just allows you to pull in a block as a field onto the entity Which is kind of similar to entity views attach where Yeah, you could attach a view to an entity But in this case we can attach any kind of block to any kind of entity Which is kind of cool. So let's walk through that that So this place suite besides managing the displays It also has some tabs up here and one of the tabs is where I can Create my own custom fields and this place with has different field types available in this case We want to use a block field So we just add a block field with Let's call it initiative Sprinters for the people That work on the initiative and we're going to attach this block to the entity type of node And then we're going to need a bit of coding for site builders to write down the The node type which in this case is initiative And then we also have to write a pipe and the star where the star could be Any bundle restriction or in this case we want to we want to have the field appear on all the on all the different view modes Of the of the initiative so it could be full display could be just the teaser view mode And then down here I can select from all the all the blocks that I have in the system So we got a sprinters list Then we save that we have it already done So As I created the field before for testing here it is and then over to my content type administration in the initiative content type When I go to manage display I can now see that I have already pre-configured as we as we already Prepared the presentation. We have the initiative sprinters field Being available exposing that block into my content ui are great Unfortunately, this demo broke yesterday when I upgraded struple eight core So I hope I I would hope to fix that on Friday or maybe somebody would volunteer to help us fix that um so besides of the screenshots Sorry, like it's working on the screenshot, but it's currently not working on the install. It's broken. Sorry And for the coding this is actually incredibly similar to the pre-process and template work that we did before In a you create a take a twig template for the this node type Uh So it could be page dash dash initiatives at html.twig And add your own divs with your width 50 percent and your float left And it uh works just like what it did for the user nodes that we demonstrated as the basic content example So moving right along so uh as the to summarize that Using uh triple seven we could invoke blocks of views from the template Um and uh Same in triple eight actually Actually in triple seven and triple eight in this case are are largely similar similar The only differences were the things I said before about no markup in the in the pre-process Yeah, I guess the difference is that Within tweak, uh, you wouldn't be able to invoke the blocks themselves No, but it would force you to use the pre-process So to separate the logic of preparing the information and then use it in the template Whereas in In triple seven, you could still just invoke blocks or execute my sequel queries from the template Don't say that Yeah, that's why we have to move on to eight, right? Um And for clicking there's a lot of options as mentioned. There's anti-divuse attach displays with dynamic fields panels and in triple eight pretty similar and If we all help out with the panels initiative, it would be much faster available To complete that that part of functionality for us Yes So, yeah, what about deployment? How do we take what we do on our local machines? Move it up the dev stage into production What are our options there? I guess um for site builders. It's really exciting that we have the cmi initiative. Um, so we can Basically be sure that everything that we click together will be Exported to the active directory folder and then we can just add it to a git repository Um And import it on the live site So that's kind of cool. What do you do about your code? Uh, well using let's assume we're all using git, right? So then any changes to your code you put in your feature branch you move it up, uh for the I one caveat though for the for the the ui for the site building stuff that you do through the ui I don't know who here has tried um configuration management in triple seven How'd that go for you? I I have nightmares. You liked it. Well, that's awesome. I it is not my friend I was much more happy with features in triple seven, but that Lots of different solutions. Anyway, but yes using git feature branches and So on et cetera So, uh, what did you all learn today? We actually actually want to hear like from a few people Like what do you feel that you understand now that you didn't understand 45 minutes ago? someone anyone Context is not coming to droopy late. No It might still come you can do it Yes Yes, we still need panels. Well depends on what you want to do But panels is coming and and I think most of us want the power that it gives us So what exactly do you need it for that you can't do right now? Styles exactly a flexible layout you shouldn't do them No, the markup is the markup is awful. It's not good That's possible But if using something like radix where you can just choose a different layout and move the You don't have using radix. You don't have to make them. They're already they're pre-made You just have to select them or have the even the editors select them and move the panels around in a theoretical world the layout of a given component or or pain Isn't dependent on its parent that it will if it's truly responsive It will change shape or deal with what the space Excuse me the space allotted to it This is easier said than done and also not the the subject of this particular talk But if you want to talk later, I'm rather passionate about this particular subject all right, um so Well, we think we were able to share is that encoding versus clicking that each has its strengths and weaknesses um, and though clearly neither is the best for every situation uh, and that For most of you who work on teams of with at least one or more person You really need to collaborate. You need to communicate early and often So, yeah This is a great quote There's lots of different ways to get certain tasks done and that leads us to this picture Which are like It's all about the cats, right? Um It's coding and clicking so it's really more about coding and clicking not either or not one against the other It really has to be a a team a team effort Yeah, I guess, um There's a lot of stuff that's similar to how it was in Drupal 7. There's a lot of new stuff going on Especially for the front enders. They can learn a lot of new technologies for the site builders They will run into a lot of bugs. Um, so it's like everybody can learn stuff and Things got to be interesting Also, yeah the way how Drupal code is structured is very different the yaml files. All the classes are split up. Um, so Yeah, but basically I think for site building It's pretty much the same It's just the lack of options that we have at the moment But the good thing is we can really do things One one approach that I didn't mention that we used actually for the macylabs.com website a year and a half ago Was to use views headers and footers to create layouts so You can attach a view to another into the header into the header into the header and um Our team laughs maintaining that website But it was the only option back then to to do a site building based approach to to layouts But since then you've used pan page manager and leo's plugin, right? Yes, good. So now for the new websites. We we use the best available tools Excellent So the good news is you do not have to throw the baby out with the bath water You you know when when I first started learning about Drupal 8 and twig and all these things I was like, oh my god This is so much new information, but in terms of our process as site builders Not that much has changed And I think that's really important to realize that You know to to be able to map in your in your mental paradigm of what you're actually doing That you're not do you don't have to start over so so much of what you already know will Will will uh bridge rather relatively seamlessly into Drupal 8 So we learned a lot anyway, um Oh, yes, so I always like to end with a little fun fact and this is the best thing I I found so far about, uh, Barcelona the Sagrada Familia has taken longer to build than the Giza pyramids in fact 10 times longer It all took only Uh 200 years with ancient tools and well by ancient tools. They must mean slave labor To build the pyramids, but uh, Sagrada Familia is still 200 years and it's still not done yet Reminds me I think it's like scope creep or something Reminds on the on the pre note, right? We had that analogy. Yes Exactly Um, so yeah, there's Sagrada Familia. There's pyramids And yes, so we've all learned a lot our brain is now full And oh, yes So if you want to work with a creative team that's really distributed, uh, you we have job positions open Um, that's the way we work together Um, and yeah, just hit on our website slash jobs to work with us in Zurich in Cape Town or in austin, texas austin texas Um, thank you all for attending and I feel like this would be a great opportunity to raise more questions because there's definitely a lot of stuff that we haven't covered And feel free to throw your questions at us Questions. All right. All right. So, uh, you can go to uh, this bitly to Uh, evaluate our session. We would greatly greatly appreciate that. Thank you all for attending. Uh, if you all have questions that you Uh, want to ask the group that's great or just come up to us right now. Uh, we're available. So thank you very much