Я хочу вывести строку JSON как часть атрибута данных в теге HTML для шаблона в Drupal 7. Я не могу понять, почему это не работает (идеально работает в 8+).
Мне нужно перечислить набор URL-адресов изображений и размеров мультимедиа, которые позже анализируются Javascript.
В шаблоне.php:
$variables['background_images'] = [];
$переменные['background_images'][] = [
'srcset' => 'https://placeimg.com/1600/600/tech, https://placeimg.com/3200/1200',
'media' => '(мин. ширина: 100rem)',
];
$переменные['background_images'][] = [
'srcset' => 'https://placeimg.com/1600/600/tech, https://placeimg.com/3200/1200',
'media' => '(мин. ширина: 48rem)',
];
$variables['background_images'] = json_encode($variables['background_images']);
В tpl-файле:
<div data-background="<?php print $background_images; ?>"></div>
Результатом является смешанный набор проблем в браузере. URL-адреса экранированы, и двойных кавычек гораздо больше, чем я ввел:
data-background="[{" srcset":"https:\="" \="" placeimg.com\="" 1600\="" 600\="" технология,="" https:\="" 3200\="" 1200","носитель":"(мин-ширина:="" 100rem)"},{"srcset":"https:\="" 48rem)"}]"
Я не могу понять, почему на клавишах есть дополнительный интервал или почему он убегает рано и ломает остальную часть.Это выглядит правильно (для меня) с xdebug, но когда он печатается в браузере, это неправильно.
Второй способ, который я также пробовал (создать пример данных):
$элементы = [];
для ($x = 0; $x < 3; $x++) {
$items[$x] = [
'srcset' => 'https://placeimg.com/1600/600/tech, https://placeimg.com/3200/1200',
'media' => '(мин. ширина: 100rem)',
];
}
$variables['background_images'] = drupal_json_encode($items);