Blocul opigno_documents_last_group_block se află în opigno_learning_path/src/Plugin/Block/DocumentsLastGroupBlock.php, care arată astfel:
<?php
spațiu de nume Drupal\opigno_learning_path\Plugin\Block;
utilizați Drupal\Core\Block\BlockBase;
utilizați Drupal\Core\Url;
/**
* Oferă un bloc documentlastgroupblock.
*
* @Bloc(
* id = "opigno_documents_last_group_block",
* admin_label = @Translation ("DocumentsLastGroupBlock"),
* categorie = @Translation(„Personalizat”)
* )
*/
clasa DocumentsLastGroupBlock extinde BlockBase {
/**
* @var \Drupal\Component\Plugin\Context\ContextInterface[]|mixt
*/
protejat $groupId;
/**
* {@inheritdoc}
*/
public function build() {
$this->groupId = $gid = $this->configuration["grup"];
$tid = _tft_get_group_tid($gid);
$conținut = _tft_folder_content($tid, FALSE, $gid);
$conținut = array_slice($conținut ?: [], 0, 4);
foreach ($conținut ca $index => $articol) {
$conținut[$index] = [
'#theme' => 'opigno_documents_last_group_item',
'#type' => $item["type"] == 'fișier' ? 'dosar fișier',
'#item' => $item,
'#label' => $item["nume"],
'#link' => $this->itemLink($item),
];
}
$build['conținut'] = [
'#theme' => 'opigno_documents_last_group_block',
'conținut' => $conținut,
];
returnează $build;
}
(...)
și este atașat în LearningPathController în acest modul:
/**
* Bloc document de instruire.
*/
instruire pentru funcții publiceContentDocuments(&$conținut, $grup) {
// $TFTController = nou 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('Vedeți tot') . „</a></div>”,
];
$block_render = $this->attachBlock('opigno_documents_last_group_block', ['group' => $group->id()]);
$block_render["conținut"]['link'] = $tft_url;
$content['tab_content']['documents'] = (isset($block_render["conținut"]["conținut"]) && !empty($block_render["conținut"]["conținut"])) ? [
'#type' => 'container',
'#attributes' => [
'id' => 'documente',
],
'bloc' => [
„conținut” => $block_render[„conținut”],
],
] : [];
}
Am încercat să-l extind în modul personalizat: web/modules/custom/npx_files/src/Plugin/Block/NpxFilesDocumentsLastGroupBlock.php:
<?php
spațiu de nume Drupal\npx_files\Plugin\Block;
utilizați Drupal\opigno_learning_path\Plugin\Block;
Blocul opigno_documents_last_group_block se află în opigno_learning_path/src/Plugin/Block/DocumentsLastGroupBlock.php, care arată astfel:
<?php
spațiu de nume Drupal\opigno_learning_path\Plugin\Block;
utilizați Drupal\Core\Block\BlockBase;
utilizați Drupal\Core\Url;
/**
* Oferă un bloc documentlastgroupblock.
*
* @Bloc(
* id = "opigno_documents_last_group_block",
* admin_label = @Translation ("DocumentsLastGroupBlock"),
* categorie = @Translation(„Personalizat”)
* )
*/
clasa DocumentsLastGroupBlock extinde BlockBase {
/**
* @var \Drupal\Component\Plugin\Context\ContextInterface[]|mixt
*/
protejat $groupId;
/**
* {@inheritdoc}
*/
public function build() {
$this->groupId = $gid = $this->configuration["grup"];
$tid = _tft_get_group_tid($gid);
$conținut = _tft_folder_content($tid, FALSE, $gid);
$conținut = array_slice($conținut ?: [], 0, 4);
foreach ($conținut ca $index => $articol) {
$conținut[$index] = [
'#theme' => 'opigno_documents_last_group_item',
'#type' => $item["type"] == 'fișier' ? 'dosar fișier',
'#item' => $item,
'#label' => $item["nume"],
'#link' => $this->itemLink($item),
];
}
$build['conținut'] = [
'#theme' => 'opigno_documents_last_group_block',
'conținut' => $conținut,
];
returnează $build;
}
(...)
și este atașat în LearningPathController în acest modul:
/**
* Bloc document de instruire.
*/
instruire pentru funcții publiceContentDocuments(&$conținut, $grup) {
// $TFTController = nou 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('Vedeți tot') . „</a></div>”,
];
$block_render = $this->attachBlock('opigno_documents_last_group_block', ['group' => $group->id()]);
$block_render["conținut"]['link'] = $tft_url;
$content['tab_content']['documents'] = (isset($block_render["conținut"]["conținut"]) && !empty($block_render["conținut"]["conținut"])) ? [
'#type' => 'container',
'#attributes' => [
'id' => 'documente',
],
'bloc' => [
„conținut” => $block_render[„conținut”],
],
] : [];
}
Am încercat să-l extind în modulul personalizat: web/modules/custom/npx_files/src/Plugin/Block/NpxFilesDocumentsLastGroupBlock.php, dar nu se declanșează cu adevărat (nu sunt sigur dacă pot extinde chiar în acest fel):
<?php
spațiu de nume Drupal\npx_files\Plugin\Block;
utilizați Drupal\opigno_learning_path\Plugin\Block;
/**
* Oferă un bloc documentlastgroupblock.
*
* @Bloc(
* id = "opigno_documents_last_group_block",
* admin_label = @Translation ("DocumentsLastGroupBlock"),
* categorie = @Translation(„Personalizat”)
* )
*/
clasa NpxFilesDocumentsLastGroupBlock extinde DocumentsLastGroupBlock {
funcția publică build(){
întoarcere [
'#markup' => $this->t('Salut, lume!'),
];
}
}
Cu toate acestea, nu declanșează blocarea, care este modalitatea bună de a extinde acest lucru?
Cache-ul golit și modulul activat, desigur.
clasa NpxFilesDocumentsLastGroupBlock extinde DocumentsLastGroupBlock {
funcția publică build(){
întoarcere [
'#markup' => $this->t('Salut, lume!'),
];
}
}
Cache-ul a fost golit și modulul a fost activat, desigur.'
Am încercat să preprocesez acest bloc de plugin cu hook_preprocess_block, dar nu este declanșat de acest cârlig, doar blocul său „părinte”. De asemenea, hook_block_build_alter nu este declanșat de acest bloc (doar părintele său). Reușesc să ajung la acest bloc prin hook_block_alter, dar nu prea ajută, deoarece nu sunt capabil să pun câteva variabile suplimentare acolo, cred.
Poate cineva să mă îndrume în direcția corectă? Aș dori fie să adaug variabile suplimentare la acest bloc, fie să îl îndrept pentru a afișa un alt bloc, fie să îl dezactivez/dezactivez programatic înainte de randare.Am petrecut mult timp încercând să învăț despre asta și încercând diferite cârlige, dar până acum nu am avut noroc.