Насмотрелся примеров и на форуме и в Гугле и в Яндексе тоже. Перерыл Ютуб.
Суть: Установил модуль userloginbar для вывода в одну строку полей регистрации пользователя. Встала задача экономии места и необходимо убрать подписи к полям Login и Password. В сети есть много примеров использования кода placeholder, но в описаниях говорится, что IE не поддерживает этого счастья и предлагается установить модуль jquery_placeholder.
Установил, описания насколько смог вычитал, но реализовать всего этого чуда не могу.
Насколько я понял userloginbar просто активирует форму, уже встроенную в ядро и примеры, описанные в сети к нему не подходят. По крайней мере на том уровне знаний на котором я пока нахожусь у меня сделать подобное не получается. Долблюсь с этим уже дней пять и пока нет здравых мыслей.
Помогите,разобраться в этом. Буду ОЧЕНЬ признателен за описания мыслей и действий. Не просто: Вставь это в сюда, а почему именно это и именно сюда? Т.е. как вы к этому пришли (учи PHP не самый продуктивный ответ - хотя он имеет место и право быть). Думаю, что для изучения будет полезно именно движение мысли увидеть.
Комментарии
НАсколько я понимаю вот тачасть кода в модуле которая отвечает за форму:
function userloginbar_form_alter(&$form, $form_state, $form_id) {
global $form_values;
switch ($form_id) {
case 'user_login_block':
$destination = drupal_get_destination();
$form['#action'] = '?q=user&destination=' . $destination['destination'];
$form['#method'] = 'post';
$form['form_id'] = array(
'#type' => 'hidden',
'#default_value' => 'user_login',
);
$items = array();
if (variable_get('user_register', USER_REGISTER_VISITORS_ADMINISTRATIVE_APPROVAL)) {
$items[] = l(t('Register'), 'user/register', array('attributes' => array('title' => t('Create a new user account.')))) . ' | ';
;
}
$items[] = l(t('Forgot Password?'), 'user/password', array('attributes' => array('title' => t('Request new password via e-mail.'))));
$form['links'] = array('#markup' => theme('item_list', array('items' => $items)), '#weight' => 100);
break;
}
}
Бло чо вы мутиде я не одного из вас не понял?
На спичках скажите.
Это все дело пары минут. Через хук формы как пить дать. Хотите, могу скинуть.
Я хочу скрыть те подписи к полям что есть сейчас, но увидеть подсказки внутри поля.
Вот модуль для этого чуда https://drupal.org/project/jquery_placeholder
При установке он запросит еще этот https://drupal.org/project/elements и библиотеку
Если этого будет вполне достаточно для моего понимания, то хочу (это первый сайт и первое знакомство с Drupal в целом и с php и css в частности). Потому буду вникать, но пока, видимо, еще и про хуки тут почитаю.
Шлите
P.S. Насколько я понял - форма вызывается ссылаясь на стандартную форму. Надо будет делать в исходной или в коде модуля? Я логику саму не очень понимаю (зато честен)
{
if (in_array( $form_id, array( 'user_login', 'user_login_block')))
{
$form['name']['#attributes']['placeholder'] = t( 'Username' );
$form['pass']['#attributes']['placeholder'] = t( 'Password' );
}
}
а на осла и его пользователей просто забей)))
В смысле забить? А как же Юзабилити? Получается, что решение какое-то недоделанное
да безовсякого смысла забить)))
десятый осел понимает эту конструкцию
ослы помладше нет
p.s.
вобщем, пример кода у тебя есть - так делай для людей.
а коль за древних осликов переживаешь, то вот для них дополнительно и мудри костыль))
http://code.google.com/p/html5shiv/
статистика утверждает, что на данный момент пользователи,пользующиеся ослом - почти 15% (правдаверсию браузера я не могу назвать точно - нет у меня данных)
Скажи еще мил человек - куда именно вставить этот волшебный код? Не в темплейт же страницы?
Об этом я как-то не подумал )))))))
код обычный, вставлять не нужно, нужно использовать)
если будешь использовать в template.php темы - не забудь YOURTHEMENAME на свое,
если в модуле - то имя_модуля соотв.
Да, значения действиетнльно вводятсявполя, но как-то еще видимо надо отключить подписи,а то получается дублирование: и название поля перед ним и название поля в нем..
В итоге забил только на пользователей ослов прошлых версий, вставил код в Template.php своей темы и приписал еще пару строк. В итоге:
function silakmestu_theme_form_alter( &$form, &$form_state, $form_id )
{
if (in_array( $form_id, array( 'user_login', 'user_login_block')))
{
$form['name']['#title'] = Null;
$form['pass']['#title'] = Null;
$form['name']['#attributes']['placeholder'] = t( 'Username' );
$form['pass']['#attributes']['placeholder'] = t( 'Password' );
}
}
Чую, что коряво что-то
Спасибо, народ..пять дней ломки и нужный совет.
- прям СПАСИБО-спасибоили как-то так:
.
$form['name']['#title_display'] = "invisible";
$form['pass']['#title_display'] = "invisible";
.
.
Таким пох на юзабилити, они и незнают что это такое.
В
гуглеяндекс метрике забанили?Итого, финализирую:
Головой multpix и моим "мартышечьим" тестированием рабочий код выглядит так:
function НАЗВАНИЕ_ТЕМЫ_form_alter( &$form, &$form_state, $form_id )
{
if (in_array( $form_id, array( 'user_login', 'user_login_block')))
{
$form['name']['#title_display'] = "invisible";
$form['pass']['#title_display'] = "invisible";
$form['name']['#attributes']['placeholder'] = t( 'Username' );
$form['pass']['#attributes']['placeholder'] = t( 'Password' );
}
}
Вставляется в файл template.php (в теме adaptivetheme) и убирает подписи к полям регистрации пользователя на сайте, показывая эти названия внутри самого поля.
Пошел играть стилями с самими полями - сделаю 0,8 прозрачности им.
P.S. Отдельная СПАСИБА за помощь всем остальным кто принимал участие в мыслях, подсказках...