Давайте сначала рассмотрим простой случай: нужно вставить одно динамическое значение в языковую константу. Например, в зависимости от того, сколько символов мы разрешаем вносить пользователю в поле textarea, нам нужно вывести в форму, сколько символов осталось до максимального количества разрешенных символов:
N_CHARACTERS_REMAINING="Осталось <span>%s</span> символов."
В этом случае в коде, чтобы вместо %s подставилось нужное значение, нужно прописать что-то типа:
JText::sprintf('N_CHARACTERS_REMAINING', $remainingValue);
…где:
- N_CHARACTERS_REMAINING – языковая константа;
- $remainingValue – значение, которое нужно вставить в языковую константу.
Думаю, с вводом одного значения, понятно. Но… Что если нам нужно вставить в языковую константу много динамических значений, которые могут меняться в произвольном порядке. Например, в сообщении, которое посылается пользователю вместе с регистрацией на вашем сайте. Т.е., нужно и имя прописать, и логин, и пароль, и ссылку активации профиля нового пользователя. Что ж. Давайте рассмотрим и этот вариант.
Языковая константа в этом случае может выглядеть следующим образом:
COM_USERS_EMAIL_REGISTERED_WITH_ACTIVATION_BODY="Здравствуйте, <strong>%s</strong>.<br /><br />Благодарим вас за регистрацию на сайте <strong>%s</strong>. Ваша учётная запись создана, но должна быть активирована прежде, чем вы сможете ею воспользоваться.<br />Чтобы активировать учётную запись, перейдите по ссылке ниже, или скопируйте её в адресную строку браузера:<br /><br /><a href=\"%s\">%s</a> <br /><br />После активации вы сможете входить на сайт <a href=\"%s\">%s</a> с помощью указанных ниже логина и пароля:<br />Логин: <strong>%s</strong><br />Пароль: <strong>%s</strong>"
Соответственно, нам нужны следующие переменные для вставки в эту языковую константу:
- Имя пользователя;
- Название сайта;
- Ссылка с кодом активации профиля пользователя;
- Снова ссылка с кодом активации профиля пользователя;
- Домен сайта;
- Снова название сайта;
- Логин пользователя;
- Пароль пользователя.
Тогда код тела сообщения может выглядеть следующим образом:
$body = JText::sprintf('COM_USERS_EMAIL_REGISTERED_WITH_ACTIVATION_BODY',
$userName,
$fromName,
$activationLink,
$activationLink,
$serverUrl,
$fromName,
$userUsername,
$userPassword
);
Если вы уже зарегистрированы на этом сайте, или уже оставляли здесь свои комментарии, отзывы, заявки на участие в акциях, чтобы добавить ещё один комментарий – авторизуйтесь
Добавить комментарий