Нужна помощь опытных. Страница редактирования профиля пользователя.

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

Аватар пользователя Ekaterina23 Ekaterina23 29 июня 2014 в 18:45

копалась в поиске, нашла только этот способ, чтобы изменить страницу редактирования данных профиля. http://buildingwebs.wordpress.com/2011/05/11/customizing-edit-user-page-...

но этот способ заменяет страницу редактирования во всех профилях. профили создавала через модуль profile2.
а мне нужно только для одного профиля изменить страницу редактирования.

к тому же данный способ конфликтует с редактированием формы регистрации (по этому способу https://drupal.org/node/350634)

кто знает, подскажите вариант решения.

Комментарии

Аватар пользователя VasyOK VasyOK 29 июня 2014 в 23:03

А что вы хотите менять на странице профиля?
И почему только одного профиля? Что всего для одного пользователя? Так ему рассказть проще как свой профиль редактировать.
Profile 2 нужно использовать когда знаете "зачем". Я не знаю Smile

Аватар пользователя Ekaterina23 Ekaterina23 30 июня 2014 в 0:11

"VasyOK" wrote:
И почему только одного профиля?

через профиль2 создан дополнительный профиль приоритеты. страница редактирования основного профиля где емаил, пароль и подобное меня вполне устраивает. а вот профиль приоритеты пользователям не очень удобно заполнять.
"VasyOK" wrote:
Что всего для одного пользователя?

ты тупой или прикалываешься?

Аватар пользователя drupby drupby 30 июня 2014 в 0:12

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

Аватар пользователя Ekaterina23 Ekaterina23 30 июня 2014 в 0:23

"drupby" wrote:
функцию темизации будет не проблема добавить для формы редактирования профиля

так и вопрос как? дополнительной страницы приоритеты не создано, сама страница профиля уже темизирована.

Аватар пользователя drupby drupby 30 июня 2014 в 0:41

"Ekaterina23" wrote:
так и вопрос как? дополнительной страницы приоритеты не создано

если у профиля есть своя страница и страница редактирования, то к примеру для профиля myprofile

function ИМЯТЕМЫ_theme() {
  return array(
    'profile2_edit_myprofile_form' => array(
      'render element' => 'form',
      'template' => 'edit-myprofile-form', //edit-myprofile-form.tpl.php
    ),
  );
}
Аватар пользователя Ekaterina23 Ekaterina23 30 июня 2014 в 0:59

"drupby" wrote:
если у профиля есть своя страница и страница редактирования, то к примеру для профиля myprofile

function ИМЯТЕМЫ_theme() {
return array(
'profile2_edit_myprofile_form' => array(
'render element' => 'form',
'template' => 'edit-myprofile-form', //edit-myprofile-form.tpl.php
),
);
}

у профиля есть своя страница редактирования (/user/23/edit/profile2_priorities), но ваш метод не работает.

Аватар пользователя drupby drupby 30 июня 2014 в 1:09

"Ekaterina23" wrote:
но ваш метод не работает.

работает
"Ekaterina23" wrote:
у профиля есть своя страница редактирования (/user/23/edit/profile2_priorities)

вообще то страница редактирования профиля /profile-priorities/1/edit

Аватар пользователя Ekaterina23 Ekaterina23 30 июня 2014 в 13:04

"drupby" wrote:
вообще то страница редактирования профиля /profile-priorities/1/edit

да ладно?

Запрашиваемая страница "/profile-profile2_priorities/1/edit" не может быть найдена.
и Запрашиваемая страница "/profile-priorities/1/edit" не может быть найдена.

для пользователей
мой акунт -> редактировать (/user/23/edit) это где емаил, пасс и подобное
мой акунт -> редактировать -> приоритеты (/user/23/edit/profile2_priorities)

Аватар пользователя drupby drupby 30 июня 2014 в 13:31

"Ekaterina23" wrote:
да ладно?

"drupby" wrote:
если у вас включен profile2 page

пока не включите profile2 page темизация всех страниц для всех профилей будет user_profile_form , соответственно не будет возможности отдельной темизации
если уж так нужно темизировать именно те страницы во вкладках редактирования профиля, то задавайте функцию темизации форме в hook_form_alter, разделяя их по $form['#user_category']

Аватар пользователя Ekaterina23 Ekaterina23 30 июня 2014 в 13:37

"drupby" wrote:
пока не включите profile2 page

включила. не работает ваш код.

function business_theme() {
  return array(
    'profile2_edit_profile2_priorities_form' => array(
      'render element' => 'form',
      'template' => 'edit-profile2_priorities-form',
    ),
  );
}
//edit-profile2_priorities-form.tpl.php
Аватар пользователя Ekaterina23 Ekaterina23 30 июня 2014 в 13:39

"drupby" wrote:
если уж так нужно темизировать именно те страницы во вкладках редактирования профиля, то задавайте функцию темизации форме в hook_form_alter, разделяя их по $form['#user_category']

для меня это сложно. можно более простым языком.

Аватар пользователя drupby drupby 30 июня 2014 в 14:00

"Ekaterina23" wrote:
не работает ваш код.

в данном случае не работает уже ваш код
profile2_priorities - это машинное имя профиля?

Аватар пользователя drupby drupby 30 июня 2014 в 14:20

"Ekaterina23" wrote:
в templates

function business_theme() {
  return array(
    'profile2_edit_profile2_priorities_form' => array(
      'render element' => 'form',
      'path' => drupal_get_path('theme', 'business') . '/templates',
      'template' => 'edit-profile2_priorities-form',
    ),
  );
}
Аватар пользователя Ekaterina23 Ekaterina23 30 июня 2014 в 14:24

"drupby" wrote:
function business_theme() { 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

Аватар пользователя Ekaterina23 Ekaterina23 30 июня 2014 в 14:32

"drupby" wrote:

на странице /admin/reports/dblog ошибки есть?
нет.
вот так работает, но меняются страницы редактирования для всех профилей а не только для приоритетов.

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['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']);
}

Аватар пользователя drupby drupby 30 июня 2014 в 14:35

"Ekaterina23" wrote:
вот так работает, но меняются страницы редактирования для всех профилей а не только для приоритетов.

мой код темизирует страницу /profile-profile2_priorities/23/edit , а не /user/23/edit/profile2_priorities !!!!

Аватар пользователя Ekaterina23 Ekaterina23 30 июня 2014 в 14:43

если создавать отдельную страницу для каждого профиля, это не очень удобно. гораздо удобнее смотреть все на одной странице.

а для моего варианта (/user/23/edit/profile2_priorities), что нет решений?

можно хоть как то if-ами разграничить?

Аватар пользователя drupby drupby 30 июня 2014 в 14:50

"Ekaterina23" wrote:
а для моего варианта (/user/23/edit/profile2_priorities), что нет решений?

"drupby" wrote:
если уж так нужно темизировать именно те страницы во вкладках редактирования профиля, то задавайте функцию темизации форме в hook_form_alter, разделяя их по $form['#user_category']

Аватар пользователя Ekaterina23 Ekaterina23 30 июня 2014 в 14:53

"drupby" wrote:
"drupby" написал(а):
если уж так нужно темизировать именно те страницы во вкладках редактирования профиля, то задавайте функцию темизации форме в hook_form_alter, разделяя их по $form['#user_category']

я уже просила рассказать про это более простым языком

Аватар пользователя Ekaterina23 Ekaterina23 30 июня 2014 в 17:16

"drupby" wrote:
редактируйте все на одной странице

редактировать то надо на разных вкладках. а вот просматривать профиль на одной.

Аватар пользователя drupby drupby 30 июня 2014 в 20:11
function business_form_user_profile_form_alter(&$form, &$form_state) {
  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

<?php
print render($form['actions']);
print render($form['profile_profile2_priorities']);
print drupal_render_children($form);