Использование изображений в пользовательском модуле (не через css)


Я создаю модуль слайдера flex, и ему нужно просто статически загрузить некоторые изображения, единственный способ, которым я смог получить какие-либо изображения, был, когда я использовал относительный путь в фоновом изображении: url (относительный путь к изображению) в файле css, но я не заинтересован в его загрузке через css.

Если я попытаюсь получить к нему относительный доступ из шаблона, используя <img src="relative-path-to-image">, это, конечно, не сработает, потому что тег src загружается на клиент. Я немного посмотрел на система шаблонов, и я могу использовать переменную {{directory}} внутри twig, чтобы, возможно, получить правильный абсолютный путь к изображениям. Но я просто чувствую, что даже если бы я сделал эту работу, это все равно было бы катастрофой.

Итак, мой вопрос: если вам нужно добавить тег и указать ему путь src к изображению, каково ваше решение, чтобы сделать это изображение доступным?

 4
Author: kiamlaluno, 2015-12-17

1 answers

Если вы хотите получить доступ к изображениям в папке модуля:

Функция предварительной обработки (предполагающая страницу, но может быть любым другим шаблоном):

mymodule.module:
function mymodule_preprocess_page(&$variables) {
  global $base_root, $base_path;
  $variables['image1'] = $base_root . $base_path . drupal_get_path('module', 'mymodule') . '/images/' . $image1;
}

Веточка:

<img src="{{ image1 }}" />

Я не знаю вашей логики для нескольких изображений, я думаю, вам нужно закодировать цикл для этого.

Но доступ к статическим изображениям в папке модуля не является способом cms для этого, я бы поместил изображения в узел. Для этого вы можете создать тип контента "слайдер", а затем получить доступ к абсолютному пути изображения поле:

Веточка:

<img src="{{ file_url(slider_node.field_slider_image.0.entity.uri.value) }}" />

Здесь вы можете закодировать цикл веточек для доступа к нескольким изображениям в поле.

 4
Author: 4k4, 2015-12-18 10:58:26