Saya ingin membuat blok khusus saya dengan konten khusus di Drupal 8, pada awalnya saya membuat Blok hanya dengan teks sederhana di atasnya, dan berfungsi dengan benar, Masalah saya adalah bagaimana saya bisa mengirimkan variabel kustom saya ke sana? Saya melihat beberapa tutorial tentang hal itu, nama Modul saya tcdev
dan ini adalah isi .module
file.
function tcdev_theme($existing, $type, $theme, $path) {
return array('tcdev' =>
array(
'variables' => array(
'title' => 'Default title',
'description' => null
),
'template' => 'block--sliderblock'
)
);
}
dan saya 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'
);
}
}
dan akhirnya file template saya block--sliderblock.html.twig
<h2>My Custom Block{{ title }}-{{ description }}</h2>
Tetapi Hasil hanya "Blok Adatku-". Masalahnya adalah variabel tidak diteruskan ke file template, di mana kesalahan saya?
menghargai bantuan apa pun
block--sliderblock.html.twig
diberikan, masalahnya adalah bagaimana meneruskan variabel saya ke sana !!!? apa yang Anda sarankan kepada saya sesuai dengan kode saya. ? tnx atas perhatian Andablock--sliderblock.html.twig
diterjemahkan, karena Anda menggunakan nama saran tema, ini akan membuat bahkan jika blok benar-benar kosong, Anda dapat mencoba ini)block--sliderblock.html.twig
dan tidak ada yang lolos. Saya mengaktifkan info debug dan info debug adalah<!-- 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
. Template ini berfungsi dengan set variabelnya sendiri. (Jika Anda ingin menggunakan ranting ini, Anda harus menyalinnya dari tema inti atau basis dan kemudian Anda melihat variabel apa yang ada di dalamnya). Variabel Anda yang diatur dalam array render dari fungsi build akan berakhir ditcdev.html.twig
. Apakah Anda membuat file ranting ini?Jadi yang saya temukan, Anda ingin menimpa template blok default dengan template blok (modul) kustom, dan kemudian meneruskan variabel Anda ke sana, pertama-tama Anda harus memastikan menimpa template Anda dengan benar karena tampaknya template blok Anda saat ini dihasilkan dari Anda Direktori tema (bukan modul):
Untuk melakukan ini pertama-tama Anda harus membuat direktori bernama
templates/
di root modul Anda dan kemudian tempatkan template Anda di sana.Sekarang beri tahu Drupal bahwa Anda menyimpan template di modul Anda. di
your_module.module
tambahkan fungsi ini:Akhirnya berhati-hatilah di mana Anda menempatkan file ranting Anda dan apa nama Anda. Buat direktori template di direktori modul Anda, dan ganti
_
di dalam nama fungsi tema dengan-
:mymodule-block.html.twig
Jangan lupa untuk membersihkan cache.
Dengan bantuan jawaban yang ditulis oleh
Nicensin
dalam posting ini:Drupal 8 blok kustom (modul) membuat file template ranting
sumber
Saya sampai pada titik ini juga. Variabel tampaknya tidak diteruskan ke template blok. Saya memiliki kode yang hampir sama dengan Anda, dalam kasus saya, saya mengaktifkan ranting debug dan menonaktifkan cache di services.yml. Bahkan membersihkan cache saya mengalami masalah ini tetapi diselesaikan setelah saya mengaktifkan konfigurasi ini di lingkungan dev saya.
sumber