ВопросПопап логин и регистрация для 6 друпала

Не могли бы Вы сделать доступный - пошаговый урок как сделать всплывающую регистрацию и вход на примере 6 друпала. Знаю урок есть, но для 7 не совсем разобрался :(

Комментарии

Аватар пользователя Spleshka
Spleshka написал:

Скачайте модуль jquery_ui, установите, далее действуйте по инструкциям урока о создании попапа для Drupal 7, заменив в коде

drupal_add_library('system', 'ui.dialog');

на

jquery_ui_add('ui.dialog');

Больше различий нет ;)

19.12.2011 14:46
Аватар пользователя Михаил
Михаил написал:

Здравствуйте.
Скачал и установил модуль jquery_ui, заменил в коде нужные строки
template.php

function ИМЯТЕМЫ_preprocess_page(&$vars) {
  global $user;
  if (!$user->uid && arg(0) != 'user') {
    jquery_ui_add('ui.dialog');
    jquery_ui_add('effects.explode');
    jquery_ui_add('effects.slide');
    $vars['login_button'] = l(t('Login'), 'user', array('attributes' => array('class' => array('user-login'))));
  }
}

а theme.js я так понимаю править не надо

(function($) {
 
$(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);

затем подключил js к теме,
но при нажатии кнопки Вход происходит просто переход на страницу(user) с вводом логина и пароля. Как-будто скрипт не срабатывает, а вот почему, понять не могу. Что подскажите. Используется Drupal 6.

25.04.2012 13:48
Аватар пользователя Spleshka
Spleshka написал:

Сайт можете показать? Должно всё работать правильно.

25.04.2012 18:53
Аватар пользователя Михаил
Михаил написал:

Нет к сожалению, она пока только на локальной машине.

26.04.2012 08:37
Аватар пользователя Spleshka
Spleshka написал:

Плохо, что на локальной. Посмотрите, подключаются ли скрипты с библиотеки jquery.ui. Я на самом деле не уверен, что там работает этот код:

    jquery_ui_add('effects.explode');
    jquery_ui_add('effects.slide');

Там скорее всего этих эффектов либо нет, либо они подключаются немного иначе. Соответсвенно, при вызове js эти эффекты из попапа также надо убрать:

(function($) {
 
$(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
    });
 
    $('.user-login').click(function() {
      login_block.dialog('open');
      return false;
    });
 
  }
});
 
})(jQuery);
26.04.2012 10:35
Аватар пользователя Михаил
Михаил написал:

Странно, но почему-то скрипты с библиотеки jquery.ui не подключаются.

26.04.2012 22:12
Аватар пользователя Михаил
Михаил написал:

Совсем ерунда какая-то.
Решил попробовать без эффектов.
Вот template.php

function acquia_prosper_preprocess_page(&$vars) {
  global $user;
  // Подключаем библиотеку только для анонимов
  if (!$user->uid) {
    jquery_ui_add('ui.dialog');
    // Добавляем ссылку, при нажатии на которую будет показываться логин
    $vars['login_button'] = l(t('Login'), 'user', array('attributes' => array('class' => array('user-login'))));
  }
}

theme.js из Вашего последнего варианта + вот подключение в info scripts[] = js/theme.js

Так теперь даже кнопка "Вход" не отображается

27.04.2012 18:10
Аватар пользователя Spleshka
Spleshka написал:

Не может эта кнопка не выводиться. Код-то вывода кнопки правильный! У вас в шаблоне точно есть вывод <?php print $login_button; ?> ?

27.04.2012 18:15
Аватар пользователя Михаил
Михаил написал:

Извините, кнопка есть, забыл кеш почистить, но вот все-равно не выводит pop-up(даже без эффектов), а просто переходит на страницу user, да еще и ошибку пишет
"warning: htmlspecialchars() expects parameter 1 to be string, array given in D:\newServer\domains\bows-pskov.ru\public_html\includes\bootstrap.inc on line 860."

27.04.2012 18:27
Аватар пользователя Spleshka
Spleshka написал:

Ошибку выдаёт потому что кнопку надо вот так создавать:

$vars['login_button'] = l(t('Login'), 'user', array('attributes' => array('class' => 'user-login')));

А библиотеку не подключает потому, что в шестом Друпале на препроцессе страницы скрипты обычным вызовом функции подключения библиотеки добавить не получится.

Попробуйте добавить в функцию

function acquia_prosper_preprocess(&$vars) { 
// подключение 
}
27.04.2012 18:41
Аватар пользователя Михаил
Михаил написал:

Скрипт подключается

<script type="text/javascript" src="/sites/all/modules/jquery_ui/jquery.ui/ui/minified/ui.dialog.min.js?z"></script>

а вот css нет, может в этом проблема

28.04.2012 20:03
Аватар пользователя Spleshka
Spleshka написал:

Не, если бы не подключился css всё работало бы, но без стилей. Если есть возможность - покажите сайт в интернетах. Очень сложно гадать что же там случалось.

30.04.2012 01:00
Аватар пользователя stiplet
stiplet написал:

А как быть кнопка есть жмеш ее начинает открываться окно и тутже закрываеться?

28.09.2012 20:45

Комментировать