Khối opigno_documents_last_group_block nằm trong opigno_learning_path/src/Plugin/Block/DocumentsLastGroupBlock.php, có dạng như sau:
<?php
không gian tên Drupal\opigno_learning_path\Plugin\Block;
sử dụng Drupal\Core\Block\BlockBase;
sử dụng Drupal\Core\Url;
/**
* Cung cấp một khối documentslastgroupblock.
*
* @Chặn(
* id = "opigno_documents_last_group_block",
* admin_label = @Translation("DocumentsLastGroupBlock"),
* danh mục = @Translation("Tùy chỉnh")
* )
*/
lớp DocumentsLastGroupBlock mở rộng BlockBase {
/**
* @var \Drupal\Component\Plugin\Context\ContextInterface[]|hỗn hợp
*/
$groupId được bảo vệ;
/**
* {@inheritdoc}
*/
xây dựng chức năng công cộng () {
$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' ? 'thư mục tập tin',
'#item' => $item,
'#label' => $item["name"],
'#link' => $this->itemLink($item),
];
}
$build['nội dung'] = [
'#theme' => 'opigno_documents_last_group_block',
'nội dung' => $nội dung,
];
trả lại bản dựng $;
}
(...)
và được đính kèm trong LearningPathController trong mô-đun này:
/**
* Khối tài liệu đào tạo.
*/
đào tạo hàm công khaiContentDocuments(&$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('Xem tất cả') . '</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' => 'thùng chứa',
'#thuộc tính' => [
'id' => 'tài liệu',
],
'chặn' => [
'nội dung' => $block_render["nội dung"],
],
] : [];
}
Tôi đã cố gắng mở rộng nó trong mô-đun tùy chỉnh: web/modules/custom/npx_files/src/Plugin/Block/NpxFilesDocumentsLastGroupBlock.php:
<?php
không gian tên Drupal\npx_files\Plugin\Block;
sử dụng Drupal\opigno_learning_path\Plugin\Block;
lớp NpxFilesDocumentsLastGroupBlock mở rộng DocumentsLastGroupBlock {
xây dựng chức năng công cộng () {
trở lại [
'#markup' => $this->t('Xin chào, Thế giới!'),
];
}
}
Tuy nhiên, nó không kích hoạt khối, cách tốt để mở rộng điều này là gì?
Tất nhiên là đã xóa bộ nhớ cache & mô-đun đã bật.