Vreau să scot un șir JSON ca parte a unui atribut de date pe o etichetă HTML pentru un șablon în Drupal 7. Pentru viața mea, nu îmi pot da seama de ce nu funcționează (funcționează perfect în 8+).
Trebuie să enumerez un set de adrese URL de imagini și dimensiuni media care sunt analizate de Javascript mai târziu.
În template.php:
$variables['imagini_de_fondul'] = [];
$variables['background_images'][] = [
'srcset' => 'https://placeimg.com/1600/600/tech, https://placeimg.com/3200/1200',
'media' => '(lățimea minimă: 100 rem)',
];
$variables['background_images'][] = [
'srcset' => 'https://placeimg.com/1600/600/tech, https://placeimg.com/3200/1200',
'media' => '(lățimea minimă: 48 rem)',
];
$variables['background_images'] = json_encode($variables['background_images']);
În fișierul tpl:
<div data-background="<?php print $background_images; ?>"></div>
Rezultatul este un amestec amestecat de probleme în browser. Adresele URL sunt eliminate și există mult mai multe ghilimele duble decât am introdus:
data-background="[{" srcset":"https:\="" \="" placeimg.com\="" 1600\="" 600\="" tech,="" https:\="" 3200\="" 1200","media":"(min-width:="" 100rem)"},{"srcset":"https:\="" 48rem)"}]"
Nu pot să-mi dau seama de ce există o spațiere suplimentară pe taste sau de ce scapă devreme și rupe restul.Mi se pare corect (mi se pare) cu xdebug, dar atunci când este tipărit în browser este greșit.
Am încercat și un al doilea mod (generați date exemplu):
$articole = [];
pentru ($x = 0; $x < 3; $x++) {
$articole[$x] = [
'srcset' => 'https://placeimg.com/1600/600/tech, https://placeimg.com/3200/1200',
'media' => '(lățimea minimă: 100 rem)',
];
}
$variables['background_images'] = drupal_json_encode($items);