Joomla Contact Form Redirection
Sunday, 27 September 2009 12:53   


After searching for it on joomla forum I could not find one all inclusive guide to redirecting the default submit contact form in Joomla 1.5. If you were wondering how to get the default contact form in Joomla 1.5 to redirect you to another page after you submit it, or if you wanted to change the default text that is displayed "Thank you for your e-mail" to something else I will explain how in this guide. I cannot be 100% sure this guide will work for people who have certain extensions installed or who have SEO turned on as i have not tried it.

Step One:

First if you don't already have a page that you want to redirect to, you will create one within the Joomla 1.5 admin interface and make sure it is published. I have tried the method below with both an article and a contact page, but it should work for most other page redirects as well.

Step Two:

Next if you don't already know the URL of the page you want to redirect to, you will create a menu item in the Joomla 1.5 admin interface that points specifically to the redirect page you created in step one and make sure it is published. Now when you visit your page in the frontend you will see the menu item for the page you created. Click on that link to view your page. We are doing this because you need to find out the exact URL of the page you created. Make sure to copy the URL as we will need some of it in step 3. After you copy the URL you may un-publish your menu item that links to the redirect page in the admin interface, but make sure you leave the redirect page published.

Step Three:

To finish and make it all work requires editing of a single file in the Joomla installation. If you update or reinstall Joomla you will possibly lose this modification and have to apply it again.

The file that you will be editing is /components/com_contact/controller.php

Near lines 193-195 locate:

$msg = JText::_( 'Thank you for your e-mail');
$link = JRoute::_('index.php?option=com_contact&view=contact&id='.$contact->slug.'&catid='.$contact->catslug, false);
$this->setRedirect($link, $msg);

If you only want to change the text displayed when the contact form is submitted you edit the "Thank you for your e-mail" text below making sure to keep the single quote marks ' before and after.

$msg = JText::_( 'Thank you for your emaill');

If you want to change the entire page to redirect to the page you created and you don't want the additional "Thank you for your email" text to appear then you should replace this:

Code:

$msg = JText::_( 'Thank you for your e-mail');
$link = JRoute::_('index.php?option=com_contact&view=contact&id='.$contact->slug.'&catid='.$contact->catslug, false);
$this->setRedirect($link, $msg);

with this:

Code:

$link = JRoute::_('paste the URL you copied in Step Two here and keep the single quotes before and after');
$this->setRedirect($link);

Make sure you paste the URL from step two starting with the first index.php you see until the end so that your final code looks similar to this example:

Code:

$link = JRoute::_('index.php?option=com_content&view=article&id=53&Itemid=64');
$this->setRedirect($link);