web-dev-qa-db-fra.com

Comment afficher un nœud dans un bloc?

Je voudrais afficher un nœud comme un bloc dans Drupal 8, mais je ne sais pas comment faire cela. Je sais dans Drupal 7 je pouvais Utilisez le module NodeBlock pour accomplir cette tâche, mais il n'y a pas de Drupal 8 de celui-ci (et on dirait qu'il n'y aura jamais).

Cela peut-il être accompli en utilisant un autre module que je ne suis pas au courant?

1
user5013

Vous pouvez ajouter un fichier à votre module à src/Plugin/Block/YourBlock.php

namespace Drupal\your_module\Plugin\Block;
use Drupal\Core\Block\BlockBase;

/**
 * Provides a block.
 * @Block(
 *   id = "your_block",
 *   admin_label = @Translation("YourBlock")
 * )
 */
class YourBlock extends BlockBase {

  /**
   * {@inheritdoc}
   */
  public function build() {

    $nid = 2;
    $entity_type = 'node';
    $view_mode = 'teaser';

    $view_builder = \Drupal::entityTypeManager()->getViewBuilder($entity_type);
    $storage = \Drupal::entityManager()->getStorage($entity_type);
    $node = $storage->load($nid);
    $build = $view_builder->view($node, $view_mode);

    return $build;

  }

  ...

J'en suis sûr avec un petit effort que vous pouvez continuer en utilisant blockform, blocksubmit pour définir le nœud ID/TYPE/VIEW_MODE, etc.

2
Dylan