Формирование E-mail

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

Аватар пользователя Bezlepkin Bezlepkin 1 марта 2011 в 9:38

Подскажите, где можно поменять переменные которые запихиваются в e-mail который сайт посылает при регистрации и т.д.

Комментарии

Аватар пользователя Bezlepkin Bezlepkin 1 марта 2011 в 10:11

Это понятно. Откуда там они берутся !username? Я хочу свое значение. например отправитель не e-mail а название сайта.

Аватар пользователя Bezlepkin Bezlepkin 1 марта 2011 в 10:47

Да я про это знаю.

!username <- ТУТ Я ХОЧУ СВОИ ПЕРЕМЕННЫЕ ИЗ БАЗЫ

Благодарим Вас за регистрацию на сайте !site. Вы можете сейчас войти на !login_uri используя следующие учетные данные:

Ваш E-mail: !mail
Ваш пароль: !password

Вы так же можете войти, нажав на следующую ссылку или скопировав её в адресную строку браузера:

!login_url

Это одноразовый вход и воспользоваться им можно лишь однажды. После входа на сайт вы будете перенаправлены на страницу !edit_uri, где можете сменить свой пароль.

Аватар пользователя Ростислав Ростислав 1 марта 2011 в 13:56

<?php
function user_mail_tokens($account$language) {
  global 
$base_url;
  
$tokens = array(
    
'!username' => $account->name,
    
'!site' => variable_get('site_name''Drupal'),
    
'!login_url' => user_pass_reset_url($account),
    
'!uri' => $base_url,
    
'!uri_brief' => preg_replace('!^https?://!'''$base_url),
    
'!mailto' => $account->mail,
    
'!date' => format_date(time(), 'medium'''NULL$language->language),
    
'!login_uri' => url('user', array('absolute' => TRUE'language' => $language)),
    
'!edit_uri' => url('user/'$account->uid .'/edit', array('absolute' => TRUE'language' => $language)),
  );
  if (!empty(
$account->password)) {
    
$tokens['!password'] = $account->password;
  }
  return 
$tokens;
}
?>
Аватар пользователя Bezlepkin Bezlepkin 1 марта 2011 в 16:49

А вот это вот куда?

<?php
function user_mail_tokens($account, $language) {
global $base_url;
$tokens = array(
'!username' => $account->name,
'!site' => variable_get('site_name', 'Drupal'),
'!login_url' => user_pass_reset_url($account),
'!uri' => $base_url,
'!uri_brief' => preg_replace('!^https?://!', '', $base_url),
'!mailto' => $account->mail,
'!date' => format_date(time(), 'medium', '', NULL, $language->language),
'!login_uri' => url('user', array('absolute' => TRUE, 'language' => $language)),
'!edit_uri' => url('user/'. $account->uid .'/edit', array('absolute' => TRUE, 'language' => $language)),
);
if (!empty($account->password)) {
$tokens['!password'] = $account->password;
}
return $tokens;
}
?>

Аватар пользователя Ростислав Ростислав 2 марта 2011 в 12:43

Не где, а откуда. В модуле ядра modules/user/user.module. Изменять не рекомендуется, но при необходимости иногда приходится. Естественно, при следующих апдейтах это место помечается, и обновление данного файла делается вручную.

Аватар пользователя Bezlepkin Bezlepkin 2 марта 2011 в 12:48

Спасибо!

А вот еще вопрос.

В форму профиля добавил submit для каждого fieldset, аккаунт, Язык, и т.д.

$form['account']['submit'] = array(
'#type' => 'submit',
'#value' => t('S'),
'#executes_submit_callback' => FALSE,
'#validate' => array('profile_form_valid_send'),
'#weight' => 4,
);

function profile_form_valid_send($form, &$form_state) {

...

}

При нажатии меняются изменения во всех полях, а надо что бы только в account.

Что посоветуете?

Аватар пользователя Ростислав Ростислав 2 марта 2011 в 17:56

Fieldset - элемент формы, а не форма, и он не может быть отправлен. Кнопки самбита для каждого fieldset-а не имеют никакого смысла, поскольку форма отправляется целиком. Т.е. вы не можете засабмитить изменения только данного филдсета, игнорируя измененные поля других филдсетов, поскольку ПОСТ-ом на сервер отправляется каждый раз содержимое всей формы.

Чтобы реализовать вашу логику (отправка/сохранение данных только данного филдсета), в вашем случае надо отправлять данные из каждого филдсета Ajax-ом и писать серверный обработчик для каждого запроса. Это решаемо, но не быстро.

Аватар пользователя Bezlepkin Bezlepkin 2 марта 2011 в 19:07

Ну если я могу добавить ['#button'], и со по идеи он не отправляет форму.
Я просто делаю по ее событию валидность, обновляю строки в базе и вывожу сообщение.
НО! ['#button'] все ровно отправляет форму!

Аватар пользователя Ростислав Ростислав 2 марта 2011 в 19:16

Клик по любому input type="submit" и button, помещенному внутри любой формы (не обязательно Drupal) отправит содержимое данной формы на сервер