Panels has always been my go-to module when it comes to building custom pages in Drupal 7.
Now in Drupal 8 things have changed.
A lot of what Panels did in Drupal 7 has been moved over to Page Manager. Panels itself doesn’t offer a user interface and it is just a variant type in Drupal 8. Also, Page Manager is now its own project, whereas, in Drupal 7 it was part of the Ctools module.
Panels in Drupal 8 integrates with Page Manager and offers a custom variant type which allows you to select different layouts and manage blocks in the layouts. On its own, Panels doesn’t really do anything, you need something like Page Manager to utilize it.
So with that being said, what can Page Manager do?
The module can be used to create arbitrary landing pages such as a homepage or category landing pages. Then Panels can be used to select a layout and add blocks to layout regions.
In this tutorial, we’ll create a homepage which displays a different layout if a user is logged in or not.
UPDATE May 2017: Layout plugin is no longer required from Drupal 8.3 and onwards. Just install Layout Discovery which comes with Drupal core.
Before we can begin, go download the following modules:
Then install Panels and Page Manager UI.
$ drush dl panels ctools page_manager $ drush en panels page_manager_ui
$ drupal module:download panels --latest $ drupal module:download ctools --latest $ drupal module:download page_manager --latest $ drupal module:install panels $ drupal module:install page_manager_ui
Create Custom Homepage
Let’s begin this tutorial by first creating a custom homepage.
1. Go to Structure, Pages and click on “Add page”.
2. Enter Homepage into “Administrative title” and “homepage” into Path.
3. From the “Variant type” drop-down select Panels. This is where Panels integrates with “Page manager”. Leave everything as is and click on Next.
If you can’t see Panels in the drop-down make sure you’ve installed Panels.
4. On the “Configure variant” page, select Standard from Builder and click on Next.
5. On the Layout page, select “Two column” and click on Next.
If you can’t see layouts in the drop-down try rebuilding the site cache.
6. From the Content page, you can select which blocks appear in which region. Just click on Finish and we’ll configure it in the next section.
Now we’ve completed the “Add page” wizard.
Let’s now customize the layout.
7. Click on Content on the left and from here you can add blocks to regions and change the page title.
8. To add blocks, just click on “+ Add new block”, click on “Recent comments”, select “Left side” from Region and click on “Add block”.
9. Again, click on “+ Add new block”, click on “Recent content”, select “Right side” from Region and click on “Add block”.
Finally, enter “Custom homepage” into “Page title”.
10. Scroll to the bottom and click on “Update and save”.
Set Page as Front Page
Once you’ve saved the page, go directly to “/homepage” and you should see the page with the two blocks on each side.
Now let’s set this page as the front page.
1. Go to Configuration, “Basic site settings” and change the “Default front page” to “/homepage”. Don’t forget the forward slash. This is new in Drupal 8.
2. Now if you go to the homepage you should see the new layout with the two columns.
One thing I loved about Panels in Drupal 7 was the ability to create different page variants. In Drupal 8 Page Manager, has taken over this functionality.
So what are variants?
Variants let you configure multiple layouts on a single page and you configure a selection criteria to determine which variant should be displayed.
For example, we’ll configure the homepage to display a different variant depending if the user is logged in or not. The correct variant is displayed based off the configured selection criteria.
Let’s configure the homepage now.
1. Go to Structure, Pages and click Edit on the Homepage row.
We already have a variant called Panels. Let’s change it so it’s only visible to authenticated users (logged in users).
2. Click on General under the Panels variant and change the Label to “authenticated user”. Then click on “Update and save”.
3. Click on “Selection criteria”, select “User Role” and click “Add condition”.
4. Check “Authenticated user” under “When the user has the following roles” and click Save. Again, click on “Update and save”.
5. Click on Content and change the “Page title” to “authenticated user”. We’ll do this so we know for sure that the right variant is selected.
6. Now click on “Update and save”.
At this point, the variant will only be visible for authenticated user. If you access it as an anonymous user you’ll get a “page not found” error.
Now we need to create another variant for anonymous users.
1. Go back into the homepage edit page and click on “Add variant” in the top right.
2. Enter in Default into Label, select Panels from Type and click on Next.
We won’t need to configure any “Selection criteria” because this should be used as the default homepage. When building sites with variants you should have a default variant ordered last which’ll be used if no selection criteria returns true.
3. On the “Configure variant” page, just click on Next.
4. On the Layout page, select “Two column” from the Layout drop-down and click on Next.
5. Leave the Content page as is and click on Finish.
6. Click on Content and add the “Recent comments” and “Recent content” blocks like we did before.
7. Add “Default homepage” into the “Page title” field so we know the right variant is picked up.
Now test the homepage with two browsers: one as an anonymous user and another as an authenticated user.
Order of Variants
The order of the variant is important. Any variant that has no selection criteria will always return true and be displayed. Ones with a selection criteria should be ordered above ones without any.
So in our case, Page Manager will check the selection criteria for the authenticated user variant, if the user viewing it is logged in then it’ll return true and display the variant. If not, it’ll go to the next variant and check its selection criteria and continue until one returns true.
If no variant returns true, then the user will get a “page not found”.
Variants can be reordered by clicking on “Reorder variants” in the top right corner.
As you’ve seen, Page Manager and Panels are great for creating custom pages. The page variant functionality alone is worth installing and using the modules. If this is the first time you’re using either module give yourself a bit of time to get up-to-speed with them. They’re powerful, but if you’ve never used them before they can be a bit complicated.
Q: Can’t see Panels in the drop-down?
Make sure you’ve downloaded and installed Panels.