
Тренды современного дизайна диктуют нам легкость, адаптивность и удобство использования каждого элемента сайта. Не знаю как вам, а мне кажется, что большая форма авторизации на сайте (да, как на wedal.ru справа) давно уже не является необходимостью, а представляет собой скорее раздражающий фактор. Почему бы не заменить ее одной красивой кнопкой или ссылкой «Вход», при нажатии на которую появляется всплывающее окно с формой для ввода логина и пароля? Мне кажется, это смотрится очень лаконично. В этой статье я расскажу, как добавить такую функцию к вашему сайту на Joomla.
Содержание
Данная задача решается быстро и просто. Ниже я распишу ее по пунктам.
1) Подключение JQuery и Facebox
Прежде всего, нам потребуется подключить к используемому шаблону Joomla JQuery и Facebox.
JQuery в вашем шаблоне может быть уже подключен. Если вы используете Joomla 3, то скорее всего подключен. Как узнать наверняка? Откройте главную страницу сайта, кликните по ней правой кнопкой мыши и выберите код «Просмотр исходного кода»(в разных браузерах этот пункт называется по-разному, но смысл такой же). В открывшимся окне html-кода страницы нажмите «ctrl + F» и введите в строке поиска «jquery». Если текст будет найдет, то библиотека JQuery подключена. Если же нет, значит нет и нужно ее подключить.
Скрипт Facebox нужно скачать по этой ссылке. После скачивания извлеките архив. Из него нам понадобится только папка src. Переименуйте ее в facebox и закачайте на сайт в папку templates/ваш_шаблон/
Подключить JQuery и Facebox можно добавив в файле index.php вашего шаблона между тегами <head></head> следующий код:
Если JQuery уже подключен:
<script src="/templates/<?php echo $this->template ?>/facebox/facebox.js"></script>
<link href="/templates/<?php echo $this->template ?>/facebox/facebox.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
jQuery(document).ready(function(jQuery) {
jQuery('a[rel*=facebox]').facebox({
})
})
</script>
Если JQuery еще не подключен:
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script type="text/javascript">jQuery.noConflict();</script>
<script src="/templates/<?php echo $this->template ?>/facebox/facebox.js"></script>
<link href="/templates/<?php echo $this->template ?>/facebox/facebox.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
jQuery(document).ready(function(jQuery) {
jQuery('a[rel*=facebox]').facebox({
})
})
</script>
После подключения в исходном коде страницы появятся ссылки, которые ведут к файлам. При клике по ним должен открываться код файлов. Так можно проверить, что все подключено правильно.
Еще одна деталь – в файле templates/ваш_шаблон/facebox/facebox.js в строках 88, 89, 96 нужно указать правильные пути к картинкам. Это будет:
/templates/ваш_шаблон/facebox/loading.gif и остальные по аналогии.
2) Создание позиции для модуля
Теперь, когда скрипт подключен, нам нужно создать специальную скрытую позицию для модуля авторизации. Для этого открываем файл templates/ваш_шаблон/index.php, находим в нем закрывающий тег </body> и перед ним добавляем:
<div id="login-modal" style="display:none;">
<jdoc:include type="modules" name="login" style="none" />
</div>
Этим кодом мы создали позицию с именем login, которую теперь можем использовать в админке. При чем, эта позиция скрыта по умолчанию и все, что в ней опубликовано, будет в коде страницы, но не будет на ней видно. Так нужно.
3) Создание модуля
После того, как позиция создана, нужно создать сам модуль. Для этого идем в менеджер модулей, добавляем новый модуль типа Авторизация(login), либо, если он уже создан, редактируем его, изменяя позицию на login. В списке позиций таковой не будет. Нужно просто записать ее вручную. Модуль нужно опубликовать.
4) Создание кнопки/ссылки
Последним шагом будет создание кнопки или ссылки, при клике по которой будет появляться всплывающее окно с формой авторизации на сайте.
Куда вставить этот код дело ваше. Кому куда удобнее. Я предложу интересный вариант с видом в верхней части браузера. Для него нужно:
4.1) Добавить в templates/ваш_шаблон/index.php, сразу после открывающего тега <body>:
<a id="login-button" href="#login-modal" rel="facebox">Вход</a>
4.2) В файле templates/ваш_шаблон/facebox/facebox.css добавить в конец:
#login-button{
background: none repeat scroll 0 0 #0088CC;
border-radius: 0 0 5px 5px;
color: #FFFFFF;
display: block;
font-size: 14pt;
height: 30px;
left: 45%;
line-height: 20pt;
position: absolute;
text-align: center;
top: 0;
width: 10%;
}
Вот и все. Если вы нигде не ошиблись, то справа экрана появится вот такая кнопка, открывающая всплывающее окно:
Напоследок добавлю, что таким способом можно выводить не только модуль авторизации. Вообще любой модуль, который будет помещен в позицию login. Можно придумать много интересных решений.
----------------------------------------
Если вам интересна данная тема, а также Joomla и Virtuemart в общем, то советую заглянуть на сайт http://site-on.net. Этот сайт приятно удивил. Я даже задержался и прочитал несколько статей автора. Удивительно, но почерпнул для себя кое-что новое. Есть статьи по Joomla и Virtuemart 2 c готовыми решениями. Также есть раздел, посвященный продвижению сайтов. Короче говоря, посмотрите.
Сайт на Joomla 3. Пока тестируется на локалке. Проблема в том, что после авторизации пользователя, сайт заметно очень тормозит. Если не авторизоваться, то работает "на щелчок". Сторонние расширения авторизации отключены. На форуме Joomla говорят, что на реальном хостинге эта проблема исчезнет ввиду ряда причин, связанных с работой на локалке. Так ли это? Буду благодарен.
Андрей.
С уважением Андрей.
Спасибо за совет. Включил отладку. Так выглядят запросы к базе данных до авторизации: , а так после:. Если Вас не затруднит, то подскажите, пожалуйста, как удалить дубликаты запросов. Может где-то уже есть такой урок для чайников?
Буду благодарен.
С уважением Андрей.
и ни в одной из подобных статей почему-то нет дальнейшей обработки формы, обработки ошибок в том же всплывающем окне... или может я чего-то не понимаю? напишите пожалуйста про это, полезнее будет, имхо
на:
и ссылку:
на:
Все сделала, как вы сказали, но форма авторизации не открывается.
В чем может быть проблема?
http://iti.yostudio.ru
теперь другой вопрос, а как сделать так чтобы модуль был виден авторизованному пользователю?
Это ошибка PHP. Направление мыслей у вас верное, но проверка на авторизованного пользователя выполняется немного не так. Вот правильный код:
Спасибо, но уже сделал по своему, вот можно глянуть на сайте fetra.com.ua (там ссылка в хедере, я просто накладываю сверху через z-index при входе новую надпись с белым фоном, может как-то коряво но как смог.. очень интересно была бы реализация без такой химии, а через php (но я в нем не силен, я учил только С билдер..) я понимаю как должно быть по логике, что if ($user->guest) {
Вход в интернет магазин
}
ELSE { echo 'Привет, ' . $user->username; } но так не пашет.. и да в моем варианте коряво выглядит ссылка в IE(одни проблемы с ним..)
http://www.interart.masnerin.com/index.php/ru/
Ссылка на "вход/регистрацию" в правом верхнем углу.
/templates/ot_sexyqueen/facebox/facebox.css
исправьте:
на:
Сделал по вашей инструкции, все получилось. Но - мне нужно открыть форму регистрации, а не входа. И вот с этим засада: В открытой по вашей инструкции форме входа есть ссылка на Регистрацию, при переходе по ней уже открывается обычная страница. Если в код Вход
index.php?option=com_users&view=registration&tmpl=component
и далее заменять ей блок авторизации, открытый во всплывашке, либо, если вы хотите вызывать регистрацию сразу, сделайте ссылку для Facebox для вызова AJAX по инструкции из документации. И вставьте этот же адрес.
Как ты встроил рейтинг организации в Яндексе в описание профиля?
Сделал по инструкции, но с отличием: Joomla 4, Helix Ultimate 2
Вышло вот так: могу уловить кнопку под хеадером.
Подскажите, как можно это подправить?