In this post I'll be addressing a question we hear quite a bit with Integrator 3: How do I assign a module from Joomla to a page or set of pages in WHMCS?
Before beginning, we must first understand the way Integrator 3 wraps your WHMCS application with Joomla. When a user lands on your WHMCS page, the Integrator 3 module for WHMCS is called upon and asked to retrieve from the Integrator 3 application the appropriate page wrapping. WHMCS doesn't know specifically which page, but it does know a little information to send along:
- The Visual ID: This is found in the URL as a _v variable and indicates which visual connection in WHMCS we should get. You will see the _v variable if you are on the Joomla site and click an Integrator 3 Menu Item link to take you to WHMCS. There the _v is set to indicate which connection you just came from and that is stored in the session for future use.
- The filename: The I3 module knows it is on say the clientarea page asking for user details or viewing invoices. These are considered separate pages.
With that information, the I3 module calls up the I3 application you have installed on your site. The I3 application knows to get the visual connection (Joomla) based on the _v variable it has received and knows what location (filename) is requesting the visual wrapping. This is where Page Mapping happens.
Page Mapping is the concept of taking a request for a page on one connection and routing the correct visual page back to the user.
Without Page Mapping, the I3 application would just serve the same visual wrapping back for each request. This would be similar to what J!WHMCS Integrator does, where only one visual wrap is retrieved from Joomla to wrap around all pages.
To setup Page Mapping with Integrator 3 you will need to perform the following steps:
- In your Joomla Administrator area, go to the Menu Manager and select the menu you want to add a menu item to. Click New for new menu item.
- When prompted select `Link to External Integrated Page` under the Integrator 3 component.
- Next under `Menu Parameters` select the WHMCS connection and the page you want to send your users to when they click on the link.
- For now keep the menu item Public - don't use Registered or Special as a non-logged in user will result in the page not being returned should they land on that page in WHMCS.
- Save the menu item.
- Integrator 3 Application
- Log into the I3 admin interface
- Click on Rendering and then click on Page Mapping.
- On the screen that follows you should see tabs on the left side corresponding to your Integrator 3 application and your WHMCS application. Select the WHMCS application.
- On the WHMCS application tab you will see a column on the left side that corresponds to your WHMCS pages and next to each page a dropdown of menu items from Joomla. Find the WHMCS page you selected in step Joomla.3 above and find the menu item you created in that step in the corresponding drop down field and select it.
- Hit Save.
Now you can test the page mapping by going to your Joomla site and finding the new menu item you just created. Click on that link and when you land on WHMCS you should see that same menu item highlighted as active. If so, you have successfully mapped your WHMCS page to a Joomla menu item!
This allows you to add modules to the menu item in Joomla and have it rendered and appear on WHMCS for that page, permitting targetted information to be displayed to your users. In addition, since I3 passes along the users' log in status you can set modules to be Registered or Special and they will only appear if the user is logged into WHMCS and Joomla. Just keep in mind if you set the menu item itself to Registered or Special, it won't prevent the user from going to your WHMCS page, it only prevents a user with insufficient privileges from retrieving the wrapper to go around that page, resulting in a broken looking page.
That's all there is to Page Mapping with Joomla and WHMCS. The process is similar if you are using Wordpress or Kayako, only the menu item creation changes for Wordpress.