Метатег Description в зависимости от значения поля

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

Аватар пользователя dragondesign dragondesign 20 ноября в 20:51

Здравствуйте,
есть такая дилемма, выводить в метатег Description значение в зависимости от значения поля.
Есть поле Description, если оно заполнено - то выводить это значение. А если оно пустое, то выводить краткое содержание из текста.
Сейчас у меня в модуле Metatag вот такое значение стоит: [node:field_descript:value][node:summary]
Но это неправильно. Если поле постое. то все ок. А если заполнено, то идет сначала значение Поля а потом к нему еще и суммируется node:summary.
Как сделать правильно?

Может через хук?:
function bartik_page_attachments_alter(array &$page) {
$description = array(
'#type' => 'html_tag',
'#tag' => 'meta',
'#attributes' => array(
'name' => 'description',
'content' => 'your description content',
),
);
$page['#attached']['html_head'][] = [$description, 'description'];
}
Но я так подозреваю, внутри хука не будет информации о field_descript и node:summary...

Прошу помочь.

Лучший ответ

Аватар пользователя gun_dose gun_dose 21 ноября в 15:09

Обращайтесь к ней на "вы" и по имени-отчеству Biggrin Например так:

<?php
$summary 
$context['entity']->body->summary;
?>

Комментарии

Аватар пользователя dragondesign dragondesign 21 ноября в 12:03

1. [node:summary] нужен, т.к. поле field_desript не везде заполнен, вернее заполнен в менее чем 15% документов. Везде его заполнить адский ручной труд, нод на сайте более 10 тыс. Поэтому там где это поле пустое, просто тупо выводиться [node:summary]
2. А как? Как получить данные [node:summary] и [node:field_descript:value] в нем?

Аватар пользователя gun_dose gun_dose 21 ноября в 12:44

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

Аватар пользователя dragondesign dragondesign 21 ноября в 14:44

Да, это я прочитал, но как мне обратиться к этой сущности?
PS: наверное это немного туповатый вопрос, я просто не знаю как это сделать Unknw Может укажете хотя бы направление, где есть примеры такого обращения. Буду премного благодарен Yes 3

Аватар пользователя dragondesign dragondesign 22 ноября в 11:04

Всем большое спасибо! Очень помогли.
В общем получилось вот так, может кому еще поможет. Из темы не работает, только из модуля:

<?php
function youmodulename_metatags_alter(array &$metatags, array &$context) {
    
$entity $context['entity'];
    
if (isset(
$entity->field_descript->value)) {
    
$metatags['description'] = $entity->field_descript->value;
}
}
?>

Здесь поле field_descript - это поле в которое вы вставляете текст для Description, если поле пустое то там просто в модуле метатег прописано [node:summary].