Вы должны создать ловушку предложений темы с помощью hook_theme ()
, как будто я запускаю тестовый пример для вас, я написал hook_theme ()
в моем файле модуля вот код
/**
* Implements hook_theme().
*/
function my_module_theme($existing, $type, $theme, $path) {
$theme = array();
$theme['node__contentTypeName'] = array(
'render element' => 'content',
'base hook' => 'node',
'template' => 'node--contentTypeName',
'path' => drupal_get_path('module', 'my_module') . '/templates',
);
return $theme;
}
затем поместите ваш файл ветки шаблона в папку my_module / templates
вот мой код блока
namespace Drupal\my_module\Plugin\Block;
use Drupal\Core\Block\BlockBase;
/**
* Provides a 'example node render block' Block
*
* @Block(
* id = "example_node_render_pulgin_block",
* admin_label = @Translation("example render node"),
* )
*/
class ExampleNodeRenderBlock extends BlockBase {
/**
* {@inheritdoc}
*/
public function build() {
$nid = 36;
$entity_type = 'node';
$view_mode = 'full';
$view_builder = \Drupal::entityTypeManager()->getViewBuilder($entity_type);
$storage = \Drupal::entityTypeManager()->getStorage($entity_type);
$node = $storage->load($nid);
$build = $view_builder->view($node, $view_mode);
$output = render($build);
return array(
'#type' => 'markup',
'#markup' => $output,
);
}
}
я добавил дополнительный код в файл ветки кубедитесь, что мой шаблон рендерится или нет
это строка, которую я добавил в мой template.twig
<div><h1>hello its me</h1></div>
и, наконец, я разместил свой блок где-то, а здесь результат
Надеюсь, что это решит вашу проблему
Спасибо