без пользовательского программирования
Вы можете сделать это без специального кодирования.Для этого вы можете использовать любой из следующих модулей field_token_value или computed_field .
Они оба создают поле, не предоставляя пользователю текстовое поле для ввода какого-либо значения.Значение таких полей рассчитывается из предопределенных правил / пользовательских кодов / токенов, определенных для каждого поля.
из вашей пользовательской темы
Самый простой способ - сделать это на слое theming
и не сохранять это значение в базе данных.Вы должны использовать hook_preprocess_node
в своем THEMENAME.theme
function THEMENAME_preprocess_node(&$variables){
//install debug and kint to be able to use
//kint($variables);
$node = $variables["node"];
if($node->getType() == "CONTENTTYPE" && $node->hasField('field_date')){
//get date value something like "2018-09-07T21:35:30"
$date = $node->field_date->value;
//your logic and age calculations
// ...
$age = 35;
//set variable to use in node.html.twig based templates
$variables["person_age"] = $age;
}
}
Чтобы получить больше информации о том, что доступно, установите модуль отладки и включите kint (который является частью отладки), чтобы иметь возможность видеть переменныеиспользуя kint
функцию
, чем скопируйте node.html.twig
из вашей пользовательской темы (или родительской темы, или классной базовой темы) в папку THEMENAME/templates
и переименуйте ее node--CONTENTTYPE.html.twig
.
Здесь вы можете включить переменную, которую вы только что создали в proprocess.
person age: {{ person_age }}
Убедитесь, что вы очистили кэш для всех этих изменений, которые будут видеть Drupal.
ДЛЯ ДОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИИ
Чтобы узнать, какие шаблоны веток следует переопределить, см. здесь Подробнее о ветке и получении доступных переменных Получение дополнительной информации о том, какая веткаИспользуемый шаблон также можно получить, включив режим отладки по предыдущей ссылке.
Я бы посоветовал вам взять книгу по разработке drupal, чтобы понять все эти концепции более конкретно.