Eu quero criar meu bloco personalizado com conteúdo personalizado no Drupal 8, no começo eu crio um bloco com apenas um texto simples e funciono corretamente, meu problema é como posso passar minha variável personalizada para ele? Eu vi algum tutorial sobre isso, meu nome do módulo é tcdev
e esse é o conteúdo do .module
arquivo.
function tcdev_theme($existing, $type, $theme, $path) {
return array('tcdev' =>
array(
'variables' => array(
'title' => 'Default title',
'description' => null
),
'template' => 'block--sliderblock'
)
);
}
e meu 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'
);
}
}
e finalmente meu arquivo de modelo block--sliderblock.html.twig
<h2>My Custom Block{{ title }}-{{ description }}</h2>
Mas o resultado é apenas "Meu bloco personalizado". O problema é que as variáveis não são passadas para o arquivo de modelo. Onde está minha culpa?
agradeço qualquer ajuda
block--sliderblock.html.twig
, renderizado, o problema é como passar minha variável para ela !!!? o que você sugere para mim de acordo com meu código? ? tnx pela atençãoblock--sliderblock.html.twig
Prestados, porque você usou o nome de uma sugestão de tema, este tornaria mesmo que o bloco seria totalmente vazia, você pode tentar este)block--sliderblock.html.twig
e nada passou para ele. Eu permitir que informações de depuração e informações de depuração é<!-- 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
. Este modelo trabalha com seu próprio conjunto de variáveis. (Se você quiser usar esse galho, precisará copiá-lo do tema principal ou base e depois ver quais variáveis estão dentro). Suas variáveis definidas na matriz de renderização da função de compilação serão finalizadastcdev.html.twig
. Você criou esse arquivo galho?Como descobri, você deseja sobrescrever um modelo de bloco padrão por um modelo de bloco (módulo) personalizado e depois passar suas variáveis para ele. Antes de tudo, certifique-se de sobrescrever seu modelo corretamente, porque parece que o seu modelo de bloco atual é gerado pelo seu Diretório de temas (não módulo):
Para fazer isso primeiro, você deve criar um diretório chamado
templates/
na raiz de seus módulos e, em seguida, colocar seu modelo lá.Agora informe ao Drupal que você armazena o modelo em seu módulo. em
your_module.module
adicionar esta função:Finalmente, tenha cuidado com o local onde você coloca seu arquivo de galho e o nome dele. Crie um diretório de modelos no diretório do módulo e substitua o
_
nome da função de tema por-
:mymodule-block.html.twig
Não se esqueça de limpar o cache.
Com a ajuda da resposta escrita por
Nicensin
neste post:Drupal 8 bloco personalizado (módulo) criar arquivo de modelo de galho
fonte
Também cheguei a esse ponto. As variáveis não parecem ser passadas para o modelo de bloco. Eu tenho quase o mesmo código que você; no meu caso, ativei a depuração do galho e desabilitei o cache no services.yml. Mesmo limpando o cache, eu estava tendo esse problema, mas foi resolvido depois que eu ativei essa configuração no meu ambiente de desenvolvimento.
fonte