Wie kann ich einen Anzeigenamen aus der Ansichts-ID und der Anzeige-ID erhalten?

9

Ich kann eine Ansicht mit laden $view = Views::getView('my_view_id');, aber wie verwende ich dieses Objekt, um den display_title zu laden oder ein Array mit Informationen einschließlich des Anzeigenamens zu sagen?

Hinweis: Dies ist nicht zu verwechseln mit dem Laden des Titels der Anzeige, der beim Drucken der Ansicht verwendet werden kann, da es dafür eine Methode gibt ( getTitle()).

Webdrips
quelle

Antworten:

16

Nachdem ich die Dokumente gelesen hatte ( https://api.drupal.org/api/drupal/core!modules!views!src!ViewExecutable.php/class/ViewExecutable/8 ), habe ich Folgendes versucht (was funktioniert hat):

$view = \Drupal\views\Views::getView('your_view_id');
$view->setDisplay('your_display_id');
$displayObj = $view->getDisplay();
//$displayPluginTitle = $displayObj->pluginTitle()->render();
//$displayTitle = $displayObj->getOption('title');
$displayName = $displayObj->display['display_title'];

NB1: Ich verwende die Renderfunktion für ein TranslatableMarkup- Objekt. Dies gibt die Funktion pluginTitle zurück. Es könnte möglich sein, dort andere Funktionen zu verwenden, wie z. B. getUntranslatedString
NB2: Ich habe das OP falsch verstanden. :-) Kommentierte den fehlerhaften Teil des Codes aus, der den Titel des Anzeige-Plugins und nicht den angeforderten Titel des Bildschirms zurückgibt. NB3: Ich habe das OP falsch verstanden. NOCHMAL! :-) Kommentierte den fehlerhaften Teil des Codes aus, der den Titel der Anzeige und nicht den Namen der Anzeige wie gewünscht zurückgibt. Zu meiner Verteidigung trägt diese Eigenschaft die Bezeichnung "Anzeigename" und den Namen "Anzeigename" (wie im OP erwähnt).

Screenshot aus Ansichten Beispiel:

Geben Sie hier die Bildbeschreibung ein

Und ein Testskript, das den Titel der Anzeige (mit der Ausgabe) erhält:

Geben Sie hier die Bildbeschreibung ein

Prost!

Stefanos Petrakis
quelle
Verdammt, ich habe die letzte Zeile verpasst ... danke dafür. Ich erhalte derzeit den mit Anmerkungen versehenen Titel für mein benutzerdefiniertes Anzeige-Plugin. Daher fehlen möglicherweise einige Einstellungen in meinem Anzeige-Plugin.
Webdrips
Sie da. Also, was bekommst du genau? Was meinst du mit dem kommentierten Titel? Von der Funktion pluginTitle habe ich ein TranslatableMarkup-Objekt erhalten. Erhalten Sie dort noch etwas?
Stefanos Petrakis
Ich habe ein Plugin zur Anzeige benutzerdefinierter Ansichten, wie hier beschrieben: api.drupal.org/api/drupal/… . Es ist mit @ViewsDisplay versehen, das einen Titel enthält. Diesen Titel bekomme ich mit der letzten Zeile zurück.
Webdrips
Ihre eigene Implementierung denke ich. Haben Sie dann die Funktion pluginTitle implementiert / überschrieben?
Stefanos Petrakis
Richtig, es ist eine benutzerdefinierte Implementierung, aber nein, ich habe pluginTitle ()
Webdrips
1

Der folgende Code hängt vom Modul ctools_views ab.

$view = \Drupal\views\Views::getView('your_view_id');
$view->setDisplay('your_display_id');
$displayObj = $view->getDisplay();
$displayName = $displayObj->display['display_title'];

Um den Anzeigetitel zu erhalten, ist nur der folgende Code erforderlich.

$view = \Drupal\views\Views::getView('your_view_id');
$view->setDisplay('your_display_id');
$displayName = $view->getTitle();
NewZeal
quelle