Рейтинг:2

Как получить текст описания из поля метатега

флаг jp

Тип контента в моем экземпляре Drupal 9 использует модуль Metatag. Я хочу извлечь значение метатега «описание» и включить его в шаблон ветки (для узла).

Но когда я смотрю на доступные переменные, это выглядит так: field_metatag содержит PHP сериализовать()-ред код.

Я хочу сделать что-то вроде

<div class="the-description">
  {{ node.field_metatag.description|e('html') }}
</div>
Рейтинг:3
флаг ne

Вы можете получить сериализованные данные через node.field_metatag.value.

Но, кажется, нет готового unserialize Filter для Twig. И теги скрыты от узла, потому что вместо этого они должны использоваться на уровне страницы. Таким образом, вы либо сами пишете фильтр unserialize, либо выполняете предварительную обработку описания в шаблоне.

Я обнаружил, что следующий предварительный процесс работает.

/**
 * Реализует template_preprocess_node().
 */
функция MYTHEME_preprocess_node(&$variables) {
  $узел = $переменные['узел'];

  $tags = \Drupal::service('metatag.manager')
    ->tagsFromEntityWithDefaults($node);

  если (!пусто($теги['описание'])) {

    $description = \Drupal::service('metatag.token')
      ->replace($tags['описание'], ['узел' => $узел]);

    $variables['my_description'] = strip_tags($description);
  }
}
{% если мое_описание %}
  {{моё_описание}}
{% конец%}

Соус: https://imalabya.co/fetch-metatags-programmatically-drupal

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.