Chcę utworzyć własny blok z niestandardową zawartością w Drupal 8, na początku tworzę blok z prostym tekstem i działam poprawnie, mój problem polega na tym, jak mogę przekazać do niego zmienną niestandardową? Widziałem kilka samouczków na ten temat, nazwa mojego modułu to tcdev
i to jest zawartość .module
pliku.
function tcdev_theme($existing, $type, $theme, $path) {
return array('tcdev' =>
array(
'variables' => array(
'title' => 'Default title',
'description' => null
),
'template' => 'block--sliderblock'
)
);
}
i mój 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'
);
}
}
i wreszcie mój plik szablonu block--sliderblock.html.twig
<h2>My Custom Block{{ title }}-{{ description }}</h2>
Ale wynikiem jest tylko „Mój blok niestandardowy”. Problem polega na tym, że zmienne nie są przekazywane do pliku szablonu, gdzie jest moja wina?
doceniam każdą pomoc
block--sliderblock.html.twig
renderowane, problem polega na tym, jak przekazać do niego moją zmienną !!!? co mi sugerujesz według mojego kodu. ? Dziękujemy za uwagęblock--sliderblock.html.twig
renderowane, ponieważ użyłeś nazwy sugestii motywu, renderowałoby to nawet, gdyby blok był całkowicie pusty, możesz spróbować)block--sliderblock.html.twig
i nic do niej nie przeszło. Włączam informacje o debugowaniu, a informacje o debugowaniu to<!-- 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
. Te szablony działają z własnym zestawem zmiennych. (Jeśli chcesz użyć tej gałązki, musisz ją skopiować z motywu podstawowego lub podstawowego, a następnie zobaczysz, jakie zmienne są w środku). Twoje zmienne ustawione w tablicy renderowania funkcji kompilacji skończą się wtcdev.html.twig
. Czy utworzyłeś ten plik gałązki?Tak więc znalazłem, że chcesz zastąpić domyślny szablon bloku niestandardowym szablonem bloku (modułu), a następnie przekazać do niego zmienne, przede wszystkim musisz upewnić się, że nadpisujesz szablon poprawnie, ponieważ wydaje się, że bieżący szablon bloku jest generowany z twojego Katalog motywów (nie moduł):
Aby to zrobić, najpierw należy utworzyć katalog o nazwie
templates/
w katalogu głównym modułów, a następnie umieścić tam szablon.Teraz powiadom Drupala, że przechowujesz szablon w swoim module. w
your_module.module
dodać tę funkcję:Na koniec uważaj na to, gdzie umieścisz plik gałązki i jak go nazwiesz. Utwórz katalog szablonów w katalogu modułu i zamień
_
nazwę funkcji motywu na-
:mymodule-block.html.twig
Nie zapomnij wyczyścić pamięci podręcznej.
Za pomocą odpowiedzi napisanej
Nicensin
w tym poście:Drupal 8 niestandardowy blok (moduł) utwórz plik szablonu gałązki
źródło
Doszedłem też do tego punktu. Zmienne nie wydają się być przekazywane do szablonu bloku. Mam prawie taki sam kod jak ty, w moim przypadku włączyłem debugowanie gałązek i wyłączyłem pamięć podręczną w services.yml. Nawet czyszczenie pamięci podręcznej miałem ten problem, ale został rozwiązany, gdy aktywowałem tę konfigurację w moim środowisku programistycznym.
źródło