Всем привет! У модуля user в файле user.module есть функция function user_pass_reset_url
Мне нужно внести небольшие изменения в эту функцию, но не могу понять, как это правильно сделать.
Изменения в функцию модуля ядра
Главные вкладки
Лучший ответ
Всё решилось из админки. Mime Mail позволил вставить код в шаблон письма, а там уже регулярка убрала лишнее.
Комментарии
1. Написать патч https://shra.ru/2017/12/sozdanie-patcha-dlya-modulya-drupal/
2. Использовать Композер для контроля накладывания патчей. Если патчей будет много их надо как-то контролировать. https://niklan.net/blog/130#avtomaticheskoe-primenenie-patchey
3. Желательно пишите тут и на орге к модулям патчи и цели для которых их пишете. Если ахинеи напишете - вас поправят.
ой-ёй
Мне надо-то всего ничего
При восстановлении пароля приходит письмо с одноразовой ссылкой [user:one-time-login-url]
По сути этот токен представляет из себя строку вида < a href="link" >link< /a >
Мне нужно убрать теги а и оставить только link в письме
Может я слишком сложный способ думаю, и можно как-то попроще?
Неужели это нельзя без хаков ядра?
Все шаблоны писем настраиваются на странице /admin/config/people/accounts.
да, но там токен представляет из себя сформированную ссылку. Можно было бы регуляркой убрать теги, но пхп не срабатывает в шаблоне письма. Видимо неправильно понимаю, как правильно использовать пхп в шаблоне писем
И что конкретно Вы собрались менять в функции user_pass_reset_url? Она ведь не добавляет никаких тегов, а формирует голый URL. Сначала надо найти где именно добавляются эти теги, а потом уж смотреть как их убрать.
1. Как бы не совсем по существу, но такого продукта нет - "пхп". Есть PHP. Суть-то понятна, но в таких деталях заключается отношение к предмету вопроса. Это как если прийти на форум бас-гитаристов и что-то там спрашивать про "басуху" (за это можно было вербально получить люлей).
2. Если речь всего лишь о токенах то, собственно, нужно альтерить токены. Например, hook_tokens_alter. И здесь, к слову, было бы очень правильным указать версию Друпала при постановке вопроса. Для этого даже есть отдельное поле.
А ещё можно альтерить сами емэйлы
Или так. Но, имхо, альтер токенов здесь в самый раз и быстрее. Поскольку речь о том, чтобы убрать из токена оборачивающие URL теги
<a>
.Вот прям только что проверил (на девятке): никаких тегов
<a>
в почте не формируется, пишется голый URL. В заголовке стоит Content-Type: text/plain;.Возможно это у вас умный почтовый клиент превращает текстовый URL в гиперссылку? Или используются какие-то дополнительные сторонние средства для формирования HTML-почты?
Это наверное я коряво изъясняюсь. В почту по итогу приходит кликабельная ссылка (это эти теги а я имею в виду, т.к. в письме это выглядит именно так). А надо, чтобы приходила не кликабельная.
Изначально планировалось решить через hook_tokens_alter, но более опытный человек сказал, что лучше смотреть функцию user_pass_reset_url
Хотя, вообще была надежда, что можно это как-то сделать с помощью htmlmail, но пока тоже не могу понять, на сколько это возможно.
Вы каким почтовым клиентом пользуетесь? У него есть функция посмотреть исходник сообщения? Если там нет никакой ссылки (как у меня), то бессмысленно что-то менять со стороны Друпала (да там и менять-то нечего), Ваш собственный почтовый клиент сам делает из адреса ссылку.
PS А зачем делать адрес некликабельным?
Ну вот, к примеру, на данном сайте drupal.ru я восстанавливаю пароль. Мне приходит такое письмо.
Ссылка кликабельная. Я по ней перехожу и меняю пароль.
А у меня задача сделать ее не кликабельной. На сайте настроена проверка рефереров. То есть, при клике из письма пользователь ничего не сможет сделать, он попадет на главную страницу сайта, т.к. там запрещены переходы по страницам сайта, связанным с личным кабинетом, из посторонних источников. Поэтому пользователю надо скопировать эту ссылку и вставить во вкладку браузера. Изначально на это и было рассчитано. Но пользователи игнорируют фразу "скопируйте", они по ней переходят и ничего не могут понять. Плюс к этому ссылка обрезается в почте и некоторые ее не могут скопировать (потому что хотят ее выделить). Поэтому поставили задачу - чтобы ссылка приходила полностью, не обрезанная и не кликабельная.
Мне наверное изначально так и надо было описать проблему, а не спрашивать про функцию, тем более что еще ни разу не приходилось лазить так глубоко.
Проблема только в том, что в этом токене нет этих тегов
Я исхожу из этого:
Мы сейчас какой сайт ремонтируем - Ваш или drupal.ru? На drupal.ru явно используется какой-то контрибный или кастомный форматтер почты. У Вас тоже? Если да, то какой? И почему бы об этом сразу не сказать? В общем, боюсь, что консультации не получится...
Всё решилось из админки. Mime Mail позволил вставить код в шаблон письма, а там уже регулярка убрала лишнее.