Puncte:-1

Cum pot trece mai multe variabile/preprocesare de declanșare blocului de plugin?

drapel id

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.

Puncte:0
drapel id

Mulțumesc că mi-ați ignorat întrebarea și voturile negative! ;) Nu vă înțeleg deloc. Cu toate acestea, am reușit să înțeleg cum să-mi rezolv problema și să trec variabile:

funcția npx_main_theme() {
  întoarcere [
    'opigno_documents_last_group_block' => [
      'variabile' => [
        'param1' => 'test text'
      ]
    ]
  ];
}

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.