Только автор данного урока забыл уточнить для новичков, что все файлы, используемые в уроке, находятся в папке текущей темы..Если их там нет - создать..
ЗЫ..Здесь не любят разжевывать готовые решения, но обычно помогают всем, кто делает и ошибается..
Изучайте, эксперементируйте...
Что конкретно не понятно или не получается - спрашивайте, предварительно спросив у гугла..
Ну так давайте разберем хоть одно рабочее решение!)
берите , устанавливайте и разбирайте , если что то не получается - спрашивайте , а так вообще надо учиться искать информацию - сами видите , что её в интернетах полным полно ,
но если вам лень это делать , то почему другие должны за вас это делать ?
Только автор данного урока забыл уточнить для новичков, что все файлы, используемые в уроке, находятся в папке текущей темы..Если их там нет - создать..
"drupby" wrote:
берите , устанавливайте и разбирайте , если что то не получается - спрашивайте , а так вообще надо учиться искать информацию - сами видите , что её в интернетах полным полно ,
но если вам лень это делать , то почему другие должны за вас это делать ?
Мне не лень уже месяц разобрать не могу это уже безысходность)
Только автор данного урока забыл уточнить для новичков, что все файлы, используемые в уроке, находятся в папке текущей темы..Если их там нет - создать..
Выдает такую ошибку:
Fatal error: Cannot redeclare furcula_preprocess_page() (previously declared in W:\html\test\www\sites\all\themes\furcula\template.php:30) in W:\html\test\www\sites\all\themes\furcula\template.php on line 107
И про этот момент поподробнее...
А если есть возможность ссылку на сайт дать, или хотя бы исходный код страницы здесь выложить(файл к сообщения приаттачить) - было бы совсем здорово..
так опять таки в исходном коде страницы виден будет , если подключился.
js подключился, а этих не видать drupal_add_library('system', 'ui.dialog');
drupal_add_library('system', 'effects.explode');
drupal_add_library('system', 'effects.slide');
модуль лучше - там из формы входа можно перейти в форму регистрации или форму восстановления всё в том же модальном окне , а при такой реализации сразу же перебросит на обычную страницу
посмотри демо модуля и сравни с выводом кнопки
tyuirk везет же Вам. А мне чего то orion76 не помогает. Не знаю по какой причине. Мы проплатили ему деньги месяц назад. А скрипт, который он сделал не работает. И он больше не подходит не на письма, не на мобильник. Мы готов даже добавить скинуться на пиво, можно, бельгийское но хочется что бы orion76 выполнил обязательство. Хотя бы скоментировал бы код. Простите за офтоп.
Комментарии
Ради любопытства спросил у гугла:
drupal block--user-login.tpl.php во всплывающем окне через jquery.
гугл вывалил целую кучу вполне рабочих решений..
Ну так давайте разберем хоть одно рабочее решение!)
Ну так если это уже готовые рабочие решения-их можно брать и внедрять,а не разбирать))
например вот это
http://drupalace.ru/lesson/delaem-popup-login-na-jqueryuidialog
Только автор данного урока забыл уточнить для новичков, что все файлы, используемые в уроке, находятся в папке текущей темы..Если их там нет - создать..
ЗЫ..Здесь не любят разжевывать готовые решения, но обычно помогают всем, кто делает и ошибается..
Изучайте, эксперементируйте...
Что конкретно не понятно или не получается - спрашивайте, предварительно спросив у гугла..
ещё http://drupalace.ru/login-registraciya-i-vosstanovlenie-parolya-s-pomosh...
берите , устанавливайте и разбирайте , если что то не получается - спрашивайте , а так вообще надо учиться искать информацию - сами видите , что её в интернетах полным полно ,
но если вам лень это делать , то почему другие должны за вас это делать ?
Мне не лень уже месяц разобрать не могу это уже безысходность)
Вот именно это решение у меня не получается
Может подскажете где я допустил ошибку
Вот содержимое блока block--user--login.tpl.php
<?php
$elements
= drupal_get_form ( 'user_login_block' ); $rendered = drupal_render ( $elements ); // to see what you have to work with// print "<pre>ELEMENTS: " . print_r($elements,1) . "</pre>"; $output = '<form action="' . $elements [ '#action' ] .
'" method="' . $elements [ '#method' ] .
'" id="' . $elements [ '#id' ] .
'" accept-charset="UTF-8"><div>' ; $output .= $elements [ 'name' ][ '#children' ];
$output .= $elements [ 'pass' ][ '#children' ];
$output .= $elements [ 'form_build_id' ][ '#children' ];
$output .= $elements [ 'form_id' ][ '#children' ];
$output .= $elements [ 'actions' ][ '#children' ];
$output .= $elements [ 'links' ][ '#children' ];
$output .= '</div></form>' ;
print
$output ;?>
добавил такой код в page:
<?php if (isset($login_button)): ?>
<?php print $login_button; ?>
<?php endif; ?>
js поключил через .info файл:
$(document).ready(function() {
var login_block = $('#block-user-login');
if (login_block.length > 0) {
login_block.dialog({
autoOpen: false,
title: Drupal.t('Login'),
resizable: false,
maxWidth: 245,
modal: true,
show: "slide",
hide: "explode"
});
$('.user-login').click(function() {
login_block.dialog('open');
return false;
});
}
});
})(jQuery);
в template.php добавил:
<?phpfunction имятемы_preprocess_page(&$vars) {
global $user;
if (!$user->uid && arg(0) != 'user') {
drupal_add_library('system', 'ui.dialog');
drupal_add_library('system', 'effects.explode');
drupal_add_library('system', 'effects.slide');
$vars['login_button'] = l(t('Login'), 'user', array('attributes' => array('class' => array('user-login'))));
}
}?>
Выдает такую ошибку:
Fatal error: Cannot redeclare furcula_preprocess_page() (previously declared in W:\html\test\www\sites\all\themes\furcula\template.php:30) in W:\html\test\www\sites\all\themes\furcula\template.php on line 107
что то мне кажется , что у вас имятемы_preprocess_page уже было - надо их объединить
Да нашел в template.php такую же функцию с этим именем. Как это сделать или можно найти альтернативный способ.
if (!$user->uid && arg(0) != 'user') {
drupal_add_library('system', 'ui.dialog');
drupal_add_library('system', 'effects.explode');
drupal_add_library('system', 'effects.slide');
$vars['login_button'] = l(t('Login'), 'user', array('attributes' => array('class' => array('user-login'))));
}
вставить в существующую ф-цию
drupby спс все получилось ошибка пропала, только эффект всплывающего окна не как не срабатывает (
кэш чистил ?
и покажи имятемы_preprocess_page полностью что получилось.
да почистил
<?phpfunction имятемы_preprocess_page(&$vars) {
if (isset($vars['main_menu'])) {
$vars['main_menu'] = theme('links__system_main_menu', array(
'links' => $vars['main_menu'],
'attributes' => array(
'class' => array('links', 'main-menu', 'clearfix'),
),
'heading' => array(
'text' => t('Main menu'),
'level' => 'h2',
'class' => array('element-invisible'),
)
));
}
else {
$vars['main_menu'] = FALSE;
}
if (isset($vars['secondary_menu'])) {
$vars['secondary_menu'] = theme('links__system_secondary_menu', array(
'links' => $vars['secondary_menu'],
'attributes' => array(
'class' => array('links', 'secondary-menu', 'clearfix'),
),
'heading' => array(
'text' => t('Secondary menu'),
'level' => 'h2',
'class' => array('element-invisible'),
)
));
}
else {
$vars['secondary_menu'] = FALSE;
}
global $user;
if (!$user->uid && arg(0) != 'user') {
drupal_add_library('system', 'ui.dialog');
drupal_add_library('system', 'effects.explode');
drupal_add_library('system', 'effects.slide');
$vars['login_button'] = l(t('Login'), 'user', array('attributes' => array('class' => array('user-login'))));
}
}?>
а скрипты эти в исходном коде подключились ?(в теге
<head></head>
)если включена аггрегация скриптов попробуй выключить.
И про этот момент поподробнее...
А если есть возможность ссылку на сайт дать, или хотя бы исходный код страницы здесь выложить(файл к сообщения приаттачить) - было бы совсем здорово..
так опять таки в исходном коде страницы виден будет , если подключился.
в heade не видно , и агрегация не стоит
js подключился, а этих не видать drupal_add_library('system', 'ui.dialog');
drupal_add_library('system', 'effects.explode');
drupal_add_library('system', 'effects.slide');
так а ты хоть от анонима заходишь на страницу?
на локальном сервере, какая часть кода интересует ?
Нет конечно ) затупил, теперь вижу что подключились.
только эффекты не работают (
а само окно всплывает ?
да поставь Ajax Login/Register и выведи блок с ссылкой куда нужно
В том и дело что оно в contente как обычное отурывается
хотелось бы обойтись без модулей
модуль лучше - там из формы входа можно перейти в форму регистрации или форму восстановления всё в том же модальном окне , а при такой реализации сразу же перебросит на обычную страницу
посмотри демо модуля и сравни с выводом кнопки
Я имел ввиду не в тема.info ли был вставлен код скрипта...
Или может с путями к файлу что...
похоже именно он и не отрабатывает...
Модуль уже посмотрел, здесь уже наверное дело принципа столько времени потрачено, а результата нет (
В инфо прописал scripts[] = js/theme.js
В исходном коде страницы он есть?
сам файл лежит в папке ИМЯ_ТЕМЫ/js/theme.js?
да в видно что он поключен
да
и в консоли глянь ошибки
все чисто
а блок сам то хоть выведен ?
да
посмотри в исходном коде, какой id у формы логина
(<form id="???")
user-login-form
и кстати, для семерки... theme.js правильнее будет:
Drupal.behaviors.UserLoginAjaxBlock = {
attach: function() {
var login_block = $('#block-user-login');
if (login_block.length > 0) {
login_block.dialog({
autoOpen: false,
title: Drupal.t('Login'),
resizable: false,
maxWidth: 245,
modal: true,
show: "slide",
hide: "explode"
});
$('.user-login').click(function() {
login_block.dialog('open');
return false;
});
}
}
}
})(jQuery);
можно кусок кода формы + обрамляющие ее 3-4 тега?
так надо id блока
<div class="region region-sidebar-second">
<form accept-charset="UTF-8" id="user-login-form" method="post" action="/node?destination=node"><div><div class="form-item form-type-textfield form-item-name">
<label for="edit-name--2">Имя пользователя <span title="Обязательное поле" class="form-required">*</span></label>
<input type="text" class="form-text required" maxlength="60" size="15" value="" name="name" id="edit-name--2">
</div>
<div class="form-item form-type-password form-item-pass">
<label for="edit-pass--2">Пароль <span title="Обязательное поле" class="form-required">*</span></label>
<input type="password" class="form-text required" maxlength="60" size="15" name="pass" id="edit-pass--2">
</div>
<input type="hidden" value="form-BYVG6LNtXABDwRdrdzyLMzx4bwRHT4jRcrUTlPKnPc0" name="form_build_id">
<input type="hidden" value="user_login_block" name="form_id">
<div id="edit-actions--3" class="form-actions form-wrapper"><input type="submit" class="form-submit" value="Вход" name="op" id="edit-submit--3"></div><div class="item-list"><ul><li class="first"><a title="Создать новую учетную запись пользователя." href="/user/register">Регистрация</a></li>
<li class="last"><a title="Запросить новый пароль по электронной почте." href="/user/password">Забыли пароль?</a></li>
</ul></div></div></form> </div>
<!-- /.region -->
</aside>
$elements = drupal_get_form ( 'user_login_block' );
$rendered = drupal_render ( $elements );
// to see what you have to work with
// print "<pre>ELEMENTS: " . print_r($elements,1) . "</pre>";
$output = '<div id="block-user-login"><form action="' . $elements [ '#action' ] .
'" method="' . $elements [ '#method' ] .
'" id="' . $elements [ '#id' ] .
'" accept-charset="UTF-8"><div>' ;
$output .= $elements [ 'name' ][ '#children' ];
$output .= $elements [ 'pass' ][ '#children' ];
$output .= $elements [ 'form_build_id' ][ '#children' ];
$output .= $elements [ 'form_id' ][ '#children' ];
$output .= $elements [ 'actions' ][ '#children' ];
$output .= $elements [ 'links' ][ '#children' ];
$output .= '</div></form></div>' ;
print $output ;
?>
Ура!!!))) все заработало как надо. Огромное спасибо тебе за помощь с меня пивасик)
Спасибо и тебе))
tyuirk везет же Вам. А мне чего то orion76 не помогает. Не знаю по какой причине. Мы проплатили ему деньги месяц назад. А скрипт, который он сделал не работает. И он больше не подходит не на письма, не на мобильник. Мы готов даже добавить скинуться на пиво, можно, бельгийское но хочется что бы orion76 выполнил обязательство. Хотя бы скоментировал бы код. Простите за офтоп.