You are here

public function DisqusBaseBlock::build in Disqus 8

Builds and returns the renderable array for this block plugin.

If a block should not be rendered because it has no content, then this method must also ensure to return no content: it must then only return an empty array, or an empty array with #cache set (with cacheability metadata indicating the circumstances for it being empty).

Return value

array A renderable array representing the content of the block.

Overrides BlockPluginInterface::build

See also

\Drupal\block\BlockViewBuilder

File

src/Plugin/Block/DisqusBaseBlock.php, line 134

Class

DisqusBaseBlock
Create a new DisqusBaseBlock.

Namespace

Drupal\disqus\Plugin\Block

Code

public function build() {
  $function = $this
    ->functionId();
  $url = Url::fromUri("//disqus.com/forums/{$this->disqusConfig->get('disqus_domain')}/{$function}.js", [
    'external' => TRUE,
    'query' => $this
      ->buildQuery(),
  ])
    ->toString();
  return [
    'widget' => [
      'script_tag' => [
        '#markup' => new FormattableMarkup('<script type="text/javascript" src="' . $url . '"></script>', []),
      ],
      '#theme_wrappers' => [
        'container',
      ],
      '#attributes' => [
        'id' => Html::getUniqueId('disqus-' . $function),
        'class' => [
          'dsq-widget',
        ],
      ],
    ],
  ];
}