копалась в поиске, нашла только этот способ, чтобы изменить страницу редактирования данных профиля. http://buildingwebs.wordpress.com/2011/05/11/customizing-edit-user-page-...
но этот способ заменяет страницу редактирования во всех профилях. профили создавала через модуль profile2.
а мне нужно только для одного профиля изменить страницу редактирования.
к тому же данный способ конфликтует с редактированием формы регистрации (по этому способу https://drupal.org/node/350634)
кто знает, подскажите вариант решения.
Комментарии
А что вы хотите менять на странице профиля?
И почему только одного профиля? Что всего для одного пользователя? Так ему рассказть проще как свой профиль редактировать.
Profile 2 нужно использовать когда знаете "зачем". Я не знаю
через профиль2 создан дополнительный профиль приоритеты. страница редактирования основного профиля где емаил, пароль и подобное меня вполне устраивает. а вот профиль приоритеты пользователям не очень удобно заполнять.
ты тупой или прикалываешься?
если у вас включен profile2 page, то функцию темизации будет не проблема добавить для формы редактирования профиля
так и вопрос как? дополнительной страницы приоритеты не создано, сама страница профиля уже темизирована.
если у профиля есть своя страница и страница редактирования, то к примеру для профиля myprofile
return array(
'profile2_edit_myprofile_form' => array(
'render element' => 'form',
'template' => 'edit-myprofile-form', //edit-myprofile-form.tpl.php
),
);
}
у профиля есть своя страница редактирования (/user/23/edit/profile2_priorities), но ваш метод не работает.
работает
вообще то страница редактирования профиля /profile-priorities/1/edit
да ладно?
и Запрашиваемая страница "/profile-priorities/1/edit" не может быть найдена.
для пользователей
мой акунт -> редактировать (/user/23/edit) это где емаил, пасс и подобное
мой акунт -> редактировать -> приоритеты (/user/23/edit/profile2_priorities)
пока не включите profile2 page темизация всех страниц для всех профилей будет user_profile_form , соответственно не будет возможности отдельной темизации
если уж так нужно темизировать именно те страницы во вкладках редактирования профиля, то задавайте функцию темизации форме в hook_form_alter, разделяя их по $form['#user_category']
включила. не работает ваш код.
return array(
'profile2_edit_profile2_priorities_form' => array(
'render element' => 'form',
'template' => 'edit-profile2_priorities-form',
),
);
}
//edit-profile2_priorities-form.tpl.php
для меня это сложно. можно более простым языком.
в данном случае не работает уже ваш код
profile2_priorities - это машинное имя профиля?
да.
function business_theme один раз декларируется в template.php ?
кэш не забыли очистить?
да один.
этот вариант (https://drupal.org/node/350634)временно удалила.
шаблон лежит в корневой папке темы или в папке templates?
в templates, кеш чищу
return array(
'profile2_edit_profile2_priorities_form' => array(
'render element' => 'form',
'path' => drupal_get_path('theme', 'business') . '/templates',
'template' => 'edit-profile2_priorities-form',
),
);
}
не работает
функция function business_theme() в корневой папке темы в template.php
а шаблон edit-profile2_priorities-form.tpl.php в папке templates
на странице /admin/reports/dblog ошибки есть?
смотрите хоть на странице /profile-profile2_priorities/1/edit ?
вот так работает, но меняются страницы редактирования для всех профилей а не только для приоритетов.
$items = array();
$items['user_register_form'] = array(
'render element' => 'form',
'path' => drupal_get_path('theme', 'business') . '/templates',
'template' => 'user-register-form',
'preprocess functions' => array(
'business_preprocess_user_register_form'
),
);
$items['user_profile_form'] = array(
'render element' => 'form',
'path' => drupal_get_path('theme', 'business') . '/templates',
'template' => 'edit-profile2_priorities-form',
'preprocess functions' => array(
'business_preprocess_user_profile_form'
),
);
return $items;
}
function business_preprocess_user_register(&$variables) {
$variables['intro_text'] = t('This is my super awesome reg form');
$variables['rendered'] = drupal_render($variables['form']);
}
мой код темизирует страницу /profile-profile2_priorities/23/edit , а не /user/23/edit/profile2_priorities !!!!
если создавать отдельную страницу для каждого профиля, это не очень удобно. гораздо удобнее смотреть все на одной странице.
а для моего варианта (/user/23/edit/profile2_priorities), что нет решений?
можно хоть как то if-ами разграничить?
я уже просила рассказать про это более простым языком
ну тогда установите дополнительно https://www.drupal.org/project/account_profile и редактируйте все на одной странице
редактировать то надо на разных вкладках. а вот просматривать профиль на одной.
if ($form['#user_category'] == 'profile2_priorities') {
array_unshift($form['#theme'], 'profile2_priorities');
}
}
function business_theme() {
$items = array();
$items['user_register_form'] = array(
'render element' => 'form',
'path' => drupal_get_path('theme', 'business') . '/templates',
'template' => 'user-register-form',
'preprocess functions' => array(
'business_preprocess_user_register_form'
),
);
$items['profile2_priorities'] = array(
'render element' => 'form',
'path' => drupal_get_path('theme', 'business') . '/templates',
'template' => 'profile2-priorities-form',
'preprocess functions' => array(
'business_preprocess_profile2_priorities'
),
);
$items['user_profile_form'] = array(
'render element' => 'form',
'path' => drupal_get_path('theme', 'business') . '/templates',
'template' => 'user-profile-form',
'preprocess functions' => array(
'business_preprocess_user_profile_form'
),
);
return $items;
}
profile2-priorities-form.tpl.php
print render($form['actions']);
print render($form['profile_profile2_priorities']);
print drupal_render_children($form);
спасибо. вроде работает.