Userprofile bookmarken
Eingetragen von wanderfrosch (56)
am 08.04.2008 - 16:38 Uhr in
am 08.04.2008 - 16:38 Uhr in
Hallo,
kennt jemand eine Möglichkeit Benutzer Profile zu "My Bookmarks" hinzuzufügen. Ich habe es versucht mit dem Modul "views bookmark" nur schaffe ich es nicht in die Panels einen "Bookmark link" einzubauen.
Hat jemand eine Idee was ich falsch mache? Oder funktioniert mein Vorhaben so nicht.
Danke im vorraus.
- Anmelden oder Registrieren um Kommentare zu schreiben
Hat keiner
am 09.04.2008 - 12:11 Uhr
...eine Idee???
Welches Profil verwendest Du?
am 09.04.2008 - 12:38 Uhr
Welches Profil verwendest Du? Das normale von Drupal oder ein Profil mit Node Profile oder aehnlich gelagerten Modulen?
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
Das Advanced Profile2.
am 09.04.2008 - 12:50 Uhr
Das Advanced Profile2.
Nur Nodes koennen gebookmarkt werden
am 09.04.2008 - 12:55 Uhr
Wenn ich Jetzt richtig liege ist die Situation so.
Nur Nodes können gebookmarkt werden. Profile, auch mit Advanced Profile2 aufgepeppte, sind keine Nodes.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
Was halt nur komisch ist,
am 09.04.2008 - 13:01 Uhr
Was halt nur komisch ist, dass ich in den Einstellungen von "Views Bookmark" alles das aktivieren kann.
Also: usernode,panel,user profile, etc.
Siehst Du ne andere Möglichkeit???
"Node Profile"
am 09.04.2008 - 13:51 Uhr
Was halt nur komisch ist, dass ich in den Einstellungen von "Views Bookmark" alles das aktivieren kann.
Also: usernode,panel,user profile, etc.
Siehst Du ne andere Möglichkeit???
Wenn Du user profile als Option in der Bookmark Konfig siehst bedeutet es nicht zwingend das es auch waehlbar sein muss.
Beispiel fuer diese Logik/Unlogik ist CCK. Bei bestimmten Feldtypen wird auch das Feld der Optionsliste angezeigt, selbst wenn man kein Selectfeld definiert.
Ich kenne das Bookmark Modul nicht. Deswegen weiss ich nicht ob bei der Sache mit den User Profilen ein Workaround existiert - vermutlich eher nicht. Es sei den man verwendet die normalen (Advanced) Profile nicht.
Eventuell bringt Dich http://groups.drupal.org/profiles-as-nodes weiter.
Dort geht es in Richtung des Modules "Node Profile"
Wenn es keinen Workaround gibt um normale Profile zu Bookmarken und diese Funktionalitaet fuer Dich wichtig ist wirst Du wohl den Schritt in Richtung des Modules "Node Profile" gehen muessen. D. h., Du musst die (Advanced) Profiles der User auf Nodes umstellen die ein "Node Profile" Node sind.
PS
drupal.org ist Heute down, oder fast down.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
Hallo quiptime, vielen Dank
am 10.04.2008 - 08:50 Uhr
Hallo quiptime,
vielen Dank für die ausführliche Antwort.
Das hat erstmal auch in Sachen "Drupalhintergrundwissen" weiter geholfen.
...halt so als "Neudrupaler".
Wie meinst Du das
am 16.04.2008 - 13:05 Uhr
Wie meinst Du das ???
D. h., Du musst die (Advanced) Profiles der User auf Nodes umstellen die ein "Node Profile" Node sind.
Kannst Du mir die Vorgehensweise mal näher erklären.
Das könnte mir, denke ich, weiter helfen. Da alle Module die was mit Bookmark zutun haben die NodeID abspeichern und keine UserID.
Bzw. ist es möglich anhand der UserID die dazugehörige NodeID abzufragen??
Wäre nett wenn ich von Dir hören würde. Wie gesagt ich bin noch Anfänger.
Wie bereits gesagt, die
am 16.04.2008 - 16:02 Uhr
Wie bereits gesagt, die normalen Userprofile von Drupal sind keine Nodes. Deswegen verhalten sich die Profile nicht wie Nodes und koennen nicht wie Nodes verwendet werden.
Nodes koennen in einzelnen Nodetypes mit CCK erweitert werden. Ebenso kann man mittels Views sehr viel mit Nodes anstellen.
Um nun Profile von Usern als normale Nodes verwenden zu koennen gibt es verschiedene Module.
Usernode,
Node Profile
Bio
Zur Verwendung dieser Module gibt es einiges an Dokumentationen. Das Meiste davon wenn nicht alles bezieht sich auf Drupal 5.x. Auch sind nicht alle Dokus zu dem Thema ganz aktuell. Wenn man diese Dokus liest, vor allem das von Michel, kommt man schnell zu einer verwirrenden Situation und verliert den Ueberblick was denn nun eigentlich genau zu tun ist.
Aus meiner Erfahrung ist die Verwendung des Modules Node Profile am geeignetsten. Damit meine ich, einzig die Verwendung dieses Modules. Ohne das Modul Usernode. Wird das Modul Node Profile verwendet kann bzw. sollte man sogar das normale Userprofil deaktivieren.
Um auf deine Frage mit den Node ID's und den User ID's zurueckzukommen.
Das Modul Node Profile hat eine Funktion aehnlich dem ganz normalen Node Modul. Beim normalen Node Modul hat die Funktion den Namen node_load(). Beim Modul Node Profile hat die Funktion den Namen nodeprofile_load().
Diese Funktion ist das schweizer Taschenmesser bei Userprofilen unter Verwendung von Node Profile. Diese Funktion kann immer dann zum Einsatz kommen wenn man gezielt auf Daten einzelner Node Profile Node zugreifen will.
Beispiel eines solchen Zugriff.
Ein Nodetyp "address" mit Namen Adresse wurde definiert und mit CCK erweitert. Er hat u. a. die Felder "field_firstname" und "field_lastname".
Nun gibt es von vielen Usern jeweils ein Node vom Typ "address". Das angelegte Template ist "node-address.tpl.php". Bei der Ausgabe der einzelnen Nodes vom Typ "address" soll die User ID ermittelt und die beiden Felder "field_firstname" und "field_lastname" sollen extra formatiert ausgegeben werden. Im Template kennt man einzig die Node ID.
Im Template "node-address.tpl.php" kommt dieser Code zum Einsatz:
$mynode = nodeprofile_load('address', arg(1));
// Vorname
$firstname = $mynode->field_firstname[0]['value'];
//Nachname
$lastname = $mynode->field_lastname[0]['value'];
// User ID
$userid = $mynode->uid;
Bei Anzeige einer Node lautet die URL
http://domain.com/node/x
. Die ID der Node ist x. Und demzufolge ist im Codebeispiel beinodeprofile_load('address', arg(1))
arg(1) die ID der aktuellen Node.Hinweis:
Ich habe nicht aus Spass $mynode im Codebeispiel
$mynode = nodeprofile_load('address', arg(1));
geschrieben.Der Grund.
Man kann sich schnell das normale Nodeobject ueberschreiben wenn man gewohnheitsmaessig
$node = nodeprofile_load('address', arg(1));
verwendet.Ich hoffe ich konnte Dir ein Stueck weiterhelfen.
Ansonsten musst Du Deine Fragestellung etwas praezisieren.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
Hallo quiptime,
am 17.04.2008 - 11:27 Uhr
Hallo quiptime,
Danke für die ausführlichen Infos.
Verwirrend ist seeehr gut aus gedrückt.
Das hat mir, dank Deines Code-Schnipsels alles sehr weitergeholfen. Das Problem was ich mit allem habe ist, dass das AdvProf ja auf Node Profile aufsetzt (zumindest muss man es im Inhaltestyp aktivieren).
Usernode wird wiederum z.B. von Buddylist UI benötigt. was zur Folge hat, dass ich dieses Modul auch brauche.
Ich habe vor, ähnlich wie bei XING, das meine Nutzer die Möglichkeit haben diverse, andere Nutzerprofile die für sie relevant sind zu bookmarken und ggf. (das wäre dann der zweite Schritt) sich noch Notitzen zu den abgespeicherten Benutzern machen zu können.
Wie gesagt, die beiden Bookmark Module die es z.Z. gibt, speichern halt nur die NodeID´s und nicht die UserID´s.
Es ist dann so wenn die ID eines Users "4" ist und ich will mir den User bookmarken, wird mir, wenn ich auf "My Bookmarks" gehe dann z.B. der Node "4" angezeigt. Der kann dann allerdings vom Typ "Story" sein. Weil die beiden ID´s gleich sind.
Das ist halt das Problem.
Um auf Deinen Code Schnipsel zurückzukommen. Ich habe es jetzt so gelöst.
<?php
//Modul advanced_profile/includes/panels-content_userinfo.inc
$mynode = nodeprofile_load('usernode', arg(1));
$myuserid = $mynode->nid;
if (module_exists('views_bookmark') && ($account->uid != $user->uid)){
$vars['bookmark_user_class'] = "bookmark-user";
$vars['bookmark_user_icon'] = theme_image(path_to_theme() . '/' . $themedir . "/images/bookmark_user.png", 'Add user to Bookmarks', 'Add user to Bookmarks', NULL, TRUE);
$vars['bookmark_user_text']= t('Bookmark User');
$vars['bookmark_user_link'] ='views_bookmark/mark/'.$myuserid.'/1';
$vars['bookmark_user'] = '<div class="'.$vars['bookmark_user_class'].'">' . l($vars['bookmark_user_icon'] . ' '. $vars['bookmark_user_text'], $vars['bookmark_user_link'],NULL,NULL,NULL,NULL,TRUE) .'</div>';
}
?>
Das scheint bei den ersten Versuchen auch funktioniert zu haben.
Ich hoffe nicht, dass Du jetzt die Hände über dem Kopf zusammen schlägst. ;-)
LG,
Der Wanderfrosch
OK, meine Empfehlung mit
am 17.04.2008 - 13:54 Uhr
OK, meine Empfehlung mit Node Profile only zu arbeiten ist die abgespeckteste Variante um ein oder mehrere Nodetypes als Userprofil/e zu verwenden.
Du hast natuerlich Recht mit der geschilderten Situation der Abhaengigkeiten bezueglich Usernode usw. - eben in Deinem konkreten Aufgabenszenario.
Dein Codesnipped. Wo hast Du den Code eingefuegt? Deute ich richtig mit "panels-content_userinfo.inc"?
Noch was Allgemeines zur Verwendung und dem Einsatz von Templates.
Sehe Dir mal den Code der beteiligten Module Bookmarks und AdvProf naeher an. Insbesondere suche dabei nach Funktionen mit dem Schema
function theme_ich_eine_funktion()
Diese Theme-Funktionen geben in der Regel irgend etwas aus. Fuer diese Funktionen kann man Templates erstellen. Wenn Du so willst sind das dann Funktions-Templates - ist jetzt 'ne inoffizielle Bezeichnung von mir.
Mit solchen Funktions-Templates solltest Du arbeiten. Damit wird der Code der einzelnen Module/Moduldateien in denen diese Templates "ihren Ursprung" haben nicht angetastet und sie bleiben fuer eventuelle Updates in Bereitschaft.
Meist gibt es an diesen Theme-Funktionen Beschreibungen ueber ihre Funktionen. Oder man kann mit etwas Phantasie und bei vom Modulentwickler guenstig gewaehlten Variablennamen auf ihre Funktion schliessen. Auch kann man nachsehen was an den Stellen passiert an denen diese Theme-Funktionen im Modul aufgerufen werden.
Beisp.
Die Funktion
function theme_ich_eine_funktion($foo, $bar)
wird mit aufgerufen/angesprochen mittheme('ich_eine_funktion', $variable1, $variable2)
.Wenn eine solche Theme-Funktion Variablen uebernimmt ist es manchmal interessant zu wissen wie die Variablen gefuellt werden. Deswegen schaut man an die Stellen wo diese Funktionen aufgerufen/angesprochen werden.
Mit etwas Phantasie und bei vom Modulentwickler guenstig gewaehlten Variablennamen kann man dabei wichtige Informationen gewinnen die man fuer seinen eigenen Code bzw. die Programmierungen im Funktions-Template wissen sollte oder gebrauchen kann.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.