Puncte:0

Afișați linkuri pentru toate vizualizările în meniul administrator

drapel in

Cu bara de instrumente de administrare activată, unul dintre lucrurile care îmi lipsesc din Drupal 7 este trecerea cu mouse-ul prin meniul de administrator pe Structură >> Vizualizări și să vedeți o listă cu toate vizualizările și să puteți face clic pe una pentru a o edita.

Vedeți această captură de ecran pentru comportamentul actual.

captură de ecran

Există o modalitate de a furniza această caracteristică dintr-un modul personalizat? Știu că pot obține o listă cu toate vizualizările Vizualizări::getAllViews() dar nu sunt sigur cum să le adaug programatic. Dacă folosesc un modul personalizat și folosesc hook_update_n() pentru a adăuga în meniu, ce se întâmplă când este adăugată o nouă vizualizare? Ar fi actualizat automat cu vizualizarea adăugată sau doar lista pe cele care au fost prezente când modulul a fost instalat? Dacă nu, cum se poate face acest lucru pentru a afișa întotdeauna lista de vizualizări curente?

Kevin avatar
drapel in
De ce să nu instalezi modulul barei de instrumente admin?
Jaypan avatar
drapel de
Nu înțeleg întrebarea - când merg la admin -> structură -> vizualizări pe o instalare vanilla Drupal, văd o listă cu toate vizualizările.
pglatz avatar
drapel in
Am instalată bara de instrumente de administrare. Tocmai am făcut o instalare vanilla 9.4 pentru a verifica. Când dau clic pe structură/vizualizări, singura opțiune este „Adăugați vizualizare” -- cred că nu mi-am făcut întrebarea suficient de clară; ceea ce vreau să fac este să trec cu mouse-ul peste structură/vizualizări și să văd lista de vizualizări ca linkuri de editare, fără a fi nevoie să merg la pagina de vizualizări în sine. Așa a procedat 7 și mă scutește de încărcarea paginii. Mi-a plăcut mereu.
pglatz avatar
drapel in
Deci întrebarea mea este, cum pot atașa aceste link-uri la meniu și să le fac să listeze toate vizualizările pe care le-am creat după ce îmi instalez codul pentru a crea link-urile meniului? Dacă folosesc hook_install(), bănuiesc că linkurile ar fi doar lista la momentul în care am instalat-o. Bănuiesc că ar trebui să fie dinamic la fiecare încărcare a paginii, dacă utilizatorul conectat are drepturi de administrator.
Jaypan avatar
drapel de
Implicit în Drupal 8/9 este afișarea listei de vizualizări la admin/structure/views, așa cum descrieți.Dacă nu îl vedeți, un modul sau ceva de pe sistemul dvs. îl distruge.
Jaypan avatar
drapel de
Ai instalat modulul Views UI? Face parte din nucleu, dar este necesar pentru a furniza administratorul -> structură -> pagina de vizualizări.
berliner avatar
drapel bd
Pot confirma ceea ce descrie pglatz.El vorbește într-adevăr despre meniul derulant al barei de instrumente admin, care arată doar elementul de meniu „Adăugați vizualizare” atunci când treceți cu mouse-ul prin structura meniului. Întrebarea lui este **nu** despre pagina de afișări în sine.
Jaypan avatar
drapel de
Acum am inteles, multumesc pentru clarificare.
Puncte:2
drapel de

Le puteți adăuga singur într-un modul personalizat.

[MODULU].links.menu.yml:

[MODULE].views.list:
  derivat: „Drupal\[MODULE]\Plugin\Derivative\ViewMenuLinks”

[MODULU]/src/Plugin/Derivative/ViewMenuLinks.php:

<?php

spațiu de nume Drupal\[MODULE]\Plugin\Derivative;

utilizați Drupal\Component\Plugin\Derivative\DeriverBase;
utilizați Drupal\Core\Plugin\Discovery\ContainerDeriverInterface;
utilizați Drupal\views\Views;
utilizați Symfony\Component\DependencyInjection\ContainerInterface;

/**
 * Oferă link-uri de meniu pentru vizualizări individuale.
 */
clasa ViewMenuLinks extinde DeriverBase implementează ContainerDeriverInterface {

  /**
   * {@inheritdoc}
   */
  funcția publică statică create(ContainerInterface $container, $base_plugin_id) {
    returnează nou static();
  }

  /**
   * {@inheritdoc}
   */
  funcția publică getDerivativeDefinitions($base_plugin_definition) {
    $aceasta->derivate = [];

    foreach (Vizualizări::getAllViews() ca $view_id => $view) {
      $url = $view->toUrl();
      $this->derivatives['views_ui.views.list.' . $view_id] = [
        'route_name' => $url->getRouteName(),
        'route_parameters' => $url->getRouteParameters(),
        'title' => $view->label(),
        'parent' => 'entity.view.collection',
      ];
    }

    foreach ($this->derivate ca &$entry) {
      $entry += $base_plugin_definition;
    }

    returnează $this->derivate;
  }

}

Rețineți că va trebui să înlocuiți toate instanțele de [MODUL] cu numele actual al modulului dumneavoastră.

pglatz avatar
drapel in
Perfect - mulțumesc mult, Jaypan. O soluție elegantă și simplă; Sunt extrem de multumit.
Jaypan avatar
drapel de
Mă bucur să vă ajut - vă rugăm să marcați acest lucru ca răspuns acceptat?

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.