Join Joseph Lowery for an in-depth discussion in this video Changing headers by category, part of Dreamweaver and WordPress: Core Concepts.
In the developing category driven pages lesson you saw how to limit the posts and the content area to a specific category, but what about the other elements of the page like the header, sidebar, and footer? Can those change according to the chosen category as well? Well, the answer is you bet. In this lesson I'll show you two different techniques that work together to create custom headers by category. To illustrate these techniques, what we're going to do is swap out this background image that you see here.
So to start, I'll need to create a new header file that's dedicated to the Conference category. Let's expand the Files panel here in Dreamweaver, and in my roux theme folder I'm going to select header.php, and this time I'm just going to press Command+D which will duplicate the file. With a PC you can use Ctrl+D, and now I'm going to rename header-Copy, and I'll make that header-conference instead.
So let's customize our new header-conference.php file a bit. I'll open it up, close down the Files panel and switch to Code view, and what we're going to do is just add a new class to the header tag. So we have blogHeader and pageHeader so far. Let's add conferenceHeader. Now if we were working with a standard foreground image like the logo, we could just swap that out. But because it's a background image that's applied to this h1 tag here, we'll use CSS instead.
So let's save our page, and now we're going to need to call the new header page, and we want to call that from conference.php. So again, I'll just expand my Files panel for a moment so we can quickly access conference.php and then collapse it. Now you'll notice that the first real PHP directive here is get_header, rather than leave it at the generic get header we're going to specify, and we'll specify conference in single quotes. Notice that we don't specify header-conference.php or something like that, it's just conference.
You only need to put in the keyword and WordPress will do the rest of the work. Okay, we're ready to save this. That's the only change we need to make here. Now let's go to our style.css sheet via our index.php. Make sure that we're going to the Roux style.css sheet, and I'm going to copy blogHeader right here. The rule that's on line 59, paste it right below, and change blog to conference.
Now you may recall when we first copied in the blogHeader we didn't just copy in blo_header01, we copied in blog_header01, 02, and 03. So let's just change the 01 to 02, Save the page, and now I'm going to go to Design view. Again, let's go to view option just to make sure that follow links continuously is still selected. And now if I refresh the page, I am on my Conference page already. I have a new header that's dedicated to the Conference page. So far so good.
Now this is fine and dandy for the General conference page, but let's see what happens when we drill down into a single post. So I'll click on Roux Academy Art Conference, and it switches back to the general header. WordPress is now using a single.php page template. Let's copy that file into our child theme. Again, I'll expand the Files panel, and let's scroll up a little bit and then roll down into Custom where you'll see single.php. I'm going to copy that file, collapse custom, select roux, and paste it right in.
Okay, we'll collapse the Files panel again, and let's open up the file that we just brought in. So here's roux, I'll go to code, and as you can see, it's from the roux theme folder. Unfortunately, we can't just use a single-conference.php file like we did a header-conference.php file. We'll need to create some code to discover which category is applied for a specific post and then serve the appropriate header, and I've got just the code to do that.
Let's go to File > Open, and we'll go to our Desktop where the exercise files are, and here's Chapter 07/07_03, and there you'll see the single_header_code file, open that, and here's our PHP code block. Let me explain a little bit of what's going on with this. There is basically two different areas here. The first going from line 3 to line 7, check to see if there are posts, and if there are, it gets whatever categories that there are assigned to it.
Now this is a pretty robust routine that I developed for a client once, so I decided just to use it rather than strip it down to the bare minimum. This second part of the routine that you see here actually goes through and gets whatever parent category that there is, so it gets the top level category, and we'll use that instead of multiple categories that appear. All right, so the rest of the routine goes through and looks to see what categories are being used. The very uppermost category that's being used that becomes the top parent and then it looks to see if the top parent is conference, get_header ('conference') and otherwise get_header ('archive').
And this last bit of code here wp_reset_query is very important. Because we have looped through the posts, you want to make sure to reset the query so that any other times that you engage in the loop on the page it will work correctly. All right, so all we need to do is to copy our sample code, go to single.php, and I'm just going to replace this one get_header file that you see here. We'll save that code, and now let's head back over to index.php, and we're in the single mode already, so I'll just refresh, and there is my new header.
So it looks like we've got our header rocking to the Conference category, and if you wanted to you could apply the same techniques to the sidebar and footer. It's all up to your design.
- Using the Dynamically-Related Files feature in Dreamweaver to design WordPress pages
- Applying WordPress themes
- Customizing themes
- Adding Spry widgets
- Adding WordPress dynamic data
- Populating the WordPress database
- Publishing a WordPress site
Skill Level Intermediate
Q: While trying to set up a Dreamweaver site, an error occurs that says Dreamweaver cannot resolve the dynamic files because the site definition is incorrect. What is causing this? This is using WAMP on a Windows 7 computer.
A: When setting up the site in Dreamweaver and creating a local testing server, make sure to point it to the folder in c:/wamp/www/ that is being used for the site. If using the same naming convention as shown in the videos, the server folder should be pointing to C:\wamp\www\explore_ca\ and the Web URL field should read http://localhost/explore_ca/, like the picture here:
Q: How do I set the password for WAMP Server 2?
A: The WAMP server does not include a password for MySQL when first installed. You’ll need to add a password by modifying a configuration text file and set up a password in the MySQL server.
Setting a password on the MySQL server:
- From the Start menu, enter CMD to open the command line interface.
- Switch to the bin directory of your MySQL folder, installed by WAMP. For version 5.1.36 of MySQL, for example, enter cd c:\wamp\bin\mysql\mysql5.1.36\bin
Navigate within the WAMP folder installed on your system to find the proper path.
- Enter the following: mysql -u root
- The command line for MySQL will open with a mysql prompt like this: mysql>
- Enter the following:
SET PASSWORD for 'root'@'localhost' = PASSWORD('yourPassword');
- replace 'yourPassword' with the password you want to use.
- Close the CMD window.
After you change the MySQL password you will have to edit the config.inc.php file. Here's how:
- In Windows Explorer, navigate to C:\wamp\apps\phpmyadmin184.108.40.206 (version number may vary).
- Open the file config.inc.php in Dreamweaver or another text editor.
- Locate the following line:
$cfg['Servers'][$i]['password'] = '';
- Enter your password between the quotes; make sure the password is the same as the one you set in the MySQL server.
- Save the file.
- From the system tray icon for WAMP, choose Restart All Services.
- To test, choose phpMyAdmin from the WAMP system tray icon.
Q: After creating a template following the instructions in the Chapter 5 video “Creating a page template in Dreamweaver,” I am unable to select the template. In the video, the instructor’s page shows a heading of Template, with a dropdown menu, but my version shows only a dropdown labeled “Attributes,” and the newly created template does not appear. What is causing this issue?
A: This seems to be a bug in WordPress that occurs occasionally. Although a cause has yet to be determined, a possible workaround to get the Template option to appear is switch themes. Switching to the default theme and then back again to Explore_California should reveal the Template option.
Q: While following along with the instructions in the "Setting up a MySQL password for Windows," I encountered this error: MySQL said: "#1045 – Access denied for user ‘root’@’localhost’ (using password: NO)" What is causing this error?
A: This error occurs when trying to enter the MySQL monitor with a password for a user who has not set a password yet. In that case, removing the “-u root” part should resolve the problem.
Q: While following along to the chapter 2 movie "Using dynamically related files," I get an error message that reads: "Dynamically-related files could not be resolved because the site definition is not correct for this server." What is causing this error?
A: This is a known issue with Dreamweaver, and relates to the permalink settings in the WordPress installation. If the permalink setting is set to something other than the default, like “Month & Name,” for example, Dreamweaver is unable to resolve the dynamic files, and the described error will occur. Changing the permalink setting back to Default will clear the error.
Q: I am bit confused as to my need to use MAMP with a WordPress site in Dreamweaver. If I am going to use a separate commercial hosting site as my server, do I still need to use MAMP in my WordPress site?
A: MAMP is installed to provide an easy-to-use development server capable of handling MySQL and PHP on your local computer. It's also possible to set up MySQL and PHP servers separately, but it requires many more steps and is not as "user-friendly" as the described process. Your hosting server will have MySQL/PHP enabled on their servers for the remote live setup, but that doesn't have anything to do with developing and testing pages on your own computer.
Q: I can't find the file named commevents.php in the exercise files. I need it to set up an online database in the last chapter.
A: This is a file you create yourself when you first connect to a database. Refer to the "Adding WordPress dynamic data to pages" video in Chapter 7. commevents.php should appear in the Connections folder once you establish a connection.
Q: In "Setting up a MySQL password for Windows", I'm getting the error "#1045 - Access denied for user 'root'@'localhost'" when testing the phpMyAdmin.
If I try and re-do the steps, I get the following error "ERROR 1044 (42000): Access denied for user ''@'localhost' to database mysql'" when I try to change the password.
A: This seems to be happening because of the combination of Windows 7 and a
new version of WampServer 2.1. Here's another approach that should work
for the new combination.
Follow these steps instead of the ones using the CMD prompt. (As a bonus, they're much easier!)
- Left-click on the WampServer icon tray.
- Choose phpMyAdmin.
- When the phpMyAdmin page opens in your browser, click the Privileges tab found after the Engines tab.
- Locate the line in the User table with "root - localhost - No..." (probably the last one).
- Click the Edit icon (the final item in the row).
- Scroll down to the Change Password section.
- Select Password and enter your password twice. (If you're following the exercises, enter root).
- Click Go in the lower-right corner.
Q: I want to setup the practice files and site on my localhost, as described; however, I already have my current WordPress site (under development) running on my localhost. How do I run two WordPress sites on my localhost?
A: You can easily do it by setting up another site in Dreamweaver. Just copy the WordPress files to that folder as described and establish a new database via phpMyAdmin. You can set up as many WordPress sites as you need to. The author has upwards of 80 on his system, all for different clients.
Q: This course was updated on 10/23/2012. What changed?
A: The course was thoroughly revised and uses the most current versions of both programs. We added chapters on responsive design and creating a custom administration panel in WordPress, new movies about concepts and taxonomies, and extended the Spry chapter to include jQuery, among other changes. New movies are indicated by the NEW tag next to the movie name.