Использование изображений в пользовательском модуле (не через css)
Я создаю модуль слайдера flex, и ему нужно просто статически загрузить некоторые изображения, единственный способ, которым я смог получить какие-либо изображения, был, когда я использовал относительный путь в фоновом изображении: url (относительный путь к изображению) в файле css, но я не заинтересован в его загрузке через css.
Если я попытаюсь получить к нему относительный доступ из шаблона, используя <img src="relative-path-to-image">
, это, конечно, не сработает, потому что тег src
загружается на клиент. Я немного посмотрел на система шаблонов, и я могу использовать переменную {{directory}} внутри twig, чтобы, возможно, получить правильный абсолютный путь к изображениям. Но я просто чувствую, что даже если бы я сделал эту работу, это все равно было бы катастрофой.
Итак, мой вопрос: если вам нужно добавить тег и указать ему путь src к изображению, каково ваше решение, чтобы сделать это изображение доступным?
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) }}" />
Здесь вы можете закодировать цикл веточек для доступа к нескольким изображениям в поле.