How to add Inquiry Form to listing detail pages

From JReviews Documentation
Jump to: navigation, search

Adding the inquiry form to detail pages

Inquiry button can be enabled in JReviews configuration:


The button will show up in listing info:


When someone clicks the button, the inquiry form will show up:


If you want to modify the layout of the Inquiry Form, modify this theme file:

  • \com_jreviews\jreviews\views\themes\default\inquiries\create.thtml

The setting that determines who receives the inquiry e-mail is available in JReviews Cofiguration - Listings tab

Embedding the inquiry form directly to the page

To embed the inquiry form directly on the page instead of using the button and a popup, you must choose the 'embed' option for inquiries in the configuration settings and insert the code below into the /listings/detail.thtml theme file where you want to show the form:

<?php echo $this->element("inquiry_widget");?>

If you allow guests to submit listings and have set the recipient of inquiries as the listing owner, then you need to add a conditional so the form doesn't show for listings submitted by guests:

<?php if ($listing['User']['user_id'] > 0):?>
   <?php echo $this->element("inquiry_widget");?>
<?php endif;?>

Important considerations when embedding the form

Disable the email cloaking plugin in Joomla or make sure it runs before the JReviews plugin. The recipient email is never divulged on the page, but when auto-populating the logged in user's email in the form this can cause problems.


Update the Inquiry setting and make sure it's enabled, or enabled for "embed" only if you also want to disable the button.


Guest listing submissions and inquiries

If you allow guests to submit listings without registering and you select the email to listing owner option, inquiries will not be sent out for listings submitted by guest users.

This is because guests are not listing owners and cannot even edit their own listing. Only registered users are considered listing owners.

If you wanted to allow inquiries for guests, you could use a custom email field for this purpose.

How to add more input fields to the form

Adding a phone number text field

Open the theme file:


  • /components/com_jreviews/jreviews/views/themes/default/inquiries/create.thtml


  • /wp-content/plugins/jreviews/jreviews/views/themes/default/inquiries/create.thtml

and replicate the code of one of the other fields.

For example, to add a Phone number field, add this code:

<div class="jrFieldDiv">
	<label for="jr-inquiry-phone"><?php __t("Your phone number");?>:<span class="jrIconRequired"></span>
	&nbsp;<span class="jr-validation-input jrValidation jrHidden"><?php __t("Please enter your phone number.");?></span>
	<?php echo $Form->text('data[Inquiry][phone]',array('id'=>'jr-inquiry-phone','class'=>'jrText','size'=>50,'maxlength'=>100));?>

The form will now look like this:


Adding a checkbox to the inquiry form

Example code for the theme file:

<div class="jrFieldDiv">
    <label for="checkboxExample"><?php __t("Checkbox Example");?>:</label>
    <?php echo $Form->checkbox('data[Inquiry][checkbox_example]',array('one'=>'One','two'=>'Two','three'=>'Three'),array('id'=>'jr-inquiry-checkbox_example'));?>

Adding a select list to the inquiry form

Example code for the theme file:

<div class="jrFieldDiv">
    <label for="selectExample"><?php __t("Select Example");?>:</label>
    <?php echo $Form->select('data[Inquiry][select_example]',array('one'=>'One','two'=>'Two','three'=>'Three'),''/* pre-selected val */,array('id'=>'jr-inquiry-select_example'));?>

Adding a date field to the inquiry form

Example code for the theme file:

<div class="jrFieldDiv">
    <label for="dateExample"><?php __t("Date Example");?>:</label>
    <?php echo $Form->text('data[Inquiry][date_example]',array('id'=>'jr-inquiry-date_example','class'=>'jrDate jr-date','size'=>50));?>

Making new form fields required

When adding new fields to the inquiry form, you can also make them required. To do this, you must modify the inquiry controller file:


  • /components/com_jreviews/jreviews/controllers/inquiry_controller.php


  • /wp-content/plugins/jreviews/jreviews/controllers/inquiry_controller.php

If your new field is required, add it into the required fields array. For example, if the input attribute is data[Inquiry][phone] then you will add the phone value to the required fields array as shown below:

// Required fields
$inputs  = array('from_name','from_email','message','phone');

Including the contents of new fields in the inquiry email

To include new fields in the inquiry email they need to be added to the email theme file.


  • /components/com_jreviews/jreviews/views/themes/default/email_templates/inquiry.thtml


  • /wp-content/plugins/jreviews/jreviews/views/themes/default/email_templates/inquiry.thtml

First you should get the contents of the field:

$phone = Sanitize::getString($this->data['Inquiry'],'phone');

And then, inside the body of the email you can write a condition to only include the information if the value is not empty:

<?php if ($phone):?>
<p>Phone number:  <?php echo $phone;?></p>
<?php endif;?>

When using checkbox fields, the code is a little different because the data is passed to the server as an array. So you would use this code to get the contents of the field:

$checkbox = implode(' * ',Sanitize::getVar($this->data['Inquiry'],'checkbox',array()));
</source lang="php">
And the code to add it to the email body would look the same as before:
<source lang="php">
<?php if ($checkbox):?>
<p>Checkbox:  <?php echo $checkbox;?></p>
<?php endif;?>

Keeping your changes after upgrades

The best way to ensure you don't lose your customizations for the inquiry form after an update is to use JReviews Code Overrides.