Версия: InstantCMS v1.7
Многие заметили, что во время регистрации сообщения об ошибках регистрации выводятся где то вверху окна, перед самой формой регистрации, что я вам скажу совсем не по феншую. Эти ошибки не видны и не заметны пользователю, он может и не обратить на них внимание и уйти с формы регистрации совсем, что совсем не есть хорошо. По сему нужно указать, где при регистрации непосредственно ошибочки возникают и так, начнем править код.
Для начала лезем в файл компоненты регистрации: /components/registration/frontend.php
В нем правим переменную $msg. Она определена как срока, а мы её сделаем массивом ошибок, с которым мы и будем работать при выводе в файле /templates/мой_шаблон/components/com_registration.tpl
И так открываем файл и со строки 134 после
меняем код до строки 280 там где
Ну вот собственно почву мы и подготовили, а теперь в шаблоне можно как угодно извращаться на тему оформления вывода ошибок.
Я же в шаблоне оформил вывод ошибок после самих полей ввода следующим образом, например для логина:
Для оформления у нас теперь массив ошибок со значениями этих ошибок
{$msg.LOGIN} — логин
{$msg.PASSWORD} — пароль
{$msg.INVITE} — инвайт
{$msg.CAPTCHA} — капча
{$msg.NICKNAME} — ник
{$msg.NAME} — имя
{$msg.EMAIL} — мыло
Для наглядности можно посмотреть, что получилось www.oxuxo.ru/registration
Желаю удачи!
Многие заметили, что во время регистрации сообщения об ошибках регистрации выводятся где то вверху окна, перед самой формой регистрации, что я вам скажу совсем не по феншую. Эти ошибки не видны и не заметны пользователю, он может и не обратить на них внимание и уйти с формы регистрации совсем, что совсем не есть хорошо. По сему нужно указать, где при регистрации непосредственно ошибочки возникают и так, начнем править код.
Для начала лезем в файл компоненты регистрации: /components/registration/frontend.php
В нем правим переменную $msg. Она определена как срока, а мы её сделаем массивом ошибок, с которым мы и будем работать при выводе в файле /templates/мой_шаблон/components/com_registration.tpl
И так открываем файл и со строки 134 после
if ($do=='register'){ $inPage->setTitle($_LANG['REGISTRATION']);
// Проверяем логин и пароль $login = $inCore->request('login', 'str', ''); $pass = $inCore->request('pass', 'str', ''); $pass2 = $inCore->request('pass2', 'str', ''); '; } if ((!preg_match("/^([a-zA-Z0-9])+$/i", $login)) && strlen($login)>=2) {$msg['LOGIN'] = $_LANG['ERR_LOGIN'].' '; } if(!$pass) { $msg['PASSWORD'] = $_LANG['TYPE_PASS'].' '; } if($pass && !$pass2) { $msg['PASSWORD'] = $_LANG['TYPE_PASS_TWICE'].' '; } '; } if($pass && $pass2 && $pass != $pass2) { $msg['PASSWORD'] = $_LANG['WRONG_PASS'].' '; } // Проверяем nickname или имя и фамилию if($cfg['name_mode']=='nickname'){ $nickname = $inCore->request('nickname', 'str', ''); if(!$nickname) { $msg['NICKNAME']= $_LANG['TYPE_NICKNAME'].' '; } } else { $namemsg = ''; $realname1 = $inCore->request('realname1', 'str', ''); $realname2 = $inCore->request('realname2', 'str', ''); if(!$realname1) { $namemsg .= $_LANG['TYPE_NAME'].' '; } if(!$realname2) { $namemsg .= $_LANG['TYPE_SONAME'].' '; } if (!$namemsg){ } else { $msg['NAME']= $namemsg; } } if($model->getBadNickname($nickname)){ $msg['NICKNAME'] = $_LANG['ERR_NICK_EXISTS'].' '; } // Проверяем email $email = $inCore->request('email', 'email'); if(!$email) { $msg['EMAIL'] = $_LANG['ERR_EMAIL'].' '; } // Если есть опция показывать ДР при регистрации, то проверяем if ($cfg['ask_birthdate']){ $birthdate = (int)$_REQUEST['birthdate']['year'].'-'.(int)$_REQUEST['birthdate']['month'].'-'.(int)$_REQUEST['birthdate']['day']; } else { $birthdate = '1980-01-01'; } // Если есть опция показывать icq при регистрации, то проверяем if ($cfg['ask_icq']){ $icq = $inCore->request('icq', 'str', ''); } else { $icq = ''; } // Проверяем каптчу $code = $inCore->request('code', 'str'); if(!$code) { $msg['CAPTCHA']= $_LANG['TYPE_CAPTCHA'].' '; } if ($inCore->checkCaptchaCode($code)){ $sql = "SELECT id, login, email FROM cms_users WHERE (login LIKE '$login' OR email LIKE '$email') AND (is_deleted = 0)"; $result = $inDB->query($sql) ; if($inDB->num_rows($result)==0){ $is_locked = $cfg['act']; $send_pass = $pass; 'login'=>$login, 'nickname'=>$nickname, 'email'=>$email, 'icq'=>$icq, 'birthdate'=>$birthdate, 'is_locked'=>$is_locked ); cmsCore::callEvent('USER_BEFORE_REGISTER', $user_array); if (cmsUser::sessionGet('invite_code')){ $invite_code = cmsUser::sessionGet('invite_code'); $invited_by = (int)$users_model->getInviteOwner($invite_code); if ($invited_by){ $users_model->closeInvite($invite_code); } cmsUser::sessionDel('invite_code'); } else { $invited_by = 0; } $sql = "INSERT INTO cms_users (login, nickname, password, email, icq, regdate, logdate, birthdate, is_locked, invited_by) VALUES ('$login', '$nickname', '$pass', '$email', '$icq', NOW(), NOW(), '$birthdate', '$is_locked', '{$invited_by}')"; $inDB->query($sql) ; $new_user_id = dbLastId('cms_users'); //create advanced user profile if ($new_user_id){ $usr = $inDB->fetch_assoc($result); $sql = "INSERT INTO cms_user_profiles (user_id, city, description, showmail, showbirth, showicq, karma, imageurl, allow_who) VALUES (".$new_user_id.", '', '', '0', '0', '1', '0', '', 'all')"; $inDB->query($sql) ; $user_array['id'] = $new_user_id; cmsCore::callEvent('USER_REGISTER', $user_array); } if ($is_locked){ sendActivationNotice($send_pass, $new_user_id); $inPage->includeTemplateFile('special/regactivate.php'); $inCore->halt(); } else { // Регистрируем событие 'object' => '', 'user_id' => $new_user_id, 'object_url' => '', 'object_id' => $new_user_id, 'target' => '', 'target_url' => '', 'target_id' => 0, 'description' => '' )); $inPage->includeTemplateFile('special/regcomplete.php'); if ($cfg['send_greetmsg']){ $model->sendGreetsMessage($new_user_id, $cfg['greetmsg']); } $inCore->halt(); } } else { $u = $inDB->fetch_assoc($result); if ($login == $u['login']) { $msg['LOGIN'] = $_LANG['LOGIN'].' "'.$login.'" '.$_LANG['IS_BUSY']; } elseif ($email == $u['email']) { $msg['EMAIL'] = $_LANG['EMAIL_IS_BUSY']; } } } else { $msg['CAPTCHA'] = $_LANG['ERR_CAPTCHA']; } } } //======================================================================================================================//
Я же в шаблоне оформил вывод ошибок после самих полей ввода следующим образом, например для логина:
{if $msg.LOGIN}<div class="red">{$msg.LOGIN}</div>{/if}
{$msg.LOGIN} — логин
{$msg.PASSWORD} — пароль
{$msg.INVITE} — инвайт
{$msg.CAPTCHA} — капча
{$msg.NICKNAME} — ник
{$msg.NAME} — имя
{$msg.EMAIL} — мыло
Для наглядности можно посмотреть, что получилось www.oxuxo.ru/registration
Желаю удачи!