Добавление произвольного поля в форму «Задать вопрос по этому товару» в Virtuemart 2/3

Комментариев: 1

В Virtuemart откровенно говоря, много проблемных мест, и одно такое место — это невозможность управления полями формы «Задать вопрос по этому товару». Точнее такая возможность есть, но для этого нам необходимо внести некоторые изменения в код нашего шаблона, а также, небольшие изменения в ядро Virtuemart.Я приведу пример по добавлению поля «Телефон» в форму вопроса о товаре Virtuemart 3. Начнём!

Копируем файл form.php и mail_html_question.php из components/com_virtuemart/views/askquestion в templates/ваш-шаблон/html/com_virtuemart/askquestion (если таких там ещё нет)

Добавляем необходимый intput в форму:

<div class="form-group">
<label><?php echo JText::_('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"/>
</div>
<div class="form-group"> <!--Добавляем поле с телефоном -->
<label><?php echo JText::_('COM_VIRTUEMART_USER_FORM_PHONE')  ?> : </label>
<input type="text" class="validate[required,minSize[7],maxSize[64]]" value="<?php echo $this->phone ?>" name="phone" id="phone" size="30"  validation="required phone"/>
</div>
<div class="form-group">
<label><?php echo JText::_('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"/>
</div>

Далее в файле mail_html_question.php, который отвечает за формирование письма, которое получает администратор, указываем в нужном месте:

<?php echo $this->phone ?>

Лично я вставил так:

<td align="center" style="border-bottom : 1px solid #dad8d8;">
<span style="font-size: 14px; font-weight: bold"><?php echo vmText::sprintf('Запрос цены,', $this->user->name, $this->user->email); ?></span>
<br /><br /><?php echo $this->comment; ?><br /><br />
<span class="phone-question">Телефон: <strong><?php echo $this->phone ?></strong></div>
</td>

На третей версии Virtuemart (я думаю на второй тоже), пришлось дописать строчку в файл /components/com_virtuemart/views/askquestion/view.html.php

Примерно: 165 строка, сразу после: $this->user->name = $fromName;

$this->phone = JRequest::getString ('phone');

Подготовлено по материалам: http://forum.virtuemart.net/index.php?topic=104562.0

Уведомлять о новых комментариях
Уведомлять
guest
1 Комментарий
Inline Feedbacks
View all comments
noangel
noangel
3 лет назад

еще вариант могу предложить очень похож на ваш добавление поля телефон значит в файле components/com_virtuemart/views/askquestion/tmpl/form.php
вставляем такой код

:
<input style="border:1px solid #ccc;" type="text" class="validate[required,minSize[3],maxSize[64]]" value="user->phone ? $this->user->name : $sessData[‘phone’] ?>” name=”phone” id=”phone” size=”30″ validation=”required phone”/>

потом в файле
components/com_virtuemart/views/askquestion/tmpl/mail_html_question.php
до или после комментария добавим
phone; ?>

Это, примерно, 54 строка.
так же в файле components/com_virtuemart/views/askquestion/view.html.php
Примерно, 165 строка.
$this->phone = vRequest::getString (‘phone’);
должно работать тоже