Чиним ссылку OpenID на форме входа

Главные вкладки

Аватар пользователя VladSavitsky VladSavitsky 5 июня 2008 в 13:57

В друпал6 модуль openid входит в ядро.
На форме входа появляется доп. ссылка - вы щёлкаете и, вместо логина/пароля, видите поле для ввода OpenID.
Всё это делается без перезагрузки страницы - AJAX.

Но ссылка, которая используется (перехода по ней нет) имеет кривой вид типа: drupalcookbook.ru/%23
Поисковики как-то её нашли (в блоке нашли - страница user/login запрещена в robots.txt) и ругаются, что она не работает.

Чинится это так:
Открыть файл /modules/openid/openid.module
Найти функцию function openid_form_alter(&$form, $form_state, $form_id)
В ней изменить код:
<?php
// 'data' => l(t('Log in using OpenID'), '#'),
//Start
'data' => l(t('Log in using OpenID'), ''),
//End
'class' => 'openid-link',
);
$items[] = array(
// 'data' => l(t('Cancel OpenID login'), '#'),
//Start
'data' => l(t('Cancel OpenID login'), ''),
//End
?>

Теперь это будет ссылка на главную - по крайней мере это рабочая ссылка.
Пробовал исправить, чтобы не было преобразования символа '#' - не получилось почему-то..
В друпал6, кстати, формат функции l() поменялся - теперь только 3 аргумента принимает.

PS
На друпал.орг не писал - сайт недоступен продолжительное время...

Комментарии

Аватар пользователя afishi afishi 30 марта 2009 в 4:48

а как в 5 изменить?

function openid_form_alter($form_id, &$form) {
if ($form_id == 'user_login_block' || $form_id == 'user_login') {
drupal_add_css(drupal_get_path('module', 'openid') .'/openid.css', 'module');
drupal_add_js(drupal_get_path('module', 'openid') .'/openid.js');

if (!empty($form['#post']['openid_url'])) {
$form['name']['#required'] = FALSE;
$form['pass']['#required'] = FALSE;
unset($form['#submit']);
$form['#validate'] = array('openid_login_validate' => array());
}

$form['openid_link'] = array('#value' => l(t('Log in using OpenID'), '#', array('class' => 'openid-link')));
$form['user_link'] = array('#value' => l(t('Cancel OpenID login'), '#', array('class' => 'user-link')));