Я хочу создать свой пользовательский блок с пользовательским содержимым в Drupal 8, при запуске я создаю Блок с простым текстом и работаю правильно, моя проблема в том, как я могу передать ему свою пользовательскую переменную? Я видел какое-то руководство по этому поводу, мой модуль называется, tcdev
и это содержимое .module
файла.
function tcdev_theme($existing, $type, $theme, $path) {
return array('tcdev' =>
array(
'variables' => array(
'title' => 'Default title',
'description' => null
),
'template' => 'block--sliderblock'
)
);
}
и мой 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'
);
}
}
и наконец мой файл шаблона block--sliderblock.html.twig
<h2>My Custom Block{{ title }}-{{ description }}</h2>
Но Результатом является только «Мой Пользовательский Блок-». Проблема в том, что переменные не передаются в файл шаблона, где моя ошибка?
ценю любую помощь
block--sliderblock.html.twig
оказал, проблема в том, как передать мою переменную ему? что вы предлагаете мне согласно моему коду. ? TNX для вашего вниманияblock--sliderblock.html.twig
отображается, потому что вы использовали имя предложения темы, это будет отображаться, даже если блок будет полностью пустым, вы можете попробовать это)block--sliderblock.html.twig
и ничего ему не передаю. Я включаю отладочную информацию и отладочную информацию<!-- 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
. Этот шаблон работает с собственным набором переменных. (Если вы хотите использовать эту ветку, вам нужно будет скопировать ее из основной или базовой темы, а затем вы увидите, какие переменные находятся внутри). Ваши переменные, установленные в массиве рендеринга функции сборки, будут в итогеtcdev.html.twig
. Вы создали этот файл ветки?Итак, я обнаружил, что вы хотите перезаписать шаблон блока по умолчанию шаблоном пользовательского блока (модуля), а затем передать в него свои переменные, прежде всего вы должны убедиться, что ваш шаблон перезаписан правильно, потому что кажется, что текущий шаблон блока выведен из вашего Каталог тем (не модуль):
Для этого сначала вы должны создать каталог с именем
templates/
в корневом каталоге ваших модулей, а затем поместить туда свой шаблон.Теперь сообщите Drupal, что вы храните шаблон в своем модуле. в
your_module.module
добавить эту функцию:Наконец, будьте осторожны с тем, где вы разместите файл ветки и как его назовете. Создайте каталог шаблонов в каталоге вашего модуля и замените
_
имя функции темы на-
:mymodule-block.html.twig
Не забудьте очистить кеш.
С помощью ответа, написанного
Nicensin
в этом посте:Drupal 8 custom block (module) создает файл шаблона ветки
источник
Я тоже дошел до этого. Кажется, переменные не передаются в шаблон блока. У меня почти такой же код, как и у вас, в моем случае я включил отладку веток и отключил кеш в services.yml. Даже при очистке кэша у меня возникла эта проблема, но она была решена, когда я активировал этот конфиг в моей среде разработки.
источник