In this chapter we update the theme sources of an Adobe Experience Manager Site to apply brand specific styles. We learn how to use a proxy server to view a preview of CSS and Javascript updates as we code against the live site. This tutorial will also cover how to deploy theme updates to an AEM Site using Adobe Cloud Manager’s Front End Pipeline.
In the end our site is updated to include styles to match the WKND brand.
Next, make changes to the theme sources so that the site matches the look and feel of the WKND Brand.
Let’s look at how we can update the site with brand-specific styles. Now, our site came with some pre-defined styles as part of the wireframe template. In this video, we’ll look at how we can update those theming sources, and code against the live AEM environment.
In order to code against the live AEM and author environment, we need to create a local user for authentication. This should only be done on development environments, and should be avoided in production. From the AEM start screen, I’ll navigate to tools, security, users.
This is the user management screen. From here, we can create a local user. Again, this local user is just for development purposes. In production, only IMS authentication via an Adobe ID should be used.
For ID, I’ll name it dev-author, and then I’ll set it a password.
Next, assign the local user to the authors group. So, they’ll have permission to log in, view, and edit pages.
Then save and close the changes to the new user.
Next, let’s look at how we can begin to modify the theme sources for our site.
So first, I’ll start by navigating to the site’s console.
Next, I’ll select the WKND site.
And in the left rail, I’ll select site. Here, we’re presented with an option to download the theme sources. And by downloading the theme sources, we can begin to customize the site, using just front-end code. I’ll download the theme sources, which is a zip file, to my local file system. And unzipping the file, we can see the contents. Now, this is a traditional front-end project, built using Webpack. Let’s go ahead and open it up in Visual Studio Code. This is the editor IDE of choice, but you can use, really, any IDE.
And when you open up the read me for the project, you can see information about the project, as well as build and usage instructions. Now, the source folder contains all of the front-end code used to style and script the site. The project is based on Webpack, and it makes use of various NPM libraries to compile the front-end code.
Let’s go ahead and install the project using the command line. First, I’ll verify that I have NPM installed and available from the command line. Version six or seven will work. Then I’ll go ahead and install the project using the command, NPM install. Based on the dependencies listed in the package.JSON file, various libraries will be installed.
.ENV is an environment variable file. Next, we need to update the .ENV file with the information about our AEM environment, so that we can connect to it.
I’ll go ahead and open up the .ENV file. And there are three variables that need to be updated. AEM URL points to your AEM cloud environment. AEM site points to the root of the website. AEM proxy port is the port used by our local proxy server. Now, if you’ve downloaded theme sources directly from your environment, these should be pre-populated. Okay, so that looks good.
Next, we’ll start a proxy server that’s going to proxy the HTML content from AEM. In the read me, you can find the instructions. And the command is, NPM run live.
This will open up a new browser window, running on port 7,000. And if that port’s already in use, it will use the next available port.
Next, we’ll use the local user account created earlier to log in to the AEM environment. We need to use a local user account when connecting via the proxy. So my user was dev author, and I’ll enter the password.
Notice that we’re now logged into the AEM environment as dev author. Next, let’s go ahead and navigate to the magazine article we created earlier. So, under magazine, I’ll open up “The Ultimate Guide to LA Skate Parks.” Observe that when we open the window, we see the browser sync message. Browser sync is one of the pieces that enables a live reload of the page when we make changes.
To review, we have all of the structural elements of our page in place. We’ve got a two-column layout, and we’ve configured a majority of the components needed to populate the magazine article. However, it still does not have the WKND branding. Next, I’m going to view the page outside of the AEM editor environment by clicking page property menu, and view as published. By viewing it as published, we’re simulating what the page will look like on the publish environment. It’s also a lot easier to debug any CSS or JavaScript rules without the AEM editor interfering.
I’ll return to VS Code, and rearrange these windows a bit, so we can see both the page and our editor. The theme sources project uses SAS as a pre-processor for the compiled CSS. One of the advantages of SAS is that we can set variables, and use them throughout different files in the project.
Let’s start by making some changes to our variables file, so that we can see these changes reflected in the browser. I’ll update the background to be this hot pink color. Notice that when I save the changes, the terminal is recompiling the code. And then the browser is automatically reloaded with the updated styles. So this is pretty ugly, and not the brand colors we are looking for. However, we can see that the live coding set up is working.
Let’s revert that change, and then start making some updates to the styles to match the WKND brand.
So, to start, let’s update the layout of this main container, in the body, beneath the header and above the footer. Using my browser’s development tools, I’m going to inspect the div for the main body of the magazine article page.
If you recall from the previous chapter, we set the policy for this main container to include a CSS class named main. And here we can see that this CSS class has been added to the container. Next, let’s update a CSS rule that targets the main container class.
And under components, container, you can see a few different files for styling the container. There’s a file for container main. We’ll go ahead and open up that file, and we can see that we already have a rule populated. I’ll update this rule, so that the main container has a max width of 873., and I’ll also set the margin to zero space auto, which will center the div. I’ll save those changes, and return to the browser.
Once the CSS changes are compiled and synced, we can now see that our rule has been applied, and that the main container now has a fixed width.
Let’s make another update. In our mock-ups, the footer has a black background with white text. Once again, I’ll use the developer tools to inspect the markup. The experience fragment used for the footer has an HTML ID attribute set. And it is set to main-footer. And you can configure this ID attribute for any component in AEM, but it’s a good idea to use this sparingly. Since we know that the experience fragment footer will only be used once on a page, this is a good use case. Now, I’ll open up my experience fragment_footer.SCSS file, and you can see here, we’ve got a rule to target this ID of main-footer.
Now, in our mock-ups, the footer was dark, and was really the inverse of the rest of the page text. So, we’ll set the background color to color-foreground, so that we get the inverse effect. And then we’ll set the color to color-background. So we’ll get a dark background with light text.
Go ahead and save those changes. And then if we return to the browser, you can see, we’ve got the start of our styled footer.
So, as a front-end developer, you’re basically repeating these steps until you have styled the different core components and containers to match your brand’s mock-ups. Now, at some point, you might run across an element in your mock-ups that is unique and requires an additional CSS class. One of the great things about coding against the live environment is that you can make changes to the template and various policies to introduce additional CSS classes as needed. To complete the WKND styles, I’m going to take a shortcut. Below this video, you’ll find a zip file that you can download with the finished source files for the WKND site, named weekend-theme-source.zip. I’ll go ahead and unzip this, and then I’ll replace the source file that was in my theme sources project.
I’ll reopen VS Code, and I can see that the variables file has been updated. And under components, you can inspect the different files to see the different changes. I’ll go ahead and restart the proxy server by running NPM run live.
And when I return to the browser and view the skate park magazine article, I can see the final styles have been applied. So, this looks much closer to the WKND mock-ups, and that original wireframe theme has pretty much disappeared. So, this looks great! Note, to see the full changes, you may need to restart your browser, and possibly clear out your cache. In VS Code, feel free to inspect the changes. You’ll notice that some icons to support the WKND site have been added. We’ve also replaced some of the fonts in favor of web fonts, and we’ve updated the styles for individual components.
Now, currently, these changes are only visible using our local proxy server. Next, we will look at how to apply these updates to the actual AEM environment. -