Доброго времени суток! Просматривал варианты вывода авторизации и регистрации во всплывающее окно и все модули, которые качал шибко мудрёные. Я думал оно как то всё проще делается! Ведь у нас уже есть и контроллер и шаблон - осталось вывести по клику в попап окно. Посмотрел как сделана кнопка корзины - в контроллере хедера прописано PHP: $data['cart'] = $this->load->controller('common/cart'); И в итоге в шаблон выводится всего лишь echo $cart Такое решение мне весьма нравится! Только вот когда я пытаюсь таким же образом подключить в хедере контроллер авторизации, то сайт не прогружается (((. Кто то пытался таким образом вывести авторизацию и регистрацию в попап окно?
Потому что корзина это как бы модуль, а регистрация и авторизация это страница. Если посмотреть в шаблоны, то у авторизации есть и шапка и подвал, а у корзины только нужное.
Однако ведь можно переделать контроллеры авторизации и регистрации под это дело? Я так понял там необходимо вырезать некоторый функционал из контроллера и шаблона? То есть оставить только то, что нужно, а именно поля для ввода и кнопки.
конечно. Переделать можно. Только нужно добавить отправку данных по аяксу, чтобы выполнить валидацию полей без закрытия окна.
А если сделать вот так в шаблоне... Код: <form name="login" onsubmit="return validate_input();"> ........... <input type="submit" onClick="validate_input();" value="<?php echo $button_login; ?>" class="btn btn-primary" /> </form> <script type="text/javascript"> function validate_input() { valid = true; if ( document.login.email.value = "0" ) { error_email = "<span>Впишите email</span>"; valid = false; } else { error_email = "" ; } if ( document.login.password.value = "0" ) { error_password = "<span>Впишите</span>"; valid = false; } else { error_password = "" ; } document.getElementById('error-mail').innerHTML = error_email; document.getElementById('error-pass').innerHTML = error_password; return valid; } </script> Хотя я вот дописал и подумал, что в данном случае, видимо, возникнут проблемы если данные введены, но неверные. Юзеру ничего не прилетил на этот счёт)))). Видимо придётся познать ajax. А этот код может кому и пригодится))))
В шаблоне product.tpl есть практически то, что мне нужно. Я имею ввиду ajax. Надо только переделать под свои нужды. Но мне для начала надо вывести шаблон login.tpl в попап-окно. И тогда можно дальше плясать с бубном!
в контроллере login.php закоментировал следующие строчки... Код: /*$data['breadcrumbs'] = array(); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_home'), 'href' => $this->url->link('common/home') ); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_account'), 'href' => $this->url->link('account/account', '', 'SSL') ); $data['breadcrumbs'][] = array( 'text' => $this->language->get('text_login'), 'href' => $this->url->link('account/login', '', 'SSL') );*/ Код: /*$data['column_left'] = $this->load->controller('common/column_left'); $data['column_right'] = $this->load->controller('common/column_right'); $data['content_top'] = $this->load->controller('common/content_top'); $data['content_bottom'] = $this->load->controller('common/content_bottom'); $data['footer'] = $this->load->controller('common/footer'); $data['header'] = $this->load->controller('common/header');*/ В шаблоне login.tpl... Код: <!--<?php echo $header; ?>--> <!--<?php echo $content_top; ?>--> <!--<?php echo $content_bottom; ?--> <!--<?php echo $footer; ?>--> и убрал "хлебные крошки".... В контроллере header.php добавил переменную... PHP: $data['login_popup'] = $this->load->controller('account/login'); Вывод в шаблон предполагается таким образом... PHP: <?php echo $login_popup; ?> Теперь надо понять как сделать так, чтобы по данному запросу выводился шаблон login.tpl В cart.php вижу такую функцию в конце контроллера... PHP: public function info() { $this->response->setOutput($this->index());} В login.php это не помогает. Что то я упускаю или скорей всего не понимаю))).
вам нужно смотреть в сторону $this->load->view Специально не написал полностью, так как не знаю какая версия движка у вас. Просто в разных версия по разному рендерится..