The block opigno_documents_last_group_block is located in opigno_learning_path/src/Plugin/Block/DocumentsLastGroupBlock.php, which looks like this:
<?php namespace Drupalopigno_learning_pathPluginBlock; use DrupalCoreBlockBlockBase; use DrupalCoreUrl; /** * Provides a documentslastgroupblock block. * * @Block( * id = "opigno_documents_last_group_block", * admin_label = @Translation("DocumentsLastGroupBlock"), * category = @Translation("Custom") * ) */ class DocumentsLastGroupBlock extends BlockBase { /** * @var DrupalComponentPluginContextContextInterface[]|mixed */ protected $groupId; /** * {@inheritdoc} */ public function build() { $this->groupId = $gid = $this->configuration["group"]; $tid = _tft_get_group_tid($gid); $content = _tft_folder_content($tid, FALSE, $gid); $content = array_slice($content ?: [], 0, 4); foreach ($content as $index => $item) { $content[$index] = [ '#theme' => 'opigno_documents_last_group_item', '#type' => $item["type"] == 'file' ? 'file' : 'folder', '#item' => $item, '#label' => $item["name"], '#link' => $this->itemLink($item), ]; } $build['content'] = [ '#theme' => 'opigno_documents_last_group_block', 'content' => $content, ]; return $build; } (...)
and is attached in LearningPathController in this module:
/** * Training document block. */ public function trainingContentDocuments(&$content, $group) { // $TFTController = new TFTController(); // $listGroup = $TFTController->listGroup($group->id()); $tft_url = Url::fromRoute('tft.group', ['group' => $group->id()])->toString(); $content['tabs'][] = $tft_url = [ '#markup' => '<div class="see-all see-all-files"><a href="' . $tft_url . '">' . $this->t('See all') . '</a></div>', ]; $block_render = $this->attachBlock('opigno_documents_last_group_block', ['group' => $group->id()]); $block_render["content"]['link'] = $tft_url; $content['tab_content']['documents'] = (isset($block_render["content"]["content"]) && !empty($block_render["content"]["content"])) ? [ '#type' => 'container', '#attributes' => [ 'id' => 'documents', ], 'block' => [ 'content' => $block_render["content"], ], ] : []; }
I tried to extend it in custom module: web/modules/custom/npx_files/src/Plugin/Block/NpxFilesDocumentsLastGroupBlock.php:
<?php namespace Drupalnpx_filesPluginBlock; use Drupalopigno_learning_pathPluginBlock;
The block opigno_documents_last_group_block is located in opigno_learning_path/src/Plugin/Block/DocumentsLastGroupBlock.php, which looks like this:
<?php namespace Drupalopigno_learning_pathPluginBlock; use DrupalCoreBlockBlockBase; use DrupalCoreUrl; /** * Provides a documentslastgroupblock block. * * @Block( * id = "opigno_documents_last_group_block", * admin_label = @Translation("DocumentsLastGroupBlock"), * category = @Translation("Custom") * ) */ class DocumentsLastGroupBlock extends BlockBase { /** * @var DrupalComponentPluginContextContextInterface[]|mixed */ protected $groupId; /** * {@inheritdoc} */ public function build() { $this->groupId = $gid = $this->configuration["group"]; $tid = _tft_get_group_tid($gid); $content = _tft_folder_content($tid, FALSE, $gid); $content = array_slice($content ?: [], 0, 4); foreach ($content as $index => $item) { $content[$index] = [ '#theme' => 'opigno_documents_last_group_item', '#type' => $item["type"] == 'file' ? 'file' : 'folder', '#item' => $item, '#label' => $item["name"], '#link' => $this->itemLink($item), ]; } $build['content'] = [ '#theme' => 'opigno_documents_last_group_block', 'content' => $content, ]; return $build; } (...)
and is attached in LearningPathController in this module:
/** * Training document block. */ public function trainingContentDocuments(&$content, $group) { // $TFTController = new TFTController(); // $listGroup = $TFTController->listGroup($group->id()); $tft_url = Url::fromRoute('tft.group', ['group' => $group->id()])->toString(); $content['tabs'][] = $tft_url = [ '#markup' => '<div class="see-all see-all-files"><a href="' . $tft_url . '">' . $this->t('See all') . '</a></div>', ]; $block_render = $this->attachBlock('opigno_documents_last_group_block', ['group' => $group->id()]); $block_render["content"]['link'] = $tft_url; $content['tab_content']['documents'] = (isset($block_render["content"]["content"]) && !empty($block_render["content"]["content"])) ? [ '#type' => 'container', '#attributes' => [ 'id' => 'documents', ], 'block' => [ 'content' => $block_render["content"], ], ] : []; }
I tried to extend it in custom module: web/modules/custom/npx_files/src/Plugin/Block/NpxFilesDocumentsLastGroupBlock.php, but it doesn’t really get triggered (I am not sure if I can even extend this this way):
<?php namespace Drupalnpx_filesPluginBlock; use Drupalopigno_learning_pathPluginBlock; /** * Provides a documentslastgroupblock block. * * @Block( * id = "opigno_documents_last_group_block", * admin_label = @Translation("DocumentsLastGroupBlock"), * category = @Translation("Custom") * ) */ class NpxFilesDocumentsLastGroupBlock extends DocumentsLastGroupBlock { public function build(){ return [ '#markup' => $this->t('Hello, World!'), ]; } }
However, it doesn’t trigger the block, what is the good way to extend this? Cache cleared&module turned on of course.
class NpxFilesDocumentsLastGroupBlock extends DocumentsLastGroupBlock { public function build(){ return [ '#markup' => $this->t('Hello, World!'), ]; } }
Cache cleared&module turned on of course.’ I tried to preprocess this plugin block by hook_preprocess_block, but it doesn’t get triggered by this hook, only its ‘parent’ block does. Also hook_block_build_alter doesn’t get triggered by this block (only its parent). I am able to get to this block by hook_block_alter, but it doesn’t really help, as I am not able to put some extra variables there, I think.
Could anybody point me in the right direction? I would like to either add extra variables to this block or point it to display some other block or unset it/disable programatically before rendering. I spent plenty of time trying to learn about it and trying different hooks, but no luck so far.