Каким образом добавить в private_message имеющееся поле.

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

Аватар пользователя rukoved rukoved 20 мая 2020 в 12:56

В private_message есть возможность добавить новое поле для отправки сообщения из формы, но нет возможности добавить имеющееся поле материала из которого можно пройти по ссылке для отправки личного сообщения.

Возник вопрос!
Как можно добавить поле с названием материала из которого происходит переход по ссылке в личные сообщения? Есть ли какие-то готовые решения?

Отправку сообщения делаю непосредственно из представления материала. Ссылку во вьюс вывожу через блок как сущность, по другому нет возможности это сделать.

Задача: Добавить поле с названием материала (объявления) в ветку сообщений пользователя с автором материала при переходе по ссылке на личное сообщение автору объявления.

Любая подсказка куда смотреть?

Комментарии

Аватар пользователя rukoved rukoved 22 мая 2020 в 18:43

Здравствуйте!
Модуль поставила, создала поле в личных сообщениях
, сделала его в виде ссылки на сущность, представление ссылки создала новое для этого
. В Итоге получилось вот, что
:
из представления страницы с объявлением при переходе по ссылке личное сообщение в поле название ничего не передается, поле стало редактируемым, что не совсем верно в нем есть возможность выбрать название объявление методом выбора из представленных вариантов, что тоже не совсем корректно, так-как нужно, чтобы по умолчанию отображалось название того объявления из которого перешел пользователь по ссылке и чтобы его не возможно было редактировать.

Что я делаю не так?

Аватар пользователя sas@drupal.org sas@drupal.org 23 мая 2020 в 12:01

Поле в форме надо сделать скрытым в настройках, а в ссылке передать аргумент для заполнения по ключу поля используемого на странице формы см. примеры в README.md модуля и ещё больше примеров в USAGE.md

Аватар пользователя rukoved rukoved 23 мая 2020 в 17:02

sas@drupal.org wrote: USAGE.md

- это где?
в README.md нет об этом ни слова. Все настройки прошерстила.
Я имею ввиду вот этот модуль private_message
Поля там не выводятся во вьюсе, только сущностями через глобальное представление в виде блока вставляю. И форма там в виде сущности, поле можно добавить новое, отключить но не скрыть, либо я что-то не знаю.

Аватар пользователя sas@drupal.org sas@drupal.org 23 мая 2020 в 19:24

Спецом для Вас настроил приватный мессадж на тесте, работает как и положено
название поля field_article
ссыль на создание
http://d8p73.sas/private_message/create/?edit[field_article][widget][0][target_id]=2

Аватар пользователя rukoved rukoved 24 мая 2020 в 10:43

Здравия sas@drupal.org!
Я окончательно запуталась...

Если не трудно, уточните пожалуйста:
1. Какой тип указать полю при добавлении в материал приватных сообщений - Перезапись основного поля? Тогда какой тип связи указать для этого поля ссылки? Если выбрать представление на основе ссылок сущности то его надо предварительно создать..

У меня стоит модуль токен для значения по умолчанию но там можно ввести только токен, а не ссылку с запросом.

Если создать простое текстовое поле то можно поставть значение по умолчанию.
Ставлю туда https://xxxxx.ru/private_message/create/?edit[field_article][widget][0][...
Отключаю поле в материале приватных сообщений, но что дальше, я не понимаю? Как показать это поле на странице прив. сообщений, т.е. как правильно его вывести во вьюс и переопределить? Это значит нужно создать еще 1 поле для переопределения?
Что означает следующая переменная [target_id]=2 ?
Что значит - "используйте токены для умолчательной инициалиции." ?

Аватар пользователя sas@drupal.org sas@drupal.org 25 мая 2020 в 7:47

rukoved wrote: 1. Какой тип указать полю при добавлении в материал приватных сообщений - Перезапись основного поля?

Entity reference

rukoved wrote: Отключаю поле в материале приватных сообщений, но что дальше, я не понимаю?

Не надо для private_message

rukoved wrote: как правильно его вывести во вьюс и переопределить? Это значит нужно создать еще 1 поле для переопределения?

В поле на создание приватного сообщения надо добавить гет
как сказано в README для ссылки на материал
как написано в USAGE.md
Pre-populate an entity reference field:
`http://www.example.com/node/add/page?edit[field_entity_reference][widget...`

rukoved wrote: Что означает следующая переменная [target_id]=2 ?

Это идер материала который надоВы хотите чтобы попал в поле ссылки на материал

rukoved wrote: Что значит - "используйте токены для умолчательной инициалиции." ?

Не надо для private_message

Аватар пользователя rukoved rukoved 26 мая 2020 в 13:41

у меня возникло подозрение, что у нас разные исходные данные, либо я ищу у себя то чего нет в моей сборке, я имею ввиду модуля может у меня нет какого-то...

Вы на 8-й версии друпал это испытывали? Ранее на 7-й версии я как-то делала подобное с полями и у меня не возникало вопросов, проблемы появились с 8-й версией, модуль Entity revision работает немного иначе.

Дело в том, что еntity reference - такого типа поля нет в друпал 8, есть Entity revision.

Для того, чтобы добавить поле в приватные сообщения:
1-й вариант. Я выбираю тип поля Entity revision, далее Другое и там нет перезаписываемого поля, есть поле для перезаписываемого токена, в него ссылку с запросом не поставить. Есть возможность выбрать ссылку на сущность из представления, это значит поле с запросом надо создать в новом представлении, но у меня это не сработало.

2-й вариант. Я вибираю тип - Ссылка и далее Перезапись основного поля, но там нет поля для перезаписи - есть предложение применить тип ссылки и выбрать ее опять из представления...

3-й вариант. я вибираю тип - Ссылка и далее Content, там нет поля для перезаписи - есть предложение применить тип ссылки и выбрать ее из представления и поле добавить аргументы.

Далее..
У меня ссылка на личное сообщение находится в представлении страницы, которое выводится на странице (объявление) выведена она строкой запроса - /private-message/create?recipient={{ uid }}&t={{ title }} - заголовок я сейчас получаю в строке браузера, но у меня не получается его запросить в поле с названием, т.е. загрузка следующей страницы (форма с приват-м. сообщением) должна получить заголовок (объявления) с предыдущей страницы.

Аватар пользователя sas@drupal.org sas@drupal.org 26 мая 2020 в 14:05
rukoved wrote: Вы на 8-й версии друпал это испытывали?

Да

rukoved wrote: Дело в том, что еntity reference - такого типа поля нет в друпал 8, есть Entity revision.

Конечно есть и то и другое

Выбираете типа entity reference например на материал, и его значение при использовании приватного сообщения заполняется из гета урла

rukoved wrote: но у меня не получается его запросить в поле с названием, т.е. загрузка следующей страницы (форма с приват-м. сообщением) должна получить заголовок (объявления) с предыдущей страницы.

В урл формы приватного сообщения передавайте то что надо, как написано в модуле prepopulate

Аватар пользователя rukoved rukoved 26 мая 2020 в 21:41

То, что было представлено на примере ранее, работает только если выбрать значение в поле самостоятельно, путем выбора руками, но автоматически при переходе на страницу сообщений оно не заполняется.

Есть ли какой-то иной способ предварительно заполнить поле значением из предыдущего материала?

Аватар пользователя rukoved rukoved 26 мая 2020 в 22:39

Путем мучительных поисков обнаружила причину проблемы.

При таком варианте загрузка данных в поле происходит как положено, но без возможности автоматически определить автора объявления.
https://ххххх.ru/ru/private-message/create?edit[field_t][widget][0][target_id]={{ nid }}

Так-как я произвожу загрузку страницы с личным сообщением непосредственно автору объявления, я должна указывать ссылку на запрос автора в виде:
https://ххххх.ru/ru/private-message/create?recipient={{ uid }}/?edit[field_t][widget][0][target_id]={{ nid }} - где получается некорректный двойной запрос, который не срабатывает.

Мне не ясно каким образом можно это исправить? Я думаю ответ совсем рядом, но от меня он еще ускользает)))

Аватар пользователя rukoved rukoved 26 мая 2020 в 23:10

Вопрос решила! Yahoo
Правильная ссылка выглядит вот так.
https://ххххх.ru/ru/private-message/create?recipient={{ uid }}&edit[field_t][widget][0][target_id]={{ nid }}

Благодарю за поддержку sas@drupal.org, не знаю имени!

Аватар пользователя rukoved rukoved 27 мая 2020 в 13:06

Потестила то, что есть, делюсь результатами - выяснилось, что созданное поле с названием объявления создается, заполняется но не сохраняется, т.е. оно есть при создании объявления, но при переходе в чат и отправке других объявлений происходит такой сбой:
1. Само поле с названием объявления отображается до тех пор пока не почистится кеш или пользователь не пожелает создать новое сообщение, далее оно исчезает.
В самом чате появляется название при переходе но странно - т.е. само название и под ним снова новое поле, чтобы его создать для следующего сообщения автору того-же объявления, получается, что при создании сообщения само название не сохраняется в базу и в чате его снова нужно при каждом новом сообщении заводить руками из списка выбора из этого поля.
2. У приват мес есть блоки (история сообщений) по которым можно перейти на страницу с сообщениями в разные ветки, так вот при переходе между сообщениями пользователей, соответственно поле с названием так-же исчезает.

Проверила что сохраняется в базе и вижу, что само поле с названием объявления появляется но названия нет.
Приложу скрины.

Аватар пользователя rukoved rukoved 27 мая 2020 в 13:59

Да и забыла еще один важный момент указать - получается так, что к одному автору сообщения по разным объявлениям летят в одну ветку. Вообщем данный модуль хорош для упрощенного общения меж пользователями, под другие цели его придется модифицировать.

Аватар пользователя rukoved rukoved 28 мая 2020 в 21:05

Добрый вечер, я пробовала ставить такой модуль, но отключила, ошибки пошли и в итоге пришлось откатить базу данных, чтобы сайт вернуть. Подозреваю несовместимость с модулем сообщений - Message UI, удалить который не получается, так-как при попытке его удалить сайт падает.