1

I'm using Drupal 8. I have created a custom installation profile. Inside the profile profileName.install file, I created the following function:

function setupCustomBlocks() {
  $blockContent = BlockContent::create([
        'type' => 'basic',
        'info' => 'Why choose us?',
  ]);
  $blockContent->set('body', '<p><i class="fa fa-drupal">&nbsp;</i></p>
                              <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry.</p>'
  );
  $blockContent->save();

  $block = Block::create([
        'id' => 'why_choose_us',
        'plugin' => 'block_content:' . $blockContent->uuid(),
        'region' => 'topwidget_first',
        'provider' => 'block_content',
        'weight' => 0,
        'theme' => \Drupal::config('system.theme')->get('default'),
        'visibility' => array(),
        'settings' => [
          'label' => 'Why choose us?',
          'label_display' => TRUE,
        ],
  ]);
  $block->save();
}  

The bellow function, allows me to create a custom block when I install the profile. Here is the result:

enter image description here

As you can see, the HTML tags are not rendering. How can fix that?

1

It's rendering the block's content a plain text, not HTML, because you aren't setting the body field's format property when creating the BlockContent entity.

$blockContent = \Drupal\block_content\Entity\BlockContent::create([ 'type' => 'basic', 'info' => 'Why choose us?' ]);
$blockContent->body->value = '<p><i class="fa fa-drupal">&nbsp;</i></p>
                              <p>Lorem Ipsum is simply dummy text of the printing and typesetting industry.</p>';
$blockContent->body->format = 'full_html';
$blockContent->save();

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.