Joomla! България
Joomla! - Общи теми => Компоненти => VirtueMart => Темата е започната от: ex3mist в 12 Декември, 2015, 21:34:39
-
Здравейте,
Нещо се прецака във формата за регистрация на VM. Като попълня всички полета и натисна Register ми дава следното съобщение: "Save failed with the following error: Please enter your name.". Всички задължителни полета са попълнени уж, но...
Не мога да разбера аз ли направих нещо или какво. Може да е в следствие на последния ъпдейт, който правих преди около седмица, но не съм сигурен. Някой може ли да даде идея какво може да е? Нещо да проверя? Някакви омазани настройки?
-
Успях да установя, че грешката е в резултат на това, че полето "Displayed Name" не е попълнено. Проблемът е, че също не е публикувано, не е задължително и т.н., всичките му настройки са на "No". Така искам и да си остане - да не се показва.
Опитах и да закоментирам кода, който проверява дали това поле е попълнено в /libraries/joomla/table/user.php, а именно:
if ($filterInput->clean($this->name, 'TRIM') == '')
{
$this->setError(JText::_('JLIB_DATABASE_ERROR_PLEASE_ENTER_YOUR_NAME'));
return false;
}
Но и това не решава проблема - дава бял екран като натиснеш Register. Явно не може без този код.
Някаква идея как да се отърва от това поле?
-
Намерих решение, което за сега работи нормално. Поствам го в случай, че и някой друг се интересува:
Редактира се файлът edit_address_userfields.php, като разбира се най-добре е да го копирате в папката на съответния темплейт, който ползвате: ../templates/[yourtemplate]/html/com_virtuemart/user
Заменяте следния код (около ред 71):
<tr title="<?php echo strip_tags($descr) ?>">
<td class="key" >
<label class="<?php echo $field['name'] ?>" for="<?php echo $field['name'] ?>_field">
<?php echo $field['title'] . ($field['required'] ? ' *' : '') ?>
</label>
</td>
<td>
<?php echo $field['formcode'] ?>
</td>
</tr>
с този:
<tr title="<?php echo strip_tags($descr) ?>" <?php if ($field['name']=="name") {echo 'style=display:none;';};?> >
<td class="key" >
<label class="<?php echo $field['name'] ?>" for="<?php echo $field['name'] ?>_field">
<?php echo $field['title'] . ($field['required'] ? ' *' : '') ?>
</label>
</td>
<td>
<?php echo $field['formcode'] ?>
</td>
</tr>
И накрая на файла добавяте това:
<script type="text/javascript">
var $j = jQuery.noConflict(); //avoid conflict with other libraries
$j('#username_field').change(function () {
var reg_user = $j('#username_field').val(); //set username value inside variable
$j('#name_field').val(reg_user); //assign variable value to name
});
</script>
Не съм много в час с програмирането, но по обясненията в официалния VM форум разбрах, че полето "Displayed Name" се попълва автоматично с това, което е въведено в полето "Username" и бива скривано. Разбира се, "Displayed Name" трябва да е активно в админа.
За момента при мен всичко работи нормално с Joomla! 3.4.5 и VirtueMart 3.0.11.4.
Не забравяйте преди това да направите бекъп!