public function EntityViewModeRestriction::inlineBlocksAllowedinContext in Layout Builder Restrictions 8.2
Returns an array of allowed inline blocks in a given context.
Parameters
\Drupal\layout_builder\SectionStorageInterface $section_storage: The section storage.
int $delta: The delta of the section to splice.
string $region: The region the block is going in.
Return value
array An array of allowed inline block types.
Overrides LayoutBuilderRestrictionBase::inlineBlocksAllowedinContext
File
- src/
Plugin/ LayoutBuilderRestriction/ EntityViewModeRestriction.php, line 277
Class
- EntityViewModeRestriction
- Controls behavior of the per-view mode plugin.
Namespace
Drupal\layout_builder_restrictions\Plugin\LayoutBuilderRestrictionCode
public function inlineBlocksAllowedinContext(SectionStorageInterface $section_storage, $delta, $region) {
$view_display = $this
->getValuefromSectionStorage([
$section_storage,
], 'view_display');
$third_party_settings = $view_display
->getThirdPartySetting('layout_builder_restrictions', 'entity_view_mode_restriction', []);
$whitelisted_blocks = isset($third_party_settings['whitelisted_blocks']) ? $third_party_settings['whitelisted_blocks'] : [];
$blacklisted_blocks = isset($third_party_settings['blacklisted_blocks']) ? $third_party_settings['blacklisted_blocks'] : [];
$restricted_categories = isset($third_party_settings['restricted_categories']) ? $third_party_settings['restricted_categories'] : [];
if (in_array('Inline blocks', $restricted_categories)) {
// All inline blocks have been restricted.
return [];
}
elseif (isset($whitelisted_blocks['Inline blocks'])) {
return $whitelisted_blocks['Inline blocks'];
}
else {
$inline_blocks = $this
->getInlineBlockPlugins();
if (isset($blacklisted_blocks['Inline blocks'])) {
foreach ($inline_blocks as $key => $block) {
// Unset explicitly blacklisted inline blocks.
if (in_array($block, $blacklisted_blocks['Inline blocks'])) {
unset($inline_blocks[$key]);
}
}
}
return $inline_blocks;
}
}