Digamos que deseamos pasar una variable form que contiene un script a un template, por ejemplo desde un bloque, entonces el código nos quedaría así:
class HubspotBlock extends BlockBase { public function build() { $field = ' <script charset="utf-8" type="text/javascript" src="//js.hsforms.net/forms/embed/v2.js"></script> <script> hbspt.forms.create({ region: "na1", portalId: "123456", formId: "f46a4f4a64df6a4644a4f6a" }); </script> '; return [ '#theme' => 'nombre_del_template_declarado_en_el_hook_theme', '#form' => $field, '#cache' => [ 'contexts' => [ 'url', ], ] ]; } }
* Si ponemos cache 0 ó sin cache en el bloque, tomar en cuenta que es script no se repoducirá en el template debido a que el módulo Bigpipe impedirá que se complete la carga del script.
* Por esa razón debemos poner una cache que se active sólo por rutas en nuesto boque
'#cache' => [
'contexts' => [
'url',
],
]
2. Y el template debería permitir que se admitan todas las etiquetas html poniendo un format full_html.
* En el caso de los scripts que no se reproducirán en los bloques, esta forma es suficiente y no necesitamos poner cache por contexts en la url.
{%
set form_hubspot = {
'#type': 'processed_text',
'#text': form,
'#format': 'full_html',
}
%}
<div class="form-hubspot">
{{ form_hubspot }}
</div>
Me pareció interesante el artículo
Añadir nuevo comentario