Замена вывода, в опубликованном материале, "кем опубликовано" с имени пользователя на дополнительное поле

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

Аватар пользователя maxim_al maxim_al 9 февраля 2023 в 0:50

В настоящий момент времени при опубликовании материала на сайте, вверху материала выводится "Опубликовано <Пользователь> <дата время>".
Добавил в админке обязательное поле "Подразделение".
Теперь надо решить задачу как в выводимой информации выдавать не имя пользователя, а значение поля "Подразделение" автора материала.
Прошу подсказать как это сделать.

Комментарии

Аватар пользователя ivnish ivnish 9 февраля 2023 в 6:07

Сначала в препроцессе готовим переменную с нужным значением, потом в шаблоне ноды выводим вместо submitted эту переменную

Аватар пользователя maxim_al maxim_al 9 февраля 2023 в 7:39

Прошу направить более подробно.
В препроцесс готовить переменную, это вот тут:
core/includes/theme.inc::function template_preprocess_field?
Шаблон ноды - это twig-файл?

Аватар пользователя maxim_al maxim_al 9 февраля 2023 в 8:11

создал поле (текстовое) для пользователя, метка Отдел, машинное имя field_otdel
вставил в core/includes/theme.inc::function template_preprocess_field

$variables['field_otdel'] = $element['#field_otdel'];

При обновлении страницы куча ошибок:

Notice: Undefined index: #field_otdel in template_preprocess_field() (line 1571 of core/includes/theme.inc).

Видимо что-то не то делаю.
Прошу подсказать.

Аватар пользователя ivnish ivnish 9 февраля 2023 в 8:51

Нужно препроцессить не поле, а ноду, то есть использовать *_preprocess_node. Нужно из объекта ноды достать значение поля field_otdel и передать его в переменную, например $variables['field_otdel']. Чисто теоретически можно покопаться в объекте ноды прямо в шаблоне, но лучше всё таки в препроцессе.

Код нужно писать в кастомном модуле или в файле *.theme темы оформления

Затем в twig шаблоне ноды node.html.twig нужно вывести эту переменную в нужном месте

Аватар пользователя marassa marassa 9 февраля 2023 в 12:41

А зачем тут вообще программировать когда всё мышкой накликивается? Ненужное поле из дисплея убрал, нужное добавил - всего и делов.

Аватар пользователя marassa marassa 10 февраля 2023 в 8:35

Пардон, это модуль Display Suite позволяет убирать/добавлять/двигать системные поля мышкой. Без него не получится, а добавлять его на уже работающий/сверстанный сайт себе дороже выйдет. Слушайте что @ivnish говорит.

Аватар пользователя maxim_al maxim_al 10 февраля 2023 в 3:01

ivnish wrote: Код нужно писать в кастомном модуле или в файле *.theme темы оформления

а вот с этим какая то путаница... походу разработчик когда верстал сайт, сделал это как то не стандартно (по крайне мере я не вижу файлов с названием темы что видна в админке). Я вижу несколько *.theme файлов, но это всё по темам которые не используются... блин, как можно посмотреть какой файл *.theme используется (какой то конфиг или через админку)?

Аватар пользователя maxim_al maxim_al 10 февраля 2023 в 9:58

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