You may pay someone to create your store, or you visit our seminar and become a professional yourself with the silver certification

Main Menu

Ask question form reply to

Started by frandevelop, January 27, 2021, 17:06:50 PM

Previous topic - Next topic


Hi, I have been searching without success how to adjust the virtuemart ask form to adjust the "reply to".

I would like that when an email arrives it is to the email of the person who has asked the question.

I have modified the form to add new fields, but can't find a way to adjust the "reply to".

Virtuemart: 3.8.2 10325
Joomla:      3.9.16


Update your VirtueMart. Current versions have the reply to set properly in the email.
Lowestoft, Suffolk, UK

Retired from forum life November 2023

Please mention your VirtueMart, Joomla and PHP versions when asking a question in this forum


Thank you very much, it actually works. (Current Virtuemart 3.8.7 10378)

However, I have the custom form and now I cannot retrieve the email to display it in the body of the email itself.

Code Form.php:
// Check to ensure this file is included in Joomla!
defined '_JEXEC' ) or die ( 'Restricted access' );
$min VmConfig::get('asks_minimum_comment_length'50);
$max VmConfig::get('asks_maximum_comment_length'2000) ;
$document JFactory::getDocument();
$("#comment").keyup( function () {
var result = $(this).val();
$("#counter").val( result.length );
/* Let's see if we found the product */
if (empty ( $this->product )) {
echo '<br /><br />  ' $this->continue_link_html;
} else {
$session JFactory::getSession();
$askQuestionData $session->get('askquestion'0'vm');
echo $this->login;
if(empty($this->login) or VmConfig::get('recommend_unauth',false)){

<div class="ask-a-question-view">
<h1><?php echo vmText::_('COM_VIRTUEMART_PRODUCT_ASK_QUESTION')  ?></h1>

<div class="product-summary">
<div class="width70 floatleft">
<h2><?php echo $this->product->product_name ?></h2>

<?php // Product Short Description
if (!empty($this->product->product_s_desc)) { ?>

<div class="short-description">
<?php echo $this->product->product_s_desc ?>
<?php // Product Short Description END ?>


<div class="width30 floatleft center">
<?php // Product Image
echo $this->product->images[0]->displayMediaThumb('class="product-image"',false); ?>


<div class="clear"></div>

<div class="form-field">

<form method="post" class="form-validate" action="<?php echo JRoute::_('index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id='.$this->product->virtuemart_product_id.'&virtuemart_category_id='.$this->product->virtuemart_category_id.'&tmpl=component') ; ?>" name="askform" id="askform">

<label><?php echo vmText::_('COM_VIRTUEMART_USER_FORM_NAME')  ?></label>
<input type="text" class="validate[required,minSize[3],maxSize[64]]" value="<?php echo $this->user->name $this->user->name $askQuestionData['name'?>" name="name" id="name" size="30"  validation="required name"/>
<br />
<label><?php echo vmText::_('COM_VIRTUEMART_USER_FORM_EMAIL')  ?></label>
<input type="text" class="validate[required,custom[email]]" value="<?php echo $this->user->email $this->user->email $askQuestionData['email'?>" name="email" id="email" size="30"  validation="required email"/>

<label><?php echo vmText::_('COM_VIRTUEMART_USER_FORM_TELF')  ?></label>
<input type="text" value="<?php echo $this->telf $this->telf $askQuestionData['telf'?>" name="telf" id="telf" size="30"/>
<br />

<label><?php echo vmText::_('COM_VIRTUEMART_USER_FORM_PAIS')  ?></label>
<input type="text" class="validate[required,minSize[3],maxSize[16]]" value="<?php echo $this->pais $this->pais $askQuestionData['pais'?>" name="pais" id="pais" size="30" validation="required pais"/>
<br />

<label><?php echo vmText::_('COM_VIRTUEMART_USER_FORM_CP')  ?></label>
<input type="text" class="validate[required,minSize[3],maxSize[6]]" value="<?php echo $this->cpostal $this->cpostal $askQuestionData['cpostal'?>" name="cpostal" id="cpostal" size="30" validation="required CP"/>
<br />

<?php echo vmText::sprintf('COM_VIRTUEMART_ASK_COMMENT'$min$max); ?>
<br />
<textarea title="<?php echo $ask_comment ?>" class="validate[required,minSize[<?php echo $min ?>],maxSize[<?php echo $max ?>]] field" id="comment" name="comment" rows="8"><?php echo $askQuestionData['comment'?></textarea>

<label><?php echo JText::_('COM_VIRTUEMART_USER_FORM_POLITICADATOS')  ?> : <input type="checkbox" class="validate[required]" value="FALSE>" name="proteccionatos" id="protecciondatos" validation="required accept protection data"/> </label>
<label><?php echo JText::_('COM_VIRTUEMART_USER_FORM_RECIBEMAILS')  ?> : <input type="checkbox" class="validate[required]" value="FALSE>" name="enviaremails" id="enviaremails" validation="required to accept data processing"/> </label>

<div class="submit">
<div class="width50 floatright right paddingtop">
<?php echo vmText::_('COM_VIRTUEMART_ASK_COUNT')  ?>
<input type="text" value="0" size="4" class="counter" id="counter" name="counter" maxlength="4" readonly="readonly" />
<?php // captcha addition
if(VmConfig::get ('ask_captcha')){
$dispatcher JDispatcher::getInstance(); $dispatcher->trigger('onInit','dynamic_recaptcha_1');

<div id="dynamic_recaptcha_1"></div>
// end of captcha addition 

<input class="highlight-button" type="submit" name="submit_ask" title="<?php echo vmText::_('COM_VIRTUEMART_ASK_SUBMIT')  ?>" value="<?php echo vmText::_('COM_VIRTUEMART_ASK_SUBMIT')  ?>" />

<input type="hidden" name="virtuemart_product_id" value="<?php echo JRequest::getInt('virtuemart_product_id',0); ?>" />
<input type="hidden" name="tmpl" value="component" />
<input type="hidden" name="view" value="productdetails" />
<input type="hidden" name="option" value="com_virtuemart" />
<input type="hidden" name="virtuemart_category_id" value="<?php echo JRequest::getInt('virtuemart_category_id'); ?>" />
<input type="hidden" name="task" value="mailAskquestion" />
<?php echo JHTML::_'form.token' ); ?>




Code mail_html_question.php

('_JEXEC') or die('');

<style type="text/css">
body, td, span, p, th { font-size: 12px; font-family: arial, helvetica, sans-serif; }
table, tr, td { border: 0; background:#fff;}
table.html-email {margin:10px auto;background:#fff; #dad8d8 1px;}
h2 { font-size: 1.6em; font-weight: normal; margin: 0px; padding: 0px; }
img {border: none;}
a {text-decoration: none; color: #000;}
a.product-details, a.product-details:visited {
border: solid #CAC9C9 1px;
border-radius: 4px;
-webkit-border-radius: 4px;
-moz-border-radius: 4px;
color: #555;
text-decoration: none;
padding: 3px 8px 2px 8px;
a.product-details:hover {color:#888;background: #f8f8f8;};

<body style="background: #F2F2F2;word-wrap: break-word;">
<div width="100%">
<table style="margin: auto; width: 600px; border: solid #dad8d8 1px" cellpadding="0" cellspacing="0"  >
<td valign="top" align="center" style="padding: 15px 25px;">

<table  border="0" cellpadding="0" cellspacing="0" class="html-email" width="100%">

<td align="left" style="border-bottom : 1px solid #dad8d8;">
<span style="font-size: 14px; font-weight: bold">Consulta web de un producto  </span><br/>
<br /> <?php echo 'Nombre: ' $this->user->name ?>
<br /> <?php echo 'PaĆ­s: ' $this->pais?>
<br /> <?php echo 'CP: ' $this->cpostal?>
<br /> <?php echo 'Telf: ' $this->telf?>
<br /> <?php echo 'eMail: ' $this->user->email?>

<br /><br /><?php echo $this->comment?><br /><br />


<td align="center" style="border-bottom : 1px solid #dad8d8; padding: 15px;">
<table width="100%" cellpadding="0" cellspacing="0">
$menuItemID shopFunctionsF::getMenuItemId(vmLanguage::getLanguage()->getTag());
$product_link JURI::root().'index.php?option=com_virtuemart&view=productdetails&virtuemart_product_id=' $this->product->virtuemart_product_id '&Itemid=' $menuItemID;

<td width="25%" align="center">
<a href="<?php  echo $product_link ?>">
<?php echo $this->product->images[0]->displayMediaThumb('',false,'',true,false,true); ?>
<td width="70%" valign="top">
<?php  echo $this->product->product_name ?>
<?php if ($this->product->product_sku) echo ' ('.vmText::_('COM_VIRTUEMART_PRODUCT_SKU').' '.$this->product->product_sku .')' ?>
<p style="margin: 25px 0; display:block;"><?php  echo $this->product->product_s_desc ?></p>
<a href="<?php  echo $product_link ?>" class="product-details"><?php echo vmText::_('COM_VIRTUEMART_PRODUCT_DETAILS') ; ?></a>



And Code view.html.php


('_JEXEC') or die('Restricted access');

 * Product details
 * @package VirtueMart
 * @author Max Milbers
class VirtueMartViewAskquestion extends VmView {

 * Collect all data to show on the template
 * @author Max Milbers
function display ($tpl NULL) {

$app JFactory::getApplication();
if(!VmConfig::get('ask_question',false) and !VmConfig::get('askprice',false)){
$app->redirect(JRoute::_('index.php?option=com_virtuemart','Disabled function'));

$this->login '';
$user JFactory::getUser();
$this->login shopFunctionsF::getLoginForm(false);

$this->show_prices = (int)VmConfig::get ('show_prices'1);

$document JFactory::getDocument ();

$mainframe JFactory::getApplication ();
$pathway $mainframe->getPathway ();
$task vRequest::getCmd ('task');

// Load the product
$product_model VmModel::getModel ('product');
$category_model VmModel::getModel ('Category');

$virtuemart_product_idArray vRequest::getInt ('virtuemart_product_id'0);
if (is_array ($virtuemart_product_idArray)) {
$virtuemart_product_id $virtuemart_product_idArray[0];
} else {
$virtuemart_product_id $virtuemart_product_idArray;

if (empty($virtuemart_product_id)) {
self::showLastCategory ($tpl);

$product $product_model->getProduct ($virtuemart_product_id);

// Set Canonic link
$format vRequest::getCmd('format''html');
if ($format == 'html') {
$document->addHeadLink (JUri::getInstance()->toString(array('scheme''host''port')).JRoute::_($product->canonicalFALSE), 'canonical''rel''');

// Set the titles
$document->setTitle (vmText::sprintf ('COM_VIRTUEMART_PRODUCT_DETAILS_TITLE'$product->product_name ' - ' vmText::('COM_VIRTUEMART_PRODUCT_ASK_QUESTION')));

$this->assignRef ('product'$product);

if (empty($product)) {
self::showLastCategory ($tpl);

$product_model->addImages ($product1);

// Get the category ID
$virtuemart_category_id vRequest::getInt ('virtuemart_category_id');
if ($virtuemart_category_id == && !empty($product)) {
if (array_key_exists ('0'$product->categories)) {
$virtuemart_category_id $product->categories[0];

shopFunctionsF::setLastVisitedCategoryId ($virtuemart_category_id);

if ($category_model) {
$category $category_model->getCategory ($virtuemart_category_id);
$this->assignRef ('category'$category);
$pathway->addItem (vmText::_($category->category_name), JRoute::('index.php?option=com_virtuemart&view=category&virtuemart_category_id=' $virtuemart_category_idFALSE));

$pathway->addItem ($product->product_nameJRoute::('index.php?option=com_virtuemart&view=productdetails&virtuemart_category_id=' $virtuemart_category_id '&virtuemart_product_id=' $product->virtuemart_product_idFALSE));

// for askquestion
$pathway->addItem (vmText::('COM_VIRTUEMART_PRODUCT_ASK_QUESTION'));

$this->user JFactory::getUser ();

if ($product->metadesc) {
$document->setDescription ($product->metadesc);
if ($product->metakey) {
$document->setMetaData ('keywords'$product->metakey);

//We never want that ask a question is indexed
$document->setMetaData('robots','NOINDEX, NOFOLLOW, NOARCHIVE, NOSNIPPET');

if ($mainframe->getCfg ('MetaTitle') == '1') {
$document->setMetaData ('title'$product->product_s_desc); //Maybe better product_name
if ($mainframe->getCfg ('MetaAuthor') == '1') {
$document->setMetaData ('author'$product->metaauthor);

$this->captcha shopFunctionsF::renderCaptcha('ask_captcha');

parent::display ($tpl);

function renderMailLayout () {

$this->setLayout ('mail_html_question');
$this->comment vRequest::getString ('comment');
$this->telf vRequest :: getString ('telf');
$this->pais vRequest :: getString ('pais');
$this->cpostal vRequest :: getString ('cpostal');

$this->user JFactory::getUser ();
if (empty($this->user->id)) {
$fromMail vRequest::getEmail ('email'); //is sanitized then
$fromName vRequest::getVar ('name'''); //is sanitized then
//$fromMail = str_replace (array('\'', '"', ',', '%', '*', '/', '\\', '?', '^', '`', '{', '}', '|', '~'), array(''), $fromMail);
$fromName str_replace (array('\'''"'',''%''*''/''\\''?''^''`''{''}''|''~'), array(''), $fromName);
$this->user->email $fromMail;
$this->user->name $fromName;

$virtuemart_product_id vRequest::getInt ('virtuemart_product_id'0);

$productModel VmModel::getModel ('product');
$this->product =  $productModel->getProduct ($virtuemart_product_id);

$this->subject vmText::('COM_VIRTUEMART_QUESTION_ABOUT') . $this->product->product_name;

$vendorModel VmModel::getModel ('vendor');

$this->vendor $vendorModel->getVendor ($this->product->virtuemart_vendor_id);
//$this->vendor->vendor_store_name = $fromName;

$vendorModel->addImages ($this->vendor);

$this->vendorEmail $vendorModel->getVendorEmail($this->vendor->virtuemart_vendor_id);

// in this particular case, overwrite the value for fix the recipient name
$this->vendor->vendor_name $this->user->get('name');

if (VmConfig::get ('order_mail_html')) {
$tpl 'mail_html_question';
} else {
$tpl 'mail_raw_question';
$this->setLayout ($tpl);
$this->isMail true;
parent::display ();

public function showLastCategory ($tpl) {
parent::display ($tpl);


// pure php no closing tag

I have tried several things without success, it seems that there is some problem sending the variable with $this->user->email;

It only works if I delete the email variable in mail_html_question.php, it must be giving an error but I can't see it.

Can you help me? thanks.


Hi, I found the solution, apparently the virtuemart version was not correctly updated to 3.8.7, this seems to be a problem of 3.8.6, now it works correctly.


We are on VM3.8.8 & VM3.8.9 now.  3.8.7 was a test/development version.
Lowestoft, Suffolk, UK

Retired from forum life November 2023

Please mention your VirtueMart, Joomla and PHP versions when asking a question in this forum