Drupal 8 тема bartik Помогите сделать изменить путь к картинкам с
<img src="/sites/default/files/2017/monastir.jpg">
на
<img src="http://mydomain.ru/sites/default/files/2017/monastir.jpg">
на
Которое выводиться полем field-golovne-foto
Примерно нашел что генерирует файл шаблона image-style.html.twig который лежит /core/themes/classy/templates/field
Но так и не получилось там реализовать.
Долго искал и понял что путь к картинкам генерирует код :
<?phpfunction template_preprocess_image(&$variables) {
if (!empty($variables['uri'])) {
$variables['attributes']['src'] = file_url_transform_relative(file_create_url($variables['uri']));
}
// Generate a srcset attribute conforming to the spec at
// http://www.w3.org/html/wg/drafts/html/master/embedded-content.html#attr-img-srcset
if (!empty($variables['srcset'])) {
$srcset = array();
foreach ($variables['srcset'] as $src) {
// URI is mandatory.
$source = file_url_transform_relative(file_create_url($src['uri']));
if (isset($src['width']) && !empty($src['width'])) {
$source .= ' ' . $src['width'];
}
elseif (isset($src['multiplier']) && !empty($src['multiplier'])) {
$source .= ' ' . $src['multiplier'];
}
$srcset[] = $source;
}
$variables['attributes']['srcset'] = implode(', ', $srcset);
}
foreach (array('width', 'height', 'alt', 'title', 'sizes') as $key) {
if (isset($variables[$key])) {
// If the property has already been defined in the attributes,
// do not override, including NULL.
if (array_key_exists($key, $variables['attributes'])) {
continue;
}
$variables['attributes'][$key] = $variables[$key];
}
}
}?>
что лежит в файле theme.inc по пути /core/includes
Примерно понял что нужно изменить переменую в коде:
<?phpif (!empty($variables['uri'])) {
$variables['attributes']['src'] = file_url_transform_relative(file_create_url($variables['uri']));
}?>
Читал документацию но так и не понял как , помогите пожалуйста .
Комментарии
День добрый, нужно скопировать эту функцию в файл bartik.theme, он в этой теме уже имеется и убрать вызов функции file_url_transform_relative которая собственно и отвечает за преобразование абсолютного пути в относительный. Функция примет вид:
<?php
function bartik_preprocess_image(&$variables) {
if (!empty($variables['uri'])) {
$variables['attributes']['src'] = file_create_url($variables['uri']);
}
// Generate a srcset attribute conforming to the spec at
// http://www.w3.org/html/wg/drafts/html/master/embedded-content.html#attr-img-srcset
if (!empty($variables['srcset'])) {
$srcset = array();
foreach ($variables['srcset'] as $src) {
// URI is mandatory.
$source = file_url_transform_relative(file_create_url($src['uri']));
if (isset($src['width']) && !empty($src['width'])) {
$source .= ' ' . $src['width'];
}
elseif (isset($src['multiplier']) && !empty($src['multiplier'])) {
$source .= ' ' . $src['multiplier'];
}
$srcset[] = $source;
}
$variables['attributes']['srcset'] = implode(', ', $srcset);
}
foreach (array(
'width', 'height', 'alt', 'title', 'sizes') as $key) {if (isset($variables[$key])) {
// If the property has already been defined in the attributes,
// do not override, including NULL.
if (array_key_exists($key, $variables['attributes'])) {
continue;
}
$variables['attributes'][$key] = $variables[$key];
}
}
}
?>
Не забываем чистить кэш. Кстати эта функция там не просто так, как написано в документации могут быть проблемы при использовании HTTPS + HTTP, нужно это учесть.
Огромное спасибо, теперь выводиться полный путь, https буду делать позже, сделаю заметку чтоб не забыть, если чесно то я в шоке как я был близок к решению проблемы.