How to display Joomla modules conditionally using MetaMod

Sometimes, it might be useful for you to be able to display Joomla modules only when certain conditions are met. By default, articles can be published in Joomla for a specific range of dates, but that's the limit to what you can do

MetaMod is an extension that brings that same functionality -- and more -- to modules. It includes other Joomla modules, so it will work transparently with any type of module

As with all extensions we'll be showing you, start by going to extensions.joomla.org. Then, navigate to the Access & Security / Frontend Access Control category and find the MetaMod page

1) Click Download

 

 

You'll be taken to the MetaMod site

 

2) Click download

 

3) Save the file to your computer


4) Now, install the module as you would any other extension

 

For assistance with finding or installing extensions, watch the first two tutorials in this series

 

5) Once the module has been successfully installed, go to Extensions

 

6) Click Module Manager

 

Scroll right

 

7) Click New

 

 

Scroll down

 

8) Click MetaMod

 

 

MetaMod is a pretty versatile extension, with many conditions that can be used to determine whether or not it will display a particular module

 

We'll go over everything briefly. If you ever question the purpose of a setting, consult the detailed documentation that can be found on the extension's website and on each option's hover description

 

For this module, we're going to be recreating our User Menu so that it contains some admin links, too. Ordinarily, the links would show up to all registered users; with MetaMod, we'll be able to allow only admins to see them

 

9) Type a title for this module


10) Set the Access Level to Registered

 

11) Since this module is acting as a main menu module, type _menu here to give the module the curved edges main menus typically have


 

There are two ways to include modules with MetaMod: by using "quick" mode and by manually typing PHP code. Unless explicitly stated, all settings you enter will apply to both quick module includes as well as regular module includes

 

If you want a module to only show up for a certain date range, that can be specified here

 

Scroll down

 

Here, you can choose to whom the quick modules you'll specify below will be displayed


 

You can also allow or disallow people from specific countries or other geographical areas to see the modules

 

This requires that you download and install one of three databases, as described here

 

Scroll down

 

The final condition allows you to display the modules only to people whose preferred language is in the list


 

Scroll down

 

This list is important; it specifes the IDs of all enabled modules. You'll need them when specifying the modules you want to include in the fields that follow


 

With Quick module id include, you can specify a list of modules to include after applying all of the conditions you've entered above. Quick modules will be included before any you manually enter below

 

When listing quick modules, you should separate each ID by a comma

 

Scroll down

 

Here is where you manually enter PHP code to choose which modules to display. All conditions above will apply in addition to any you add here


 

For a list of examples and a list of the PHP variables you can use, scroll down

 

Read over the description and examples carefully


 

Scroll down

 

Here is a list of all the PHP variables that can be accessed in the box above. Their only purpose is to further extend what sort of conditions you can apply


 

Again, the documentation is quite clear, so read over it carefully if you're thinking about using any of these more advanced conditions

Scroll down

 

...the list continues


 

Scroll back up

 

We're going to be including the existing User Menu without any further conditions

 

12) Type its ID here


13) Next, use code similar to the examples below to include any additional modules


 

Note that a return statement will end PHP execution, so it's not possible to have multiple return statements in your code. If you want to specify multiple module IDs, you must do so using a comma separated list or a PHP array

 

In this case, we'll be including the Admin Menu for only Administrators (and Super Administrators)

14) Clear the sample code

 

15) Type the new code


 

The variable $user->usertype is described below

 

Be sure to use double equal signs as shown here and in the examples below

 

| This means "or" in most programming languages. The pipe symbol is used, and can typically be typed by pressing SHIFT and backslash

 

This is the ID for Admin Menu, as listed up here

 

Scroll up

 

16) For this MetaMod module, we'll be changing the style for the included modules to Naked. This will prevent each individual module from displaying its title


 

Scroll up

 

17) Click Save

 

 

The module has been created!

 

Now we need to prevent the included modules from showing up anywhere but inside the MetaMod

 

18) Scroll down and find the old User Menu

 

 

Scroll down

 

19) Under Menu Assignment, click None

 

 

Scroll back up to the top

 

20) Click Save

 

21) Repeat the process with the Admin Menu, then scroll down and find the new User Menu we just made with MetaMod


22) Change the order to bring the module up below the Main Menu


 

Scroll up

 

23) Click the save icon

 

Finally, it's time to check out our new User Menu

 

24) Click Preview

 

 

Scroll down

 

As you can see, the menu doesn't even show up for unregistered users


25) Log in as an administrator

 

The menu looks correct for an admin. Let's verify that a normal Registered user can't see the admin links


 

It worked! We've successfully combined the two menus, allowing only admins to see the admin links


 

This is the end of the tutorial. You now know how to display modules conditionally using MetaMod

  • 0 Users Found This Useful
Was this answer helpful?

Related Articles

How to accept PayPal donations on your Joomla site

This tutorial will show you how to use an extension called Easy Paypal Donation to add a PayPal...

How to add a calendar to your Joomla site using JEvents

Events Calendar, also known as JEvents, is a well-liked calendar extension for Joomla 1) As with...

How to add contact forms to your Joomla site with Rapid Contact

Rapid Contact is a module that allows you to quickly and easily add a contact form to your...

How to add Google Maps to Joomla

There are several extensions that allow you to easily create Google Maps and display them in...

How to add the Agora forum system to your Joomla site

There are several very popular forum solutions available for Joomla. We'll be installing Agora,...