user relationships in Verbindung mit Views - Erstellen der buddylist

am 29.07.2009 - 14:40 Uhr in
Problem gelöst. Ich stiess im englischsprachigen drupal-Forum auf die Lösung meines Problems.
Hier der Link zum Thema:
Views in Verbindung mit user relationships
View-Ansicht 1:
klick
View-Ansicht 2:
klick
Wie ich gestern bereits in einem anderen Thema (http://www.drupalcenter.de/node/20376) erwähnt habe, beschäftige ich mich zur Zeit mit user relationships in Verbindung mit Views. Zu allererst wollte ich nur eine Übersicht erstellen, die alle Beiträge meiner Freunde anzeigt. Dies ist mir mit freundlicher Unterstützung letztendlich gelungen. Das funktioniert also alles so wie es sein sollte.
Nun möchte ich in jedem Userprofil eine eigene buddylist als block in der linken Spalte anzeigen lassen. Das user relationships-Modul bringt zwar per default einen block mit. Dieser lässt sich aber nicht so wirklich anpassen und ich halte es nicht gerade für sonderlich attraktiv, sich nur die Namen der buddies in einer einfachen Auflistung anzeigen zu lassen.
Ich habe mir deshalb eine eigene View erstellt, die ich als block links eingebunden habe. Mein Modul zeigt nun die Avatare der buddies eines bestimmten Users an, wenn man auf dessen Profil klickt. Jetzt kommt aber der Haken: Sobald ich selbst als angemeldeter User auf mein Profil klicke erscheinen alle meine buddies doppelt. Dies ist auch eigentlich logisch, weil ich in den Argumenten (Benutzer-ID aus URL) angegeben habe. Ich vermute daher, das System grabbt sich diese URL nun doppelt. Dieses Problem taucht auch wirklich nur auf, wenn man auf sein eigenes Profil klickt. Alle anderen Profile sind nicht davon betroffen.
Wie lässt sich dieses Problem lösen?
Hier meine Einstellungen in View:
Beziehungen:
User relationships: Requester user
User relationships: Requestee user
User relationships: RTID
Argumente:
User relationships: Requester user
Felder:
Benutzer: Benutzerbild
output this field as link: user/%1
Sortierkriterium:
Benutzer: Name aufsteigend
Standardargument zur Verfügung stellen: BenutzerID aus URL
Filter:
(requester) User relationships: Relationship status = 1
Einstellunge: Beziehungen: requester ist gleich "approved"
- Anmelden oder Registrieren um Kommentare zu schreiben
nach einigen tests ...
am 29.07.2009 - 16:52 Uhr
habe ich nun festgestellt, dass jeder User doppelt in allen buddylisten erscheint. Kann es damit zusammenhängen, dass zwischen den Usern eine beidseitige Freundschaft besteht? Es ist also so, dass die Buddylisten prinzipiell korrekt den einzelnen Usern zugeordnet werden. Nur erscheint, wie bereits erwähnt, jeder buddy zweimal in der Liste.
Ähnliches Problem...
am 05.08.2009 - 07:07 Uhr
Hallo,
ich habe auch ein Problem damit. Ich bin den o.g. Anleitungen gefolgt, allerdings verwende ich den Typ "Node" für meinen View. Ich verwende dieses Typ, da ich meine Userprofile per Node (Content Template) erstelle und Userfelder per CCK dazugefügt habe. (Also nicht mit dem standard Core Profile). Somit benötige ich den Typ Node um auch im View die Felder von meinem Nutzerprofil abfragen zu können.
Ich möchte nun eine Liste "meine Kontakte" mit einem View erstellen.
Probleme:
Bei den Feldern vom Typ "Inhalt" kann man aber keine "Beziehung" im View hinterlegen? Oder wie macht man das bei solchen Feldern?
Wenn ich die im o.g. Screenshot verwendeten Einstellungen in meinem View übernehme, bekomme ich die Kontakte immer drei mal angezeigt. (?)
Jemand eine Idee wo der Fehler ist?
Hier mein View:
$view = new view;
$view->name = 'aw_mycontacts';
$view->description = 'Shows the contacts of a given user';
$view->tag = '';
$view->view_php = '';
$view->base_table = 'node';
$view->is_cacheable = FALSE;
$view->api_version = 2;
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
$handler = $view->new_display('default', 'Standards', 'default');
$handler->override_option('relationships', array(
'requestee_id' => array(
'id' => 'requestee_id',
'table' => 'user_relationships',
'field' => 'requestee_id',
),
'requester_id' => array(
'id' => 'requester_id',
'table' => 'user_relationships',
'field' => 'requester_id',
),
'rtid' => array(
'id' => 'rtid',
'table' => 'user_relationships',
'field' => 'rtid',
),
));
$handler->override_option('fields', array(
'name' => array(
'label' => 'Name',
'alter' => array(
'alter_text' => 0,
'text' => '',
'make_link' => 0,
'path' => '',
'link_class' => '',
'alt' => '',
'prefix' => '',
'suffix' => '',
'help' => '',
'trim' => 0,
'max_length' => '',
'word_boundary' => 1,
'ellipsis' => 1,
'strip_tags' => 0,
'html' => 0,
),
'link_to_user' => 1,
'overwrite_anonymous' => 0,
'anonymous_text' => '',
'exclude' => 0,
'id' => 'name',
'table' => 'users',
'field' => 'name',
'override' => array(
'button' => 'Übersteuern',
),
'relationship' => 'requestee_id',
),
));
$handler->override_option('sorts', array(
'rtid' => array(
'order' => 'ASC',
'id' => 'rtid',
'table' => 'user_relationship_types',
'field' => 'rtid',
'relationship' => 'rtid',
'override' => array(
'button' => 'Übersteuern',
),
),
));
$handler->override_option('arguments', array(
'requester_id' => array(
'default_action' => 'default',
'style_plugin' => 'default_summary',
'style_options' => array(),
'wildcard' => 'all',
'wildcard_substitution' => 'Alle',
'title' => '',
'breadcrumb' => '',
'default_argument_type' => 'user',
'default_argument' => '',
'validate_type' => 'numeric',
'validate_fail' => 'not found',
'break_phrase' => 0,
'not' => 0,
'id' => 'requester_id',
'table' => 'user_relationships',
'field' => 'requester_id',
'validate_user_argument_type' => 'uid',
'validate_user_roles' => array(
'2' => 0,
'4' => 0,
'3' => 0,
),
'me_redirect' => 0,
'me_validate_user_argument_type' => 'uid',
'me_validate_user_roles' => array(
'2' => 0,
'4' => 0,
'3' => 0,
),
'override' => array(
'button' => 'Übersteuern',
),
'relationship' => 'none',
'default_options_div_prefix' => '',
'default_argument_user' => 0,
'default_argument_fixed' => '',
'default_argument_php' => '',
'validate_argument_node_type' => array(
'blog' => 0,
'poll' => 0,
'forum' => 0,
'panel' => 0,
'book' => 0,
'group' => 0,
'group_note' => 0,
'page' => 0,
'profile' => 0,
'story' => 0,
),
'validate_argument_node_access' => 0,
'validate_argument_nid_type' => 'nid',
'validate_argument_vocabulary' => array(
'1' => 0,
'2' => 0,
),
'validate_argument_type' => 'tid',
'validate_argument_transform' => 0,
'validate_user_restrict_roles' => 0,
'validate_argument_is_member' => 0,
'validate_argument_php' => '',
'me_validate_user_restrict_roles' => 0,
),
));
$handler->override_option('filters', array(
'approved' => array(
'operator' => '=',
'value' => '1',
'group' => '0',
'exposed' => FALSE,
'expose' => array(
'operator' => FALSE,
'label' => '',
),
'id' => 'approved',
'table' => 'user_relationships',
'field' => 'approved',
'override' => array(
'button' => 'Übersteuern',
),
'relationship' => 'none',
),
));
$handler->override_option('access', array(
'type' => 'none',
));
$handler->override_option('cache', array(
'type' => 'none',
));
$handler->override_option('title', 'My Contact View');
$handler->override_option('use_pager', 'mini');
$handler->override_option('style_plugin', 'grid');
$handler->override_option('style_options', array(
'grouping' => '',
'columns' => '4',
'alignment' => 'horizontal',
));
$handler = $view->new_display('page', 'Seite', 'page_1');
$handler->override_option('path', 'contacts/%/mycontacts');
$handler->override_option('menu', array(
'type' => 'none',
'title' => '',
'description' => '',
'weight' => 0,
'name' => 'navigation',
));
$handler->override_option('tab_options', array(
'type' => 'none',
'title' => '',
'description' => '',
'weight' => 0,
));
p.s. View, CCK etc. -> aktuellster Versionsstand.
Versuche mal das
am 05.08.2009 - 08:11 Uhr
Versuche mal das hier:
Argumente:
(requester): BenutzerUID:
Standardargument zu Verfügung stellen / Benutzer-ID aus der URL
Filter:
userrelationships: Relationtype=freund (in meinem Fall steht hier Freund, weil die Beziehung bei mir als freund angelegt wurde / das muss natürlich von Fall zu Fall geändert werden)
Ich habe die Erfahrung gemacht, dass man mit dem View-Type "Nodes" nicht zum gewünschten Erfolg in Bezug auf die Buddyliste kommt. Ich habe das an besagtem Tag (siehe oben mein Posting) stundenlang versucht. Irgendwann dann wurde ich auf die Anleitung auf drupal.org aufmerksam. Erst als ich wie dort beschrieben, userrelationship als Type nutzte, kam ich zum gewünschten Erfolg.
Grüße
monk77
Hallo, das funktioniert
am 05.08.2009 - 11:23 Uhr
Hallo,
das funktioniert leider auch nicht.
Das liegt wohl daran, dass die "Base-Table" bei dem View vom Typ "user-releationship" eine andere ist und daher die SQL Query nicht funktioniert.
Nun bin ich also in einer Zwickmühle: Verwende ich den View-Typ "user-realtionship" kann ich nicht auf meine "Inhalts" Felder des Nutzerprofils zugreifen. Verwende ich den Typ "Node" kann ich die Abfrage nicht bauen...
Hat vielleicht noch jemand eine Idee?
So ich habe die Lösung!
am 07.08.2009 - 13:29 Uhr
Damit man in einem View vom Typ "User Realtionship" auch Zugriff auf die Nodes hat, muss unter "Beziehungen" "(requestee) Node: Content Profile" hinzufügen. Eigentlich genau wie hier beschrieben:
View Einstellungen Screenshot
Viele Grüße