[Music]
Lea Alcantara: You are listening to the ExpressionEngine Podcast Episode #75 with special guest, Leevi Graham, who will be filling us in on ExpressionEngine theming. I’m your host, Lea Alcantara, and I’m joined by my fab co-host,
Emily Lewis: Emily Lewis.
Lea Alcantara: This episode is sponsored by
[Music] Lea Alcantara: You are listening to the ExpressionEngine Podcast Episode #75 with special guest, Leevi Graham, who will be filling us in on ExpressionEngine theming. I’m your host, Lea Alcantara, and I’m joined by my fab co-host, Emily Lewis: Emily Lewis. Lea Alcantara: This episode is sponsored by EEHarbor. Are you looking to build a multilingual site? Grab Transcribe and build the site with ease today. Transcribe gives you the ability to quickly create language specific versions of your site along with custom language URLs. Emily Lewis: The ExpressionEngine Podcast would also like to thank Pixel & Tonic for being our major sponsor of the year. [Music ends] Hi Lea, how are you doing? Lea Alcantara: Pretty good. My sister is getting married this weekend. Emily Lewis: Oh. Lea Alcantara: So… [Laughs] I’m mixing work and play this week. Emily Lewis: Are you having to travel for that? Lea Alcantara: No, fortunately, it’s in my city. She actually traveled from Japan to have the wedding here because most of our family is here and her fiancé’s family is here too. Emily Lewis: Wow! Busy week. Lea Alcantara: Yeah. Emily Lewis: So I know we are both super excited to talk with today’s guest, so let’s go ahead and get straight to it because I know we are going to have a lot of information we are going to cover today. Lea Alcantara: [Agrees] Emily Lewis: We are talking with Leevi Graham about EE theming. Leevi is an EE developer and trained graphic designer, as well as the technical director for Newism, a web design and development agency in Newcastle, Australia. He’s also the lead developer for EE-Garage, home to some really fantastic EE add-ons. Welcome to the podcast, Leevi. Thank you for joining us! Leevi Graham: No worries, of course. Emily Lewis: We are actually talking to you on totally two different days. It’s Monday for us and it’s Tuesday for you. Leevi Graham: It’s Tuesday morning for me, a bright sunny Tuesday morning in Newcastle. It’s beautiful Emily Lewis: Great, and thank you again for taking the time. So we wanted to talk about theming today, and I think one of the first things we should do is sort of define what theme means because it does seem that some folks have their own idea of what a theme is. When you are talking about theming, are you talking about a boilerplate install or a design or something else entirely? Leevi Graham: Yeah, I guess my definition of themes probably will be a little different again to everybody else’s. Most people consider WordPress theme is the benchmark for theme. Definitely, they don’t really apply to ExpressionEngine. Now, WordPress themes are templates and asset with CSS, JavaScript and images and visual style that are there on top of a standard install, a title or post and some categories. ExpressionEngine doesn’t have that. So a theme for ExpressionEngine for me is somewhere between a boilerplate install and styling some existing kind of channels and entries, some standard channels and entries. So when I talk about a theme, I talk about a component of an ExpressionEngine website, whether that would be news or events or a people channel and being able to move that to another ExpressionEngine site and just install that small chunk or collection of chunks of channels and their related data, custom fields, templates and then all the way down to kind of assets as well. Lea Alcantara: That’s very interesting because usually when, like you mentioned, with the WordPress theme definition, it usually means an entire site, but you’re really trying to speak about one specific section of a site that may need to be taken off one project and then it could be added to another project if need be. Leevi Graham: Yeah, well, I guess our background at Newism is we are a commercial web development company, so we needed to optimize all of our development process, and over the last I guess five years or more that we have been building EE sites, everybody stays the same content over and over again. Lea Alcantara: [Agrees] Leevi Graham: I mean, every site has got a neat channel. Events are popular always, and then you guess, I guess, these more edged cases like carts and that kind of higher level of customization, but the basics are all there, so part of our client optimization strategy is we’ve got a default EE install in GitHub which has a database dumped in there as well. It has all the templates and it has all the channels and the custom fields set up. It’s about using those body add-ons in there as well. So internally when we create a new site, we just pull that down, but that’s not easy to share. Lea Alcantara: [Agrees] Leevi Graham: And that I think is the biggest problem facing themes in the EE community is there is no way to share the content amongst each other easily. I’ve done presentations. I’ve done some presentations before on naming conventions and people who got a standard way of setting up a site, but still they can’t share a channel easily. So that was the problem I was trying to solve when I was thinking of things. Emily Lewis: How do you share then? If theme is something that’s sort of like a package with all the different parts of a given element that might appear on the site, how do you share that? Leevi Graham: Yeah, okay. So I guess, the first thing to do is to find what those shared elements are. It all keeps off with the channel obviously, so you have a channel which is a news channel, and when you created a new channel in ExpressionEngine, you’ve got the option to assign a category group, a custom field group and status groups, so those are needed to be put in as well and managed. Within the custom field groups, you’ve got custom fields, the body custom field, standard custom fields, and then generally you’ve got associated templates which are a little bit trickier, and then you’ve got styles on top of those. So I break it down as the channel first essentially because channel is the thing you want to share so you have to pull all those other bits and pieces in with it. To do that, it’s actually quite complicated. Lea Alcantara: That’s what I was thinking. Leevi Graham: If not, impossible. Lea Alcantara: Yeah, I think in my previous projects, whenever I had to do something similar, I just basically had to redo everything step by step, like I’d write down the initial process in the first place. But instead of just plug and play to the next one, I actually have to still go into the channel preferences and I have to still go manually through the dropdowns and manually fill everything in. Was that your previous process before? Like what was the impetus for you to look into making things a little bit more modular and themed? Leevi Graham: Modular, the reason why we make things more modular was for training as well essentially. And so, if I have new staff come on and then giving them a whole ExpressionEngine site and saying, “Go and do that,” it really can be quite confusing to someone who hasn’t used ExpressionEngine before. But if you say, “Go and do a news blog and here is a pretty good example. Here is the channel. Here is the custom fields and this is how we do it,” that’s much easier for them to comprehend and get a small piece of that puzzle and then build up the whole project. But the real reason I guess why I build themes is because there is no themes in ExpressionEngine. I wanted to see if that was possible. Lea Alcantara: Oh okay. Leevi Graham: And the challenges that it brought as well. Emily Lewis: So in that situation you just described like with training, what is that process? Is it something where you have the person have a fresh install and then they have an existing install open and they just go to certain places, or is this sort of documented somewhere and they sort of follow along with all the steps and how everything is documented in the new install? Leevi Graham: Yeah, well, for now at the moment, you pull down out our site template, our EE 2 site template and you get it all. So there is no documentation. It’s not the ideal scenario, because like I said you throw people in the deep end which is why I wanted to consider theming as a potential training tool first and foremost, and then on the back of that, you start thinking, “Well, is there any commercial benefit? Back to the optimization thing, can we create some internal themes and just deploy them for smaller sites and go from there?” I see themes I guess on that note. I see things as a developer tool, as a business tool and not as a mom and dad want a website and they can just buy a $20 theme. I don’t see them as on the same level as WordPress themes. Lea Alcantara: Yeah. Leevi Graham: And the people who choose ExpressionEngine aren’t the same people who choose WordPress, so I don’t think we should be targeting them if we were to create some kind of theme marketplace. Lea Alcantara: Do you think part of the problem could be that some of the people in the community are thinking that we would go towards the WordPress ecosystem because we are using the word “theme.” Do you think that theme is the right term to describe exactly what this is? Is that perhaps the conflict? Because basically we started this podcast trying to define what it means and it’s totally different from others define it, so perhaps we need a new word. Leevi Graham: Yeah, it’s confusing. Lea Alcantara: Yeah. [Laughs] Leevi Graham: Themes is a confusing word within the ExpressionEngine community, and it brings up all kinds of not necessarily negative, but it brings a lot of comments. Now, I think Ryan had a post on EE Insider at one stage, and it brought up a lot of discussion in the community, and I think that was based around the word “theme” and what people believe a theme should be. We call it site template here in Newism. We have Site Generator, which I’ll talk a little bit about later which generates part of a site. I guess the theme level for me is the CSS and the JavaScript on top of that, but everything else underneath that is just a site component or a site module or even I haven’t really defined a term for it yet either. Lea Alcantara: [Agrees] Timestamp: 00:09:55 Emily Lewis: When it does come to that common notion of theme when it comes to CMSes, is there any market for that sort of front end kind of theme that’s really common in the WordPress world for EE? Leevi Graham: Yeah, there is WooThemes. They are massive, and I think that’s on the WordPress side. On the EE side, I haven’t seen anything at all yet. I know a couple of big ones had a go at it, but it’s really quite difficult to get a theme up and running in EE. Most of the things that people are being quoting, I guess, the recommended way in there are the boilerplate themes for a new site install. Emily Lewis: [Agrees] Lea Alcantara: [Agrees] Leevi Graham: The number one problem I had with that straight away is on a usability level. If you’re new to ExpressionEngine and you go to install a site and you create a site and then you add some channels and then the first you would think is, “Well, now, I want to add a theme,” you can’t. You have to go back and reinstall the whole site and then once you get that basic setup, you are stuck with it. Lea Alcantara: Yeah. Leevi Graham: So it’s too late in the process for new people who want to learn ExpressionEngine and you can’t chop and change once you already into the development cycle. Emily Lewis: [Agrees] Leevi Graham: So therefore it’s too late. Most people won’t consider things at that stage, but continue doing what they are doing. As far as kind of do I think there is a marketplace, yes, I do. I think the marketplace again is for developers who need to sell sites to their clients at a cheaper rate. Lea Alcantara: [Agrees] Emily Lewis: [Agrees] Leevi Graham: Or to develop them quicker. Emily Lewis: Faster, right? Leevi Graham: Yeah, faster, so a bit of profit margins and things like that. If you can do that, then definitely there is a commercial advantage to themes and building your own themes as well. Emily Lewis: Is there a commercial advantage to themes as you’ve envisioned them? I mean, it sounds like if you can bring someone up to speed a little faster by using it as a training tool that that probably saves some time and perhaps helps with profit margins. But does it make a huge difference in how quickly you can get an implementation up and running? Leevi Graham: Yeah, well, from our EE 2 site install, our default template which is kind of the precursor to themes, yeah, it definitely does. As far as theming goes, we are still experimenting with that so I can’t really give you a yes or no if that makes things faster. I think where it will make things faster is maybe not necessarily for our team here, but for development studio trying to get up to speed with ExpressionEngine. They can buy a boilerplate template that doesn’t have necessarily any styles in it. You better remember here, ExpressionEngine has always been pitched to the designer crowd, well, the designer part of our industry, and over the last couple of years, it’s definitely become more complex. There has been a push towards a framework, but that’s left kind of the designer or the more designer focused web developers kind of a little bit out in the cold when it comes to the best way to implement a site. Emily Lewis: [Agrees] Lea Alcantara: [Agrees] Leevi Graham: And the best way to use tags and which third party add-ons to us, and I’ve seen a couple of site recently that we’ve done some audits for that have been pretty messy. Optimization is not there. They’ve been overly complex because you can just tell that the developer is inexperienced. They’ve seen new add-ons and they’ve thrown them in. Lea Alcantara: [Agrees] Leevi Graham: It’s not put forth the best outcome for the site of the client or the performance, so we were hoping that themes as a starting point for new Expression developers would be a training tool, not just for us, but for the greater community as well, and I see that it obviously has a commercial benefit there. If you’re a new web dev studio and you’re looking to move to ExpressionEngine, if you can get up to speed straightaway with a good example, then I think you’re going to be in front. I don’t think there is any good examples of a code for the ExpressionEngine installs out there at the moment. Not good enough to base training off anyway. There are obviously the training tools, but they are not just installable things that people can kind of do themselves. Lea Alcantara: That’s a good point that you put out there because so far all the training tools that we have right now in the ExpressionEngine community, we have the books, we’ve got the videos, we’ve got blog posts. But I don’t know about you, I learned by doing and sometimes when you have at least something to start it off with, your learning process is a little bit faster simply because all these things have been set up for you and then you just kind of hit the ground running. Leevi Graham: Yeah, you learn by doing, but you learn by doing over and over and over again. Lea Alcantara: [Agrees] Emily Lewis: [Agrees] Leevi Graham: I built that news channel more times than I’d like to. [Laughs] Lea Alcantara: [Laughs] Leevi Graham: I guess with themes trying to work out things, I was really solving my own problem as well. Emily Lewis: Do you anticipate that you’ll be moving in the direction of perhaps packaging these themes for availability to other developers or agencies? Leevi Graham: Yeah, yeah, that’s the goal. So I guess, I can tell you where we are at the moment with our processes. At EECI Europe, I presented a presentation on things in site generation, and part of that presentation was to actually finish off the Site Generator we have been working on a couple of years now and actually getting packaged up. So that can be downloaded from EE-Garage.com/site-generator if you want to have a look at it. At the moment, it’s importing and exporting channels, standard custom fields, categories, statuses, all those kind of things and giving you a little installer package, an export/import package. So that’s good. That’s working, and the next step for us is to find time to take our standard templates and clean them up, which we have done 90% on and then we put some paint on top of it and have it looking good and ready to go. So at the moment, there is a dev preview there for people who want to try that import and export. So that was really exciting. When I presented that at EECI, I got a lot of good feedback. We didn’t really promote it after that because it is at a point where we are still developing it, so I wanted to get a bit of feedback from the people that were out there through the conference first, and it was well received. The demo went well. It worked which is a great thing. Lea Alcantara: [Laughs] Leevi Graham: But then basically you’re live coding on stage… Lea Alcantara: Sure. Emily Lewis: [Laughs] Leevi Graham: So yes, and the next step for us is getting back to the packaging up. It’s really seeing if there is a potential market there for us to sell the themes or to encourage other developers to create their own themes, but that’s really what we’d like to see, I guess, and we would also like to see dev shops develop their own internal packages just to smooth their development process. Emily Lewis: Yeah, especially if there are a number of agencies or developers who could create their own themes based on their individual specialties. If they work for a certain industry and they are doing a certain common element for that particular industry, the sites in that particular industry, then that would make it really useful for everyone else if they are not as familiar with those sorts of needs. Leevi Graham: Yeah, and everybody has their own style. Emily Lewis: [Agrees] Leevi Graham: Developing a site, I’ve seen them from good to bad to ugly. My style of coding a site is not your style, but if you can still create your own package that you can import and export internally in your own organization, then those themes, temp site template is still going to be a benefit to you. So it really does come together though when we all start building on a standard template structure and standard channel structure and like I said, Andy, Jamie, and myself and others have been working internally in our own organizations building that structure. If we can get the community on board and all have a standard the way we write channels and naming conventions, then what happens then is the package that I install for events will already match kind of your header includes and your channels in your site and then third party designers can build on top of that for kind of templates or they know what the channels are and they know what the custom fields are, so then the third party designers can adjust out providing the CSS and the HTML and even the templates and the JavaScript and the design, and then we are kind of getting to a WordPress level, but we can’t get there until we have a standard install and standard components. Lea Alcantara: Do you think that will ever really happen? Because, I mean, the double edge sword of ExpressionEngine is that you can build a site any way you want, and with new techniques like creating templates using Stash or perhaps some people really love Structure, so they are actually foregoing the regular EE template tags and behavior, those types of things. Would a Site Generator be able to accommodate those types of quirks? Leevi Graham: Yes and no. Lea Alcantara: Okay. [Laughs] Emily Lewis: [Laughs] Lea Alcantara: What’s the yes first? Leevi Graham: Well, I tell you yes because I’ve considered that, and I wrote a little add-on that you can get on my GitHub account called If Installed. Lea Alcantara: Yeah. Leevi Graham: And basically it just checks the module. WordPress has got a similar thing, but it just check different modules installed. So potentially a template designer could have If Installed Structure, If Installed Text Only, If Installed Pages and Modules and provide the different markups for their different navigation elements, so that’s the yes side of things. The other test base I’ve got is Low Search, standard native search and Solspace search, Super Search. Lea Alcantara: Yeah. Leevi Graham: You provide three different search forms. That’s a lot of work for a template designer. Lea Alcantara: Sure. Leevi Graham: So I think that if people want to go to that effort, they can. But what I think would be a better step or a more realistic step is that the template designers, we keep our Site Generator templates enough to get started. Lea Alcantara: [Agrees] Leevi Graham: We set up the channels so the custom fields are all the same, and then when it gets to those third party template inside, then you can give someone a base install so it works and they can check their channels are working and their codes being out and put in the template’s location properly and all those kind of things, and then you say, “Go ahead. Now, do whatever you want to it. Add whatever third party modules you have to do or change that standard content custom fields to Wygwam or TinyMCE or whatever you want to do, you can go and do that now, but we are still hopefully saving you a day’s worth of setup. Timestamp: 00:20:39 Lea Alcantara: How about if you want to work on a current site? Because I think one of the benefits of the WordPress theming situation is that because there is a standardized install, you can kind of flip through different themes without actually affecting the setup of the site. Currently, because ExpressionEngine can be set up completely differently, is the Site Generator or similar things like that, do you think it would only ever be possible for new installs only? Leevi Graham: No, no. I think the goal would be to make it switchable. Lea Alcantara: Good, okay. Leevi Graham: You can make templates switchable. You’ll still need that basic channel structure. Lea Alcantara: Sure. Leevi Graham: So if everyone is running a similar channel structure or the new bunch of templates you got or you have utilized or knows about that old channel structure, then you should be able to switch things pretty easily by, and this is the bit I’m working on now with the actual generator. I think when you import a bundle that’s coded or you import some components, I think what I need to do is remove all of the templates from the database, back up all template folders and dump the new templates into the template directory, and that should switch, that should just switch because you don’t have any leftover. Let’s say you remove some templates, obviously, you don’t want those URLs to move with this, so you remove those by deleting it from the database. Lea Alcantara: Sure. Leevi Graham: That’s a possible solution, but it does come back to that kind of base install. Now, whether a base install is a Newism base install inside of our organization or it’s a community-based install, it doesn’t really matter as long as you have the same base install and your themes and your templates know about those channels. Lea Alcantara: [Agrees] Leevi Graham: So if you have a library of components, you could start with a news channel and then you could add an events channel amongst them to track, if you install that little component, that would be the goal. Emily Lewis: With this idea of using themes and perhaps making them available to the broader community, is there any concern about obviously not your agency, but another agency putting out subpar information or a subpar theme or code pack or whatever you want to call it that may be doesn’t embrace best practices or… Leevi Graham: Yeah, that’s definitely a risk, but it’s no different to third party developers now or someone writing a blog post with not best practices. Emily Lewis: [Agrees] Leevi Graham: I think it’s up to the leaders in the ExpressionEngine community to push best practices and standards. Now, it’s really kind of up to, and that should be coming down from EllisLab at the top with their documentation and then it should be flowing on to people writing blog post, and the people who are most respected in the community, they get the most traffic, so really if everyone is publishing best practices, then it should be good. But again, my best practice is not your best practice, so there is always going to be a debate on the better or best way of doing things. Emily Lewis: [Agrees] Leevi Graham: But yeah, there is a risk of that happening. If there was to be some kind of theme store, if Newism or EE-Garage wants to make some kind of theme store, then it would have to be moderated by us. Emily Lewis: [Agrees] Leevi Graham: I know Devot:ee accepts all kinds of site, which is fine. That’s great. It’s a massive library of add-ons, but then on the flipside, if you would have a theme store, I personally would want to moderate the themes. I think that also comes down to that base standard install. I was moderating themes on an EE-Theme Store, I’d want the people contributing those things to use the base install for the bigger picture, best practices, and those best practices would certainly be up for debate before accepting third party things. As long as everyone is on the same page, that’s all that matters. Emily Lewis: What about the actual front end of the control panel like your Override CSS add-on, do you consider that to be theming in its own way? Leevi Graham: No, no. Not really. Lea Alcantara: [Laughs] Emily Lewis: [Laughs] Leevi Graham: It’s a lot of work. I’ve seen those override. I don’t know if you’ve ever tried to install it at the control panel, but all of that overrides for the control panel that would have come out, but actually it takes probably more work than theming a site. I think Override CSS is necessary for the control panel for our clients, but I don’t think it’s necessary for every client. So it’s slightly different to front end things where the public sees. Emily Lewis: [Agrees] Leevi Graham: Some clients I think would be more than happy with the back end of ExpressionEngine the way it is now. I personally wasn’t, which is why I have override.css for. I don’t see in the future of market for control panel things. I see a potential for free add-on if somebody wants to go down that path of just being able to bring the control panel a little bit more to your client’s needs, but that’s really just a nice thing to have. It’s not a requirement in a site. Emily Lewis: Do you have any sense of a timeline of when you may be able to make something available for the community and sort of see it an action outside of the people you’re testing with internally? Leevi Graham: That’s a very, very good question. Lea Alcantara: [Laughs] Emily Lewis: [Laughs] Leevi Graham: The Site Generator, the current version is available for download like I said, so people can start importing and exporting their own templates on their own sites internally. Potentially, people would stop building their own themes based on their own templates internally. As far as putting together an actual theme goes, we want to get that sorted pretty quickly. My last kind of major kind of crack at it was to go through, which was quite a challenge, and actually simplify all of our standard templates where I guess like any other development shop we started, we added the body add-ons, we added custom techniques that we use. But to distribute theme which isn’t immediately understandable because you need PHP in a template or you’ve got some advanced PHP in the actual template or you’re your using an obscure third party add-on, it really makes the theme less usable. So we had to go through all of our templates and pick out all the commercial add-ons and find open source or open license alternatives, and where that was impossible, we looked at actually just removing that functionality to get a workable theme out of the door because the last thing I want to do is say, “Here is theme and it’s X dollars and now you have to go spend $500 on add-ons.” Emily Lewis: Right. Lea Alcantara: Oh yeah. Leevi Graham: So that’s a commercial reality of EE though. Lea Alcantara: Sure. Leevi Graham: We need to spend on licenses at every site and I’ve got no problem on doing that, but for somebody who just wants to try out a theme or for somebody who is looking at themes as a way of reducing their overheads, then I don’t think it was wise to put that burden back on top. So that was a really interesting experience for me to revisit EE templates and development from almost a beginner’s point of view. I think our templates internally are better for that now as well. They are faster and they are less complicated for all the other guys that use them. So to get to the next stage of development, really all I have to do now is package up those templates and put them out as a kind of standard base install. I want to provide a base install that has no design. It’s just pure EE tags, caching and all best practice stuff. Lea Alcantara: Cool. Leevi Graham: I want to get that out the door first and then we will look at designing and actual theme for purchase. The designing of the theme, that’s where it started to get tricky, but that’s personal taste again. Lea Alcantara: Yeah. Emily Lewis: [Agrees] Leevi Graham: And I’m seeing more benefits. I’m seeing more benefits back in a template that’s hooked up and ready to go that you can put your own design on top of, rather than a design that you can just slightly tweak a little bit and give it away to the client. Lea Alcantara: Right. So I’m curious. You mentioned that your templates are better for the exercise you just did trying to simplify things and how do I look at this as a beginner. Have you found that some of the alternative third parties, let’s say, open source choices are better or you might even start preferring them to some of the commercial third party add-ons? Leevi Graham: Yeah, well, I’ll name drop a couple. You’ve already mentioned Stash. Now, that’s a brilliant third party add-on. Emily Lewis: [Agrees] Leevi Graham: We use that quite a bit. We have NSM Transplant which was the kind of first version, I guess, of Stash. Lea Alcantara: [Agrees] Leevi Graham: We had LG Transplant before that, but we created that exactly the same reason, for performance and to simplify templates, and so we use Stash in the templates just only a little bit though to kind of inserting word crumbs in the headers. Emily Lewis: [Agrees] Leevi Graham: The whole idea of Stash being used is a router and swapping the templates kind of passing around. We have the body that doesn’t embed header and footer anymore. Lea Alcantara: Sure. Leevi Graham: It’s kind of just content that’s embedded into another layout. I think that is too complex for someone just picking up EE to understand. Timestamp: 00:30:24 Lea Alcantara: [Agrees] Leevi Graham: It’s a powerful tool and it works really well. If you use other templating languages like Twig or Ruby stuff, that’s exactly the way it’s done. But because EE isn’t done that way, I don’t think it was wise to have that in the default template for somebody just picking off a new install. Lea Alcantara: [Agrees] Leevi Graham: If the templates are confusing for them, then that’s not going to be any good. So the other thing that we do role is we really have to reconsider our approach to navigation. If you’re trying to add pages in an existing site from a databasing point, you can’t rely on the entry IDs being the same. Lea Alcantara: [Agrees] Leevi Graham: So originally when I started writing EE sites, I was always using URL title as kind of the indicator now whether that would be hardcoded in a template for a particular page or if it was actually coded from the URL, but I was always using URL title, and then at some stage I had changed my mind. If a client goes in and changes the URL title, the site could break, so I went back to kind of hardcoding some entry ID, and that’s why we said it doesn’t work when you’re importing. If you’re already have 50 entries and you’re importing a new page and you expect it to be an entry ID 2, and all of a sudden, it’s 51 and so it breaks anyway. So I went back to URL titles for my templating. I don’t see a client ever changing the URL title on some particular pages. Dynamic pages is a different story, so that was another kind of challenge we had. The other thing I had to do with the navigation is actually I pulled out structure and pages and went back to, for most cases, the standard template group, template name, third segment is the identifier for a lot of pages because I needed to simplify the way that works for the import and to the export, but for also immediate understanding of how things work. When you start to use pages, the template and URL relationship becomes blurry. Lea Alcantara: [Agrees] Emily Lewis: [Agrees] Leevi Graham: You need to really create that yourself to understand how that relationship works or otherwise you start looking on templates and things aren’t there. So I had to bring that feedback and the third part I had to bring right back, I guess, was the way I handled forms and success messages and things like that. I went to… now, I’m going to try and remember that, but I don’t know. I think it’s a Freebie which is the last segment removal add-on. Basically, what it does is that it takes the last segment of a URL and actually removes it from ExpressionEngine’s parsing of that URL so you can do /success, /error and then the template parsing and the URL parsing won’t be affected by last segments that when it find a 404, it would just use the page that you expect or something like that. Lea Alcantara: Oh. Leevi Graham: So I had to find a free version of that which I did, and then one last one was the member management. We always use Solspace User. Lea Alcantara: [Agrees] Leevi Graham: But then we found Freemember. It considerably has less features, but it has enough to get you password, update your account, logging and have front end templates, so it was just enough to kick off the template, and from there, like I was saying before, if you want to develop on top of that, then you can. But that’s kind of the base starting points, so I had to bring everything back to a base level so then people could put on that top of that themselves. Lea Alcantara: That’s pretty cool. Leevi Graham: It was a challenge. It’s probably a challenge and I recommend all A-developer should do once a year or once every two years. Emily Lewis: Yeah, revisit how you’re building things. Absolutely. Leevi, you had mentioned that you gave a presentation on theming at EECI UK. I’m just curious, what was the general interest level at the presentation? Leevi Graham: It was really well received. Marcus Neto was really excited about it. He actually pointed out another potential benefit of the Site Generator I demoed. It is that it allows you to export kind of a channel data and import that same package together, and so potentially another benefit is not just necessarily theming, it’s you’ve got your local dead site. You’ve created a new events channel. You’ve created new templates with fairly new categories and you have to push that to your production side. Now, currently, that’s base merging and all that stuff, it’s basically impossible. There is no migrations you need, so you have to go through and create that again. So that was a potential, not a benefit, which got people really excited. I didn’t really considered that at the start, but it’s something to go over and look at now and see if we can improve that process, but it would essentially allow someone to take a chunk of a local dev site and import it on their production side with all the channels and all the templates set up. So that’s another potential time saver there. Emily Lewis: Well, it will be interesting to see where this goes. I really like the idea to speed up the process of getting certain elements of implementation built out. I also think, especially as a training tool, if we ever end up with any sort of official certification or something for EE, this could be a good tool for people to learn and train. Leevi Graham: Yeah. You could almost consider it a kind of code-along tool. Now, if you are up to this stage of the training and you want to create an advanced gallery, do these steps for it, and here is the reference component. Install this on your other site to follow along. That would be really cool if you could get something like that. So they are all possibilities, but it all comes back to the core problem, I guess, if I had to sum it up is the inability of ExpressionEngine at the moment to import and export channels and their associated attributes. Emily Lewis: [Agrees] Leevi Graham: If we can solve that problem, then we can really think about templates, and then we can really think about themes, and then we can really think the visual things, and then we can really think about training tools, and then we can think about all the other things, but unfortunately, until we have that functionality, all those things are off the table as far as I’m concerned. It’s just impossible. Emily Lewis: Yeah, that’s a good point. I mean, either one of you, do you foresee that that would be a direction that EE might take to offer that sort of functionality for exporting channel entries and data? Leevi Graham: I hope so. That would be really cool. I write add-ons for functionality that I require in ExpressionEngine, and I would never hold it against EllisLab taking in that functionality and putting it in the core. To me, that’s a good thing. Potentially, it’s a loss of income from EE-Garage, but that’s fine because it’s also less support, less maintenance I have to do on an add-on, and then I can spend time solving the next potential issue with my clients or writing another piece of functionality for ExpressionEngine to make it better overall. So if they were to build that in, that would be great. That would be great, and what it does is it means that then it becomes a kind of standard, and if it’s standard, it’s likely to be embraced. There is less barrier to enter to try it. There is arguably more trusts because it’s part of the standard core. For new developers, they don’t have to go out and find that functionality. It’s in their documentation. It’s all there, so on a broader discussion, anything that EllisLab rolls into the core is going to be a benefit to the community. Emily Lewis: [Agrees] Lea Alcantara: What I think is interesting about this entire conversation is that when I entered into this, I always thought about theming as making things as different as possible based on everyone’s individual wants for their control panel, but really the entire core of it is standardization. It’s like trying to make sure that everyone is on the same page before they diverge. Leevi Graham: Yeah, definitely, because if everyone is starting at different points, then we can work together to produce better documentation on the standard kind of installs. Web developers, I guess, are pretty notorious for redesigning the wheel every single time in trying to make things better. Lea Alcantara: Yeah. [Laughs] Leevi Graham: Which is great, but there is a lot to be said for using something that’s already out there. People write those things; they write frameworks. And that’s the reason why we use ExpressionEngine is we don’t want to roll our own CMS every single time. It’s the reason people use a bootstrap, because they want to get on with the writing the custom functionality, not rewriting the same subject done over and over again. Emily Lewis: Right. Leevi Graham: And so I really like to see a documentation standard come out at some stage or for somebody to start that naming convention standard and this is what we call channels and then we can build on top of that. So yeah, the end goal is to have a selection of 1,000 beautifully designed ExpressionEngine installs. Lea Alcantara: [Laughs] Emily Lewis: [Laughs] Leevi Graham: But if you can’t switch between those if you need to, again, the other side of the theming argument for me is, I’ve never had a site halfway through build that I needed to just switch the visual thing off. That’s kind of a rare case for me is that halfway through a site like for six months and someone will just say, “Can you install this other theme on there?” Because they’ve spent money on their brain and they have spent money on that. Emily Lewis: Right. Lea Alcantara: [Agrees] Timestamp: 00:39:56 Leevi Graham: We need to change the visual appearance. So yeah, for me, the theming or the template, it’s really about templating and optimization of the development process rather than the visual design at the end. I think if we can make that differentiation when we discuss, I guess I was about to say “themes” again. Even I have to get my head around that really what we are talking about, or what I’m talking about is not themes, Code Pack is really cool. That’s what Solspace calls their kind of installer for their add-ons. I like Code Pack. That’s pretty cool. We need to change our definition and our terminology of what these themes are. I don’t think anyone has put up a decent enough solution yet to change the way people discuss those things. Lea Alcantara: All right. Well, thanks, Leevi, for joining us. I think that’s all the time we have for today. Emily Lewis: In case our listeners want to follow up with you, where they can find you online, Leevi? Leevi Graham: Okay, so there are probably a couple of spots. You can find me on Twitter, which is @leevigraham. You can contact me at [email protected] or if you want to see any of our third party add-ons or at the site, have a look at the Site Generator, you can look at that on ee-garage.com. Emily Lewis: Great. Thank you again. Leevi Graham: No worries, guys. Great talking to you. [Music] Emily Lewis: You too. Lea Alcantara: Now, we would like to thank our sponsors for this podcast, EEHarbor and Pixel & Tonic. Emily Lewis: We would also like to thank our partners, EllisLab, EngineHosting and Devot:ee. Lea Alcantara: Also, thanks to our listeners for tuning in. If you want to know more about the podcast, make sure you follow us on Twitter @eepodcast or visit our website, ee-podcast.com. Emily Lewis: And don’t forget to tune in to our next episode when we are kicking off our new get-to-know EECMS hashtag series with Anna Brown, better known as Media Girl on Twitter. Lea Alcantara: This is Lea Alcantara. Emily Lewis: And Emily Lewis. Lea Alcantara: Signing off for the ExpressionEngine Podcast. See you next time. Emily Lewis: Cheers. [Music stops]Love this Episode? Leave a Review!