PDA

Zobacz pełną wersję : Modyfikacja maila aktywującego REJESTRACJĘ



maverickoti
02-06-2014, 12:03
Witam.

Kto wie, w którym miejscu można zmienić mail, który otrzymują użytkownicy podczas rejestracji. Dokładnie chodzi mi o link do potwierdzenia w mailu. Chcę zamienić na słowo AKTYWUJ zamiast linka. Tekst statyczny wiem gdzie zmienić.

ekumi
02-06-2014, 15:24
Zobacz w pliku pl-PL.com_users.ini

maverickoti
02-06-2014, 15:44
Witaj ekumi.
Masz racje tam jest mail który otrzymujemy podczas rejestracji.

COM_USERS_EMAIL_REGISTERED_WITH_ACTIVATION_BODY="Sz. P. %s,\n\nWitaj, Dziękujemy za rejestrację na %s. Twoje konto zostało już utworzone, ale zanim będzie można z niego korzystać, wymaga uaktywnienia.\nW tym celu naciśnij poniższy odnośnik albo skopiuj go i wklej w pasku adresu Twojej przeglądarki:\n%s\n\nPo aktywacji będzie możliwe logowanie się na stronie %s, przy pomocy poniższej nazwy użytkownika i hasła:\n\nUżytkownik: %s\nHasło: %s"

Kod odpowiedzialny za wysyłanie maila aktywacyjnego znajduje się w components->com_users->models->registration.php

elseif ($useractivation == 1)
{
// Set the link to activate the user account.
$uri = JUri::getInstance();
$base = $uri->toString(array('scheme', 'user', 'pass', 'host', 'port'));
$data['activate'] = $base . JRoute::_('index.php?option=com_users&task=registration.activate&token=' . $data['activation'], false);

$emailSubject = JText::sprintf(
'COM_USERS_EMAIL_ACCOUNT_DETAILS',
$data['name'],
$data['sitename']
);

if ($sendpassword)
{
$emailBody = JText::sprintf(
'COM_USERS_EMAIL_REGISTERED_WITH_ACTIVATION_BODY',
$data['name'],
$data['sitename'],
$data['activate'],
$data['siteurl'],
$data['username'],
$data['password_clear']
);
}
else
{
$emailBody = JText::sprintf(
'COM_USERS_EMAIL_REGISTERED_WITH_ACTIVATION_BODY_N OPW',
$data['name'],
$data['sitename'],
$data['activate'],
$data['siteurl'],
$data['username']
);
}
}

I w tym kodzie należy zmienić (bynajmniej tak zakładam), aby w mailu nie pojawiał się długi link tylko podlinkowane słowo. Więc kłania się PHP

Dodam jeszcze, że sam link znajduje się pod ta zmienna: $data['activate'] a wkładany do tłumaczonego maila za pomocą tej oto pięknej funkcji: JText::sprintf. Hmmm i tu się kłania dokumentacja Joomla. Pewnie trzeba przeczytać ten artykuł: http://wiki.joomla.pl/T%C5%82umaczenie_szablonu/Formatowanie_p%C3%B3l_w_napisach_do_t%C5%82umaczen ia. Ciekawe czy po przeczytaniu będę wiedział jak rozwiązać mój problem.

EkleErs
02-06-2014, 20:34
$data['activate'] = '<a href=\"'.$base . JRoute::_('index.php?option=com_users&task=registration.activate&token=' . $data['activation'], false).'\"> AKTYWUJ </a>'

maverickoti
03-06-2014, 19:18
Super. Odrazu wszystko stało się jasne :)

maverickoti
04-06-2014, 11:21
Jednak nie od razu wszystko stało się jasne:(
Mianowicie jeśli zmieniłem linijkę:

$data['activate'] = $base . JRoute::_('index.php?option=com_users&task=registration.activate&token=' . $data['activation'], false);
na modyfikację zaproponowaną przez EkleErs:

$data['activate'] = '<a href=\"'.$base . JRoute::_('index.php?option=com_users&task=registration.activate&token=' . $data['activation'], false).'\"> AKTYWUJ </a>'
to w momencie kliknięcia przycisku Rejestracja wyskakiwał błąd: Error 500: Internal server error

Reasumując chyba tak nie można wpisać. EkleErs czy kiedyś Ci się udało tak zmodyfikować? Może mas inny pomysł. Twój wydawał mi się naprawdę dobry bo logiczny ale Joomli się nie spodobał.

maverickoti
04-06-2014, 12:38
Naprawiłem błąd: Error 500: Internal server error.
Wyskakiwał, ponieważ na końcu linijki nie dałem apostrofa ";".

Jednakże mail otrzymywany przy rejestracji wygląda teraz tak:
"Sz. P. Grzegorz Balicki,

Witaj, Dziękujemy za rejestrację na .... (http://www.pobieralnia24.com). Twoje konto zostało już utworzone, ale zanim będzie można z niego korzystać, wymaga uaktywnienia.
W tym celu naciśnij poniższy odnośnik albo skopiuj go i wklej w pasku adresu Twojej przeglądarki:
<a href=\"http://www.przyklad.com/index.php/component/users/?task=registration.activate&token=aaa111\"> AKTYWUJ </a>

Po aktywacji będzie możliwe logowanie się na stronie..., przy pomocy poniższej nazwy użytkownika i hasła:

Użytkownik: ...
Hasło: ....
"
Czyli niefajnie.

maverickoti
06-06-2014, 14:54
Czy ktoś ma pomysł jak zmienić tą linijkę:

$data['activate'] = $base . JRoute::_('index.php?option=com_users&task=registration.activate&token=' . $data['activation'], false);
w pliku components->com_users->models->registration.php, aby w mailu rejestracyjnym otrzymać podlinkowany napis "AKTYWUJ" zamiast tego długiego linku?

EkleErs
08-06-2014, 15:57
$data['activate'] = '<a href="'.$base . JRoute::_('index.php?option=com_users&task=registration.activate&token=' . $data['activation'], false).'"> AKTYWUJ </a>';

//edit
;
i jeszcze trzeba zmienic $mode

$return = JFactory::getMailer()->sendMail($data['mailfrom'], $data['fromname'], $row->email, $emailSubject, $emailBody);
na
$return = JFactory::getMailer()->sendMail($data['mailfrom'], $data['fromname'], $row->email, $emailSubject, $emailBody, true);
inaczej wysyla jako text
http://api.joomla.org/cms-3/classes/JMail.html

EkleErs
08-06-2014, 19:39
Nie moge edytowac ale trzeba jeszcze zrobic nl2br() na $emailBody

$return = JFactory::getMailer()->sendMail($data['mailfrom'], $data['fromname'], $data['email'], $emailSubject, nl2br($emailBody, true), true);
i ladnie smiga sprawdzalem

maverickoti
09-06-2014, 10:45
Dzięki EkleErs (http://forum.joomla.pl/member.php?30306-EkleErs)

Wszystko działą tak jak pisałeś.