2015-12-15 2 views
0

Я делаю свою собственную тему drupal 8. Это первый раз, когда я использую drupal. Но у меня есть следующая проблема: я хотел бы показать изображение статьи как фоновое изображение. В Drupal 7 (я нашел) вы могли бы сделать это со следующим препроцессором, но как вы достигаете этого в drupal 8?Drupal 8 img как backgroundimage

function THEME_preprocess_page(&$vars) { 
$node = menu_get_object('node'); 
if (!empty($node) && !empty($node->field_background_image)) { 
    $image = file_create_url($node->field_background_image[LANGUAGE_NONE][0]['uri']); 
    drupal_add_css('div#content {background: url(' . $image . ') no-repeat scroll center center/cover #FCFCFC; }', array('type' => 'inline')); 
} 
} 

Спасибо

ответ

0

Добавление встроенного CSS или JS можно achived путем добавления ключа '#attached' к вашей визуализации массива.

$elemnt['#attached']['css_inline'] = // Your css 

См https://www.drupal.org/node/2391025

Если вы используете прут для шаблонирования вы можете передать URL изображения в качестве переменной с й $ вары массив и использовать его в в шаблоне.

Во всяком случае, drupal_add_css и функция drupal_add_js не availablein Drupal 8

0

Вы должны написать этот код в файле theme_name.theme. Это то же самое, как template.php в Drupal 7

function THEME_preprocess_page(&$vars) { 
    $node = Drupal::request()->attributes->get('node'); 
    if($node){ 
    if ($node->bundle() == "articles")) { // Content type check 
     $uri = $node->field_background_image->entity->getFileUri(); 
     $image = file_create_url($uri); // Creating file path from uri 
     $vars['articles'] = true; // Setting value true for current node is articles. 
     $vars['background_img'] = $image; 
    } 
    } 
} 

Теперь в вашем page.twig.html

{% if blog %} // Accessing the blog variable from $vars 
    <div style="background: url({{ background_img }})"> // Accessing the background_img variable from $vars 
    // Other content 
    </div> 
{% endif %} 

Не забудьте очистить кэш! Надеюсь, это поможет!