Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Views ›

[gelöst] Alle Organic Groups mit allen Mitgliedern auflisten

Eingetragen von kniekel@drupal.org (156)
am 01.12.2015 - 11:22 Uhr in
  • Views
  • Drupal 7.x

Hallo miteinander,
ich möchte einen View erstellen, in dem alle Organic Groups in einer Tabelle angezeigt werden sowie alle dazugehörigen Mitglieder. Bin mir aber nicht ganz sicher, ob das geht.
Was geht: Eine Tabelle, nach Titel der Gruppe sortiert, aber eine Zeile pro Gruppenmitglied. Die würde ich gerne aggregieren, z.B. mit Komma getrennt oder wie auch immer. (Noch lieber: eine Spalte pro Mitglied bei maximal drei Mitgliedern pro Gruppe)

Das habe ich folgendermaßen erreicht:

Beziehungen:
OG Mitgliedschaft: OG membership from Inhalt group
(OG membership from node group) OG Mitgliedschaft: Benutzer from OG membership
(das zweite ist nötig, um nicht nur die User-ID, sondern den Namen ausgeben zu können)

Sieht dann so aus: http://www.citykirchenprojekte.org/gruppenliste-test

(Die Namen sind eh öffentlich, daher ist die Abbildung hier kein Problem.)

Momentan hat nur "Schweinfurt" zwei Mitglieder. Die hätte ich gerne hintereinander statt in eigenen Zeilen.

Ich habe "Zusammenfassung verwenden" ausprobiert und in den Datenbankabfrageeinstellungen "eindeutig" ausgewählt. Ich habe diverse Kontextfilter ausprobiert und was weiß ich noch alles. Jetzt fällt mir nix mehr ein. Irgendwelche Ideen, wie das gehen könnte?
Viele Grüße und danke schon mal.

Lösung:

Die Lösung ist nicht trivial, aber sie funktioniert.

Schritt 1: Ich füge vorne eine Spalte "NID" ein, die ich verstecke, aber nach der ich mit dem Modul "Views Distinct" filtere ("Filter Repeats")

Schritt 2: Jeder einzelne Eintrag eines Benutzers erhält einen eigenen View (bei mir: Name 1, Email 1, Name 2, Email 2, weitere Namen - da liste ich dann den ganzen Rest auf).

Beziehungen:
OG Mitgliedschaft: OG membership from Inhalt group
(OG membership from node group) OG Mitgliedschaft: Benutzer from OG membership

Kontextfilter: Inhaltsversion: Beitrags-ID (nötig, um diese Information aus der "Basistabelle" zu übernehmen)

Einziges Feld: (user from OG membership) Benutzer: Name

Die angegebene Anzahl von Elementen anzeigen | 1 item (beim 2. und 3. Namen ist da natürlich ein entsprechender Offset drin, so dass auch der 2. bzw. 3. Name angezeigt wird)
Wichtig ist noch, die Benutzer natürlich einheitlich und eindeutig zu sortieren

Außerdem habe ich bei "1. Name" unter "Verhalten, wenn keine Ergebnisse vorliegen" ein Textfeld mit "NN" eingefügt, sonst werden Gruppen ohne Benutzer nicht angezeigt.

Diese Views kann ich dann mit einem Feld "Global: Ansicht" in die Tabelle einfügen. Als Kontextfilter muss ich hier jeweils [!nid] eingeben. Das ist glaube ich vom Modul views_field_view.

Das Ergebnis kann ich euch leider nicht mehr vorführen, weil es jetzt nur noch für eingeloggte Benutzer zugänglich ist.

Eigentlich hatte ich "Views Distinct" so verstanden, dass es die gesamte Aufgabe übernehmen kann und die Benutzer aggregieren kann. Vielleicht ist es mit den Beziehungen überfordert, was weiß ich. Damit hat's jedenfalls nicht geklappt.

‹ Anzahl von Thumbnails für Bildergalerie begrenzen [gelöst] Alle Organic Groups mit allen Mitgliedern auflisten ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

ich sehe hier nicht deine Views-Formulierung

Eingetragen von ronald (3857)
am 01.12.2015 - 11:27 Uhr

aber mal ins Unreine gedacht:

wenn due nicht nach gruppen als Hauptkriterium suchst, sonder nach User mit seiner Gruppe, und das dann in der Sortierung nach Gruppe darstellst, solltest du alle bekommen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

... aber aggregieren?

Eingetragen von kniekel@drupal.org (156)
am 01.12.2015 - 11:44 Uhr

Vielen Dank für die schnelle Antwort!

Hatte ich auch schon ausprobiert. Aber auch so habe ich es nicht geschafft, dass alle Mitglieder einer Gruppe in der gleichen Zeile landen.
Ich komme letztlich zu genau dem gleichen Ergebnis:
http://www.citykirchenprojekte.org/gruppenliste-test2

Der erste Test ist eine Tabelle aller Group Nodes.
Der zweite Test eine Tabelle aller Benutzer, sortiert nach den zugehörigen Gruppen.

Der erste Test sieht folgendermaßen aus:

$view = new view();
$view->name = 'gruppenliste_test';
$view->description = '';
$view->tag = 'default';
$view->base_table = 'node';
$view->human_name = 'Gruppenliste-test';
$view->core = 7;
$view->api_version = '3.0';
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */

/* Display: Master */
$handler = $view->new_display('default', 'Master', 'default');
$handler->display->display_options['title'] = 'gruppenliste-test';
$handler->display->display_options['use_more_always'] = FALSE;
$handler->display->display_options['use_more_text'] = 'mehr';
$handler->display->display_options['access']['type'] = 'perm';
$handler->display->display_options['cache']['type'] = 'none';
$handler->display->display_options['query']['type'] = 'views_query';
$handler->display->display_options['query']['options']['distinct'] = TRUE;
$handler->display->display_options['query']['options']['pure_distinct'] = TRUE;
$handler->display->display_options['exposed_form']['type'] = 'basic';
$handler->display->display_options['exposed_form']['options']['submit_button'] = 'Anwenden';
$handler->display->display_options['exposed_form']['options']['reset_button_label'] = 'Zurücksetzen';
$handler->display->display_options['exposed_form']['options']['exposed_sorts_label'] = 'Sortieren nach';
$handler->display->display_options['exposed_form']['options']['sort_asc_label'] = 'Aufsteigend';
$handler->display->display_options['exposed_form']['options']['sort_desc_label'] = 'Absteigend';
$handler->display->display_options['pager']['type'] = 'full';
$handler->display->display_options['pager']['options']['items_per_page'] = '10';
$handler->display->display_options['pager']['options']['expose']['items_per_page_label'] = 'Elemente pro Seite';
$handler->display->display_options['pager']['options']['expose']['items_per_page_options_all_label'] = '- Alle -';
$handler->display->display_options['pager']['options']['tags']['first'] = '« erste Seite';
$handler->display->display_options['pager']['options']['tags']['previous'] = '‹ vorherige Seite';
$handler->display->display_options['pager']['options']['tags']['next'] = 'nächste Seite ›';
$handler->display->display_options['pager']['options']['tags']['last'] = 'letzte Seite »';
$handler->display->display_options['style_plugin'] = 'table';
$handler->display->display_options['style_options']['columns'] = array(
  'title' => 'title',
  'name' => 'name',
);
$handler->display->display_options['style_options']['default'] = '-1';
$handler->display->display_options['style_options']['info'] = array(
  'title' => array(
    'sortable' => 0,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
  'name' => array(
    'sortable' => 0,
    'default_sort_order' => 'asc',
    'align' => '',
    'separator' => '',
    'empty_column' => 0,
  ),
);
/* Beziehung: OG Mitgliedschaft: OG membership from Inhalt group */
$handler->display->display_options['relationships']['og_membership_rel_group']['id'] = 'og_membership_rel_group';
$handler->display->display_options['relationships']['og_membership_rel_group']['table'] = 'node';
$handler->display->display_options['relationships']['og_membership_rel_group']['field'] = 'og_membership_rel_group';
$handler->display->display_options['relationships']['og_membership_rel_group']['required'] = TRUE;
/* Beziehung: OG Mitgliedschaft: Benutzer from OG membership */
$handler->display->display_options['relationships']['og_membership_related_user']['id'] = 'og_membership_related_user';
$handler->display->display_options['relationships']['og_membership_related_user']['table'] = 'og_membership';
$handler->display->display_options['relationships']['og_membership_related_user']['field'] = 'og_membership_related_user';
$handler->display->display_options['relationships']['og_membership_related_user']['relationship'] = 'og_membership_rel_group';
$handler->display->display_options['relationships']['og_membership_related_user']['required'] = TRUE;
/* Feld: Inhalt: Titel */
$handler->display->display_options['fields']['title']['id'] = 'title';
$handler->display->display_options['fields']['title']['table'] = 'node';
$handler->display->display_options['fields']['title']['field'] = 'title';
/* Feld: Benutzer: Name */
$handler->display->display_options['fields']['name']['id'] = 'name';
$handler->display->display_options['fields']['name']['table'] = 'users';
$handler->display->display_options['fields']['name']['field'] = 'name';
$handler->display->display_options['fields']['name']['relationship'] = 'og_membership_related_user';
/* Sortierkriterien: Inhalt: Beitragsdatum */
$handler->display->display_options['sorts']['created']['id'] = 'created';
$handler->display->display_options['sorts']['created']['table'] = 'node';
$handler->display->display_options['sorts']['created']['field'] = 'created';
$handler->display->display_options['sorts']['created']['order'] = 'DESC';
/* Filterkriterium: Inhalt: Veröffentlicht */
$handler->display->display_options['filters']['status']['id'] = 'status';
$handler->display->display_options['filters']['status']['table'] = 'node';
$handler->display->display_options['filters']['status']['field'] = 'status';
$handler->display->display_options['filters']['status']['value'] = 1;
$handler->display->display_options['filters']['status']['group'] = 1;
$handler->display->display_options['filters']['status']['expose']['operator'] = FALSE;
/* Filterkriterium: Inhalt: Typ */
$handler->display->display_options['filters']['type']['id'] = 'type';
$handler->display->display_options['filters']['type']['table'] = 'node';
$handler->display->display_options['filters']['type']['field'] = 'type';
$handler->display->display_options['filters']['type']['value'] = array(
  'citykirchenprojekt' => 'citykirchenprojekt',
);
/* Filterkriterium: Benutzer: Benutzer-ID */
$handler->display->display_options['filters']['uid_raw']['id'] = 'uid_raw';
$handler->display->display_options['filters']['uid_raw']['table'] = 'users';
$handler->display->display_options['filters']['uid_raw']['field'] = 'uid_raw';
$handler->display->display_options['filters']['uid_raw']['relationship'] = 'og_membership_related_user';
$handler->display->display_options['filters']['uid_raw']['operator'] = '>';
$handler->display->display_options['filters']['uid_raw']['value']['value'] = '1';

/* Display: Page */
$handler = $view->new_display('page', 'Page', 'page');
$handler->display->display_options['path'] = 'gruppenliste-test';
$translatables['gruppenliste_test'] = array(
  t('Master'),
  t('gruppenliste-test'),
  t('mehr'),
  t('Anwenden'),
  t('Zurücksetzen'),
  t('Sortieren nach'),
  t('Aufsteigend'),
  t('Absteigend'),
  t('Elemente pro Seite'),
  t('- Alle -'),
  t('Offset'),
  t('« erste Seite'),
  t('‹ vorherige Seite'),
  t('nächste Seite ›'),
  t('letzte Seite »'),
  t('OG membership from node group'),
  t('user from OG membership'),
  t('Titel'),
  t('Name'),
  t('Page'),
);

  • Anmelden oder Registrieren um Kommentare zu schreiben

in der gleichen Zeile

Eingetragen von ronald (3857)
am 01.12.2015 - 12:59 Uhr

kann nicht so einfach funktionieren, außer du sorgst dafür, dass Einträge der gleichen Klasse mit einem float-Attribut versehen werden (CSS).
Das macht das Template ein wenig komplizierter.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hmpf. Danke.

Eingetragen von kniekel@drupal.org (156)
am 01.12.2015 - 13:05 Uhr

Ich hab's fast befürchtet. Aber hätte ja sein können, dass jemand eine Idee hat, auf die ich noch nicht gekommen bin. :-)

Danke jedenfalls schon mal soweit.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Schau dir mal dieses Modul an

Eingetragen von rogerpfaff (249)
am 01.12.2015 - 15:03 Uhr

Schau dir mal dieses Modul an https://www.drupal.org/project/views_field_view

Das sollte dir helfen können alles ein eine Zeile zu kriegen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

jetzt schon zwei Ansätze ...

Eingetragen von kniekel@drupal.org (156)
am 01.12.2015 - 16:30 Uhr

Danke. Ich hab auch noch dieses hier gefunden: https://www.drupal.org/project/views_distinct
Das sollte eigentlich laut Beschreibung genau das machen, was ich will. Seltsamerweise schreibt es je nach Einstellung alle Benutzer in jede Zeile ("aggregate"), also nicht nur die, die da hingehören, oder nur den ersten ("filter").
Jetzt habe ich ja zwei Lösungsansätze. Einer von beiden wird schon klappen.

  • Anmelden oder Registrieren um Kommentare zu schreiben

vorläufig halt nur ein Name.

Eingetragen von kniekel@drupal.org (156)
am 01.12.2015 - 17:28 Uhr

Ein Name ist besser als gar keiner. Das Views distinct-Modul funktioniert nicht ganz so, wie es soll. Das "Views in Views" kriege ich auch nicht dazu, mehr als einen Benutzer anzuzeigen. Dann lasse ich es jetzt mal so, wie es derzeit ist. Vielleicht fällt mir noch was Besseres ein.

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 1 Woche 4 Tagen
  • Hey danke
    vor 1 Woche 5 Tagen
  • Update: jetzt gibt's ein
    vor 1 Woche 6 Tagen
  • Hallo, im Prinzip habe ich
    vor 2 Wochen 3 Tagen
  • Da scheint die Terminologie
    vor 2 Wochen 3 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 1 Tag
  • In der entsprechenden View
    vor 3 Wochen 1 Tag
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 1 Tag
  • gelöst
    vor 5 Wochen 4 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 5 Wochen 5 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20451

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 13 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association