Блок заголовка страницы Drupal

Сегодня попробовал добавить image_field в блок «Заголовок страницы».

Не знаю, возможно ли это?

Если это невозможно, можно ли добавить field_image в шаблон веточки?

Тнкс.


person C. MARTIN    schedule 16.09.2017    source источник
comment
Все возможно. Можете показать код, который вы пробовали?   -  person Alvin Bunk    schedule 17.09.2017
comment
Я только что пробовал использовать веточку вот так: {{node.field_image.title}} (заголовок для проверки), только в поле - узел - title.html.twig. Я не знаю, лучший ли это способ сделать это ... Спасибо за быстрый ответ;)   -  person C. MARTIN    schedule 17.09.2017
comment
Я только что понял, что вы используете Drupal. Я не знаком с Drupal. Может еще кто что подскажет?   -  person Alvin Bunk    schedule 17.09.2017
comment
Вы пробовали просто content.field_image?   -  person Webdrips    schedule 17.09.2017
comment
Да, я пробовал, и это не сработало ...   -  person C. MARTIN    schedule 18.09.2017
comment
Шаблон заголовка страницы не имеет прямого доступа к другим полям, кроме заголовка. Поэтому лучше всего написать функцию предварительной обработки и добавить нужное поле как часть переменных.   -  person Althaf M    schedule 19.09.2017


Ответы (1)


Приведенное ниже может вам помочь. Сначала я добавляю предложение темы для page_title, чтобы я мог контролировать место, где мне нужно перебрать шаблон. Я добавляю node_type - как суффикс к шаблону.

Затем я добавляю функцию предварительной обработки - убедитесь, что вы заменили подпись на тип, который вы хотите, «новости» в конце должны быть заменены вашим типом контента из первой функции.

Во второй функции я получаю поле под названием subtitle и добавляю значение в переменные, чтобы оно было доступно в шаблоне.

function mytheme_theme_suggestions_alter(array &$suggestions, array &$variables, $hook) {
  if($hook === 'page_title') {
    if($node = \Drupal::routeMatch()->getParameter('node')){
        $node_type = $node->getType();
        // suggestion must use _ and __ as per convention.
        $suggestions[] = 'page_title__'.$node_type;
    }
  }
}


function mytheme_preprocess_page_title__news(&$variables) {

  if ($node = \Drupal::routeMatch()->getParameter('node')) {
    try {
      if ($node->get('field_subtitle') && !$node->get('field_subtitle')->isEmpty()) {
        $variables['sub_title'] =
          $node->get('field_subtitle')
            ->get(0)
            ->get('value')
            ->getValue();
      }
    }catch(Exception $e){

      \Drupal::logger('mytheme')->error($e);
    }
  }
}

Теперь в шаблоне вы увидите sub_title, доступный в файле шаблона, в моем случае это был заголовок страницы - news.html.twig - скопированный из page-title.html.twig и добавленный соответствующей переменной.

person Althaf M    schedule 19.09.2017
comment
Чтобы добавить указанные выше функции, они должны быть в вашем файле mytheme.theme. - person Althaf M; 19.09.2017
comment
Привет, я попытался использовать вашу функцию с некоторыми изменениями, чтобы адаптироваться к моей теме. но когда я пытаюсь увидеть, что у меня есть в переменной (для вас 'sub_title') с помощью kint (), он говорит 'NULL' - person C. MARTIN; 20.09.2017
comment
Вы пробовали использовать саму функцию для значений переменных? правильно ли вы извлекаете значения из поля, значения поля изображения не имеют той же структуры, что и текстовое поле. В моем случае я получаю текстовое поле. - person Althaf M; 20.09.2017
comment
@ C.MARTIN Не могли бы вы также поделиться своим кодом? с доработками? - person Althaf M; 20.09.2017
comment
Привет, я только что изменил field_subtitle на field_image и sub_title на fimage. Я использую {{fimage}} для отображения того, что хочу. Я также заменил mytheme именем моей темы (таким же, как имя темы папки. (В функции и в catch). Я не могу опубликовать код ... - person C. MARTIN; 23.09.2017
comment
И сегодня я только что попробовал эту функцию Religv1_preprocess_test (& $ variables) {$ variables ['test'] = Access Ok; } И я использовал {{test}} для отображения Access Ok, это не работает ... - person C. MARTIN; 23.09.2017
comment
функция должна иметь подпись MODNAME_preprocess_page_title - person Althaf M; 24.09.2017
comment
Сначала вы можете попробовать общий препроцесс, например MODNAME_preprocess_page_title - затем вы можете добавить собственный шаблон и пользовательский препроцесс. - person Althaf M; 24.09.2017
comment
Хорошо, я попробовал это и получил результат с другой функцией: получить узел, получить целевой идентификатор field_image, загрузить файл и после того, как я смогу использовать Uri. Но мне не удалось создать поле с ‹img› (тег html). - person C. MARTIN; 24.09.2017