
Если вам требуется отобразить форму входа в систему Drupal 7 во всплывающем окне - эта статья для вас. Для решения этой задачи можно воспользоваться средствами jQuery, или библиотекой Colorbox. В последнем варианте нужно установить модуль Colorbox для Drupal.
Всплывающее окно входа в систему используя Colorbox
Шаг 1: Подготавливаем контент для оображения
1. Оборачиваем форму входа в систему Drupal 7 в ‘div’ контейнер и устанавливаем для этого контейнера CSS стиль ‘display:none;’
Разместим следующую функцию, реализующую hook_preprocess_page(), в файле template.php вашей темы:
function my_theme_preprocess_page(&$vars) {
global $user;
if ($user->uid == 0) {
$vars['loginpopup'] = "<div style='display:none'>" ;
$vars['loginpopup'] .= "<div id='login-pop'>" ;
$vars['loginpopup'] .= drupal_render(drupal_get_form('user_login'));
$vars['loginpopup'] .= "</div>";
$vars['loginpopup'] .= "</div>";
}
}2. Выводим переменную "loginpopup" на странице, в шаблоне вашего сайта, например в файле page.tpl.php, page--front.tpl.php и т.д.
<?php print($loginpopup); ?>
Это позволит загрузить форму входа в систему при загрузке страницы и сохранит ее невидимой.
Шаг 2: Генерируем событие, для отображения формы входа в систему
1. Создаем на страничке ссылку со следующими параметрами:
<a class="inlinepop" href="#login-popup">Login</a>
2. Теперь, прописываем соответствующий обработчик нажатия ссылки:
jQuery(document).ready(function($){
$(".inlinepop").colorbox({inline:true, width:"50%", href:"#login-pop"});
});Вот и все. Форма входа в систему Drupal красиво отображаетя во всплывающем окне при нажатии на ссылку.
Всплывающее окно входа в систему средствами jQuery
Для данного примера я буду использовать чистую установку Drupal. Для того, чтоб ее установить почитайте статью Установка Drupal 7. Далее будет показано что нужно сделать, чтоб получить рабочее всплывающее окно входа в систему. Если в тягость читать много букв - в конце статьи вы найдете прикрепленный файл, разпаковав который вы получите тему, описанную в данной статье.
- Cоздаем копию темы Bartik (я создал новую тему с именем custom).
- Переименуем файл bartik.info в custom.info
- Откроем для редактирования файл custom.info. В поле name пропишем свое название (я написал "name = Clone of Bartik theme")
- В этом-же файле следует добавить строку "regions[login_popup] = Login popup"
- Сохраняем файл custom.info и закрываем его.
- Открываем файл template.php. Добавляем строку "drupal_add_js(drupal_get_path('theme', 'custom') . '/js/custom.js');"
-
Создаем папку js. Внутри нее создаем файл custom.js, открываем его на редактирование. Вставляем код, приведенный далее, сохраняем и закрываем:
jQuery(document).ready(function($) { $('#login-button').bind('click', function () { $('#login_popup_container').stop().show(400); }); $('#close').bind('click', function () { $('#login_popup_container').stop().hide(400); }); }); -
Открываем файл templates/page.tpl.php, добавляем следующий кусок кода в том месте файла, где вам нужно. Я добавил в самом начале файла.
<ul class="menu actions-menu"> <li> <a id="login-button">Login</a> </li> </ul>
-
В конце файла добавляю еще один кусок кода:
<!-- LOGIN POPUP --> <?php /*global $user; if (!$user->uid) {*/ ?> <div id="login_popup_container"> <div id="login_popup"> <div class="content"> <a id="close">X</a> <?php print render($page['login_popup']);?> <?php print theme('links__system_secondary_menu', array('links' => $secondary_menu, 'attributes' => array( 'id' => 'secondary-menu', 'class' => array('links', 'inline', 'clearfix')))); ?> </div> </div> </div> <?php //} ?> <!-- LOGIN POPUP END --> - Сохраняем и закрываем файл page.tpl.php
-
Открываем для редактирования файл css/style.css. Добавляем следующий кусок кода, сохраняем и закрываем его:
#login_popup_container { background-color: rgba(5, 110, 194, 0.5); border-radius: 10px; display: none; left: 300px; margin: 0 auto; padding: 10px; position: fixed; top: 300px; } #login_popup { background-color: #FFFFFF; border-radius: 5px; padding: 30px; } #login_popup label { text-align: left; } #login_popup .form-actions { margin: 0; padding: 0; } #login_popup .form-actions input { background-color: #386600; border: 0 none; color: #FFFFFF; margin: 0; padding: 5px; } #login_popup ul li { margin-left: 20px; padding: 0; text-align: left; } #block-user-login .content { margin-top: 10px; } #close { content: "X"; display: block; float: right; overflow: auto; position: absolute; right: 20px; top: 20px; } #close:hover { cursor: pointer; font-weight: bold; text-decoration: none; } - Открываем меню Оформление, включаем нашу новую тему и делаем ее по умолчанию
- Открываем меню Конфигурация - Производительность - Очистка кэша
- Открываем меню Структура - Блоки. Для блока Вход на сайт устанавливаем область Login popup. После сохранения изменений вы получите всплывающую форму входа в систему.
Использование модулей Drupal
Создание всплывающих окон входа в систему Drupal весьма актуальная тема, поэтому не удивительно, что для решения данного вопроса имеются модули, непример Popup.
There are 6 Comments
средствами jQuery
ОООчень прошу помочь, что нужно сделать чтобы вспывающая форма была такая как у вас на картинке, только средствами jQuery, очень буду рад если напишете на почту. Или ответьте тут в комментарие: куда весь выше описанный код (средствами jQuery) нужно вставить?
моя почта dmitrybarynov@gmail.com
P.S. долго ищу нормальный модуль но все всплывающие формы ужасные. А такого как на картинке негде нет(
Доброго дня.
Доброго дня.
Мне кажется вы путаете термины CSS и jQuery. Внешний вид формы настраивается через CSS, а jQuery отвечает за то, что при нажатии на ссылку, или кнопку, будет вызвана функция JavaScript, в которой будет изменено CSS свойство, отвечающее за видимость формы. В реальности, можно вообще обойтись без jQuery, но отказываться от него нет смысла, так как он является частью системы Drupal.
Форма, что изображена на рисунке, нарисована пару лет назад, когда я еще был молодым и зеленым, поэтому я пошел простым путем и сделал для нее фоновый рисунок, имеющий два слоя - нижний полупрозрачный, а верхний непрозрачный.
Более правильный вариант - это сделать все на чистом CSS + HTML. Для решения этим способом задачи я дополнил статью информацией и прикрепил файл, чтоб легче было разбираться.
Делись своим опытом и знаниями, ибо в могиле они тебе вряд-ли пригодятся.
Я новичок в друпале, и по
Я новичок в друпале, и по этому не могу понять куда нужно прописывать код из шага 2.
В частности эти:
1. Создаем на страничке ссылку со следующими параметрами:
<a class="inlinepop" href="#login-popup">Login</a>
2. Теперь, прописываем соответствующий обработчик нажатия ссылки:
jQuery(document).ready(function($){
$(".inlinepop").colorbox({inline:true, width:"50%", href:"#login-pop"});
});
Пожайлуста ответьте
Все это прописывается в файлах вашей темы
Первый пункт прописываем в файле шаблона (чаще всего page.tpl.php)
Делись своим опытом и знаниями, ибо в могиле они тебе вряд-ли пригодятся.
Функция onload
Здравствуйте! Скажите пожалуйста как сделать чтобы всплывающая картинка или лого сайта появилось при загрузке веб страницы, то есть когда открываем сайм. Знаю что используется функция onload, а как ее прописать и где?
Достаточно будет функции .ready()
Достаточно будет функции .ready(), которая вызывается сразу после того, как документ загружен.
jQuery(document).ready(function($) { $('#login_popup_container').show(400); $('#close').bind('click', function () { $('#login_popup_container').stop().hide(400); }); });Но мне кажется, такая логика будет неудобной для посетителей сайта, которые при загрузке каждой страницы будут лицезреть всплывающее окно.
Делись своим опытом и знаниями, ибо в могиле они тебе вряд-ли пригодятся.
Добавить комментарий