Quiero crear mi bloque personalizado con contenido personalizado en Drupal 8, al principio creo un bloque con solo texto simple y funciona correctamente, mi problema es cómo puedo pasarle mi variable personalizada. Vi un tutorial al respecto, mi nombre de Módulo es tcdevy este es el contenido del .modulearchivo.
function tcdev_theme($existing, $type, $theme, $path) {
return array('tcdev' =>
array(
'variables' => array(
'title' => 'Default title',
'description' => null
),
'template' => 'block--sliderblock'
)
);
}
y mi SliderBlock.php
namespace Drupal\tcdev\Plugin\Block;
use Drupal\Core\block\BlockBase;
/**
* Provides a 'SliderBlock' block.
*
* @Block(
* id = "slider_block",
* admin_label = @Translation("Slider Block"),
* )
*/
class SliderBlock extends BlockBase{
/**
* {@inheritdoc}
*/
public function build(){
return array(
'#title' => 'my title ',
'#description' => 'my custom desc'
);
}
}
y finalmente mi archivo de plantilla block--sliderblock.html.twig
<h2>My Custom Block{{ title }}-{{ description }}</h2>
Pero el resultado es solo "My Custom Block-". El problema es que las variables no se pasan al archivo de plantilla, ¿dónde está mi culpa?
aprecio cualquier ayuda

block--sliderblock.html.twig, el problema es cómo pasarle mi variable. ¿Qué me sugieres según mi código? ? tnx por su atenciónblock--sliderblock.html.twigprocesado, porque usaste el nombre de una sugerencia de tema, esto se procesaría incluso si el bloque estuviera totalmente vacío, puedes probar esto)block--sliderblock.html.twigy no le pasé nada. Habilito la información de depuración y la información de depuración es<!-- END OUTPUT from 'themes/bootstrap/templates/block/block--system-branding-block.html.twig' <!-- FILE NAME SUGGESTIONS: x block--sliderblock.html.twig * block--slider-block.html.twig * block--tcdev.html.twig * block.html.twig --> <!-- BEGIN OUTPUT from 'themes/gttc_2016/templates/block--sliderblock.html.twig' --> <h2>Block-</h2>block--sliderblock.html.twig. Esta plantilla funciona con su propio conjunto de variables. (Si desea utilizar esta rama, tendrá que copiarla del tema principal o base y luego verá qué variables hay dentro). Sus variables establecidas en la matriz de representación de la función de compilación terminarán entcdev.html.twig. ¿Creaste este archivo de ramita?Así que descubrí que desea sobrescribir una plantilla de bloque predeterminada con una plantilla de bloque (módulo) personalizada, y luego pasarle las variables, primero debe asegurarse de sobrescribir su plantilla correctamente porque parece que su plantilla de bloque actual ha salido de su Directorio de temas (no módulo):
Para hacer esto primero, debe crear un directorio llamado
templates/en la raíz de sus módulos y luego colocar su plantilla allí.Ahora dígale a Drupal que almacena la plantilla en su módulo. en
your_module.moduleagregar esta función:Finalmente, tenga cuidado sobre dónde coloca su archivo de ramita y cómo lo nombra. Cree un directorio de plantillas en el directorio de su módulo y reemplace el
_nombre de la función en el tema con-:mymodule-block.html.twigNo te olvides de borrar el caché.
Con la ayuda de la respuesta escrita
Nicensinen esta publicación:Drupal 8 custom block (module) crea un archivo de plantilla de ramita
fuente
Llegué a este punto también. Las variables no parecen pasar a la plantilla de bloque. Tengo casi el mismo código que usted, en mi caso habilité la depuración de ramitas y deshabilité el caché en services.yml. Incluso borrando la memoria caché estaba teniendo este problema, pero me resolvieron una vez que activé esta configuración en mi entorno de desarrollo.
fuente