[Решено] Модификация функции "Задать вопрос по товару" в VirtueMart 2.0.10

  • 21 Ответов
  • 7258 Просмотров

0 Пользователей и 1 Гость просматривают эту тему.

Здравуствуйте. У меня в магазине все товары имеют похожие названия, поэтому определить о каком товаре задали вопрос сложно. Можно ли как то доработать чтобы в письме приходило не только название товара, но и ссылка на него? Помогите реализировать.
« Последнее редактирование: 20.10.2012, 16:03:04 от ELLE »

Сюда - /components/com_virtuemart/views/askquestion/tmpl (mail_html_question.php) после product_name добавляем
Код
    <p>Код продукта: <?php echo$this->product->product_sku ?> 
          </p>
          <p>Краткое описание товара: <?php echo $this->product->product_s_desc ?>
          </p>
          <p>Ссылка на товар: <a href="<?php echo juri::root()?>/index.php?tmpl=component&option=com_virtuemart&view=productdetails&virtuemart_product_id=<?php echo $this->product->virtuemart_product_id ?>" title="<?php echo$this->product->product_name ?>"><?php echo$this->product->product_name ?></a>
          </p>             
Решение с этого форума https://forum.virtuemart.net/index.php?topic=98468.0
Можете другие варианты рассмотреть

bogdanvolkov, благодарю! Все получилось и работает. Только сохранить файл mail_html_question.php в UTF-8 без BOM, чтобы русские буквы отображались.

*

Arlekina

Подскажите кто-нибудь пожалуйста, а как в форме "Задать вопрос" вывести цену в той валюте, которая на сайте по умолчанию? 
у меня просто валюта по умолчанию гривна, а цены на товары вводятся в евро и долларах и пересчитываются в гривны. я вывожу:
Код
$this->product->product_price
и получаю цену в той валюте в которой вводили, а не в той что на сайте.

upd:
Нужно выводить
Код
$this->product->prices['basePrice']
только не округляется сумма, сколько знаков после запятой есть, столько и выводится
« Последнее редактирование: 12.01.2013, 00:04:03 от Arlekina »

*

lakshmi

Как можно в форме Задать вопрос о товаре поле эмаил сделать не обязательным или вообще убрать?

Доброго времени суток! делаю сайт сама на  VirtueMart 2 (вернее установила шаблон) Посетитель сайта  задал вопрос по товару, нажав в карточке товара кнопку "задать вопрос по товару", мне пришло сообщение с вопросом, но нет обратного адреса( нажимая кнопку ответить я пересылаю ответ сама себе( пробовала добавить надпись телефон, всё получилось, но в письме номер тоже не отображается! как мне связываться тогда с людьми? или может кто скажет, как эту кнопку вообще убрать?

Доброго времени суток! делаю сайт сама на  VirtueMart 2 (вернее установила шаблон) Посетитель сайта  задал вопрос по товару, нажав в карточке товара кнопку "задать вопрос по товару", мне пришло сообщение с вопросом, но нет обратного адреса( нажимая кнопку ответить я пересылаю ответ сама себе( пробовала добавить надпись телефон, всё получилось, но в письме номер тоже не отображается! как мне связываться тогда с людьми? или может кто скажет, как эту кнопку вообще убрать?
Такая же проблема! как решить ? опытные форумчане - помогите!

*

zomby6888

Пользователь который отправляет запрос авторизован? Посмотрел контроллер, если пользователь авторизован то он в любом случае подставляет email пользователя, если нет то он берет emal с формы. Отключить эту функцию в настройках можно.
интернет-блог: http://websiteprog.ru

*

RivalNoX

Спасибо за подсказку файла, в котором находится структура отправляемого письма с вопросом о товаре!

*

vantal

Может кто знает. Как сделать, чтобы в форме задать вопрос по товару выводилось ( и естественно отправлялось на почту) количество товара, выбранное до этого и настраиваемое поле (размер одежды).
очень нужно! Может кто-то подскажет хотя бы ход мыслей...

*

notnik

В форме «задать вопрос о товаре» как убрать проверку заполнения мэйла. За проверку отвечает public function mailAskquestion в файле components/com_virtuemart/controllers/productdetails.php. Но как поправить?
« Последнее редактирование: 01.03.2016, 19:59:25 от notnik »

*

CaHeK_pk

В форме «задать вопрос о товаре» как убрать проверку заполнения мэйла. За проверку отвечает public function mailAskquestion в файле components/com_virtuemart/controllers/productdetails.php. Но как поправить?
в этом файле убираете строки с 175 по 196
Код: php
		$validMail = filter_var (JRequest::getVar ('email'), FILTER_VALIDATE_EMAIL);

if ($commentSize < $min or $commentSize > $max or !$validMail) {
$errmsg = JText::_ ('COM_VIRTUEMART_COMMENT_NOT_VALID_JS');
if ($commentSize < $min) {
$errmsg = JText::_ ('COM_VIRTUEMART_ASKQU_CS_MIN');
;
} else {
if ($commentSize > $max) {
$errmsg = JText::_ ('COM_VIRTUEMART_ASKQU_CS_MAX');
;
} else {
if (!$validMail) {
$errmsg = JText::_ ('COM_VIRTUEMART_ASKQU_INV_MAIL');
;
}
}
}

$this->setRedirect (JRoute::_ ('index.php?option=com_virtuemart&tmpl=component&view=productdetails&task=askquestion&virtuemart_product_id=' . JRequest::getInt ('virtuemart_product_id', 0)), $errmsg);
return;
}
и меняете в строке 217
Код: php
$fromMail = JRequest::getVar ('email');
на
Код: php
$fromMail = '';
---
нумерация строк может быть другая.

*

notnik

Пишет "необходимо заполнить", "неверный формат емэйл", но уже в самом конце-при отправке
, а не при клике на следующем поле.

*

notnik

нумерация строк та же, но минус 97

*

notnik

 в файле components\com_virtuemart\controllers\vendor.php тоже удалил, но видно не все

*

CaHeK_pk

Пишет "необходимо заполнить", "неверный формат емэйл", но уже в самом конце-при отправке
, а не при клике на следующем поле.
странно... вирт  2.6.22 все работает... попробуйте в этом же файле убрать строки
Код: php
		if (empty($user->id)) {
// $fromMail = JRequest::getVar ('email'); //is sanitized then
$fromName = JRequest::getVar ('name', ''); //is sanitized then
// $fromMail = str_replace (array('\'', '"', ',', '%', '*', '/', '\\', '?', '^', '`', '{', '}', '|', '~'), array(''), $fromMail);
$fromName = str_replace (array('\'', '"', ',', '%', '*', '/', '\\', '?', '^', '`', '{', '}', '|', '~'), array(''), $fromName);
} else {
// $fromMail = $user->email;
$fromName = $user->name;
}
....
$vars['user'] = array('name' => $fromName//, 'email' => $fromMail
);
данные строки я закомментировал уже. они повторяются 2 раза. так-же и с теми что выше.

*

notnik

нет, ничего не меняется. Я так думаю, нужно после всех проверок присвоить переменной значение-например defolt@mail.ru и поле мэйла скрыть, но я не знаю какой переменной это значение присвоить.

*

CaHeK_pk

нет, ничего не меняется. Я так думаю, нужно после всех проверок присвоить переменной значение-например defolt@mail.ru и поле мэйла скрыть, но я не знаю какой переменной это значение присвоить.
если поставить заглушку, то нужно в файле "components\com_virtuemart\views\askquestion\tmpl\form.php" заменить поле ввода e-mail
строка с 80-81
Код: php
							<!-- <td><label><?php // echo JText::_('COM_VIRTUEMART_USER_FORM_EMAIL')  ?> : </label></td>
<td> --> <input type="hidden" class="validate[required,custom[email]]" value="no-mail@me.ru" name="email" id="email" size="30"  validation="required email"/> <!-- </td> -->
надеюсь этот способ не только у меня работает:))
« Последнее редактирование: 06.03.2016, 11:15:50 от CaHeK_pk »

*

notnik

Спасибо! Все работает!  *DRINK*

*

yunira

А как в форме "Задать вопрос по товару" изменить количество символов вопроса (там 50...2000 символов). И настоить е-мейл получателя вопроса?

*

niksem

А как в форме "Задать вопрос по товару" изменить количество символов вопроса (там 50...2000 символов). И настоить е-мейл получателя вопроса?
В настройках VirtueMart есть вкладка внешний вид и там Рекомендовать товар, задать вопросы, в этом поле и есть длинна символов

*

Eholov

Еще, чтоб новое добавленное поле не очищалось если капчу ввести неправильно, надо, чтоб в
components\com_virtuemart\views\askquestion\tmpl\form.php код нового поля
Код
<input type="text" class="validate[required]" value="<?php echo $this->user->новое-поле ? $this->user->новое-поле : $sessData['новое-поле'] ?>" name="новое-поле" id="новое-поле" size="30"  validation="required"/>
был с value такого вида
Код
value="<?php echo $this->user->новое-поле ? $this->user->новое-поле : $sessData['новое-поле'] ?>"
и в components\com_virtuemart\controllers\productdetails.php
в строке
Код
$askquestionform = array('name' => vRequest::getVar ('name'),...
добавить
Код
'новое-поле' => vRequest::getVar ('новое-поле')
Делал на этом сайте http://premiumbus.com.ua/schedule бронирование автобусных билетов через "Задать вопрос по этому товару"