(gelöst) öffentliche und private profile

am 05.03.2011 - 12:21 Uhr in
hallo, ich bin auf der suche nach einem modul, mit dem man ähnlich wie bei "fazzebuch" sein profil auf privat oder öffentlich stellen kann. ich habe mal profil_privacy ausprobiert, aber damit kann ich ja nur einzelne felder im profil eben auf public stellen oder nicht.
ich möchte aber die sache dann so einstellen, das die user entscheiden können, das eben nur freunde die sachen sehen dürfen ...
gibt es das was? wie macht man es...oder muss ich irgendwie eine regel definieren? wenn ja, wie verbinde ich dies mit meiner idee?
danke
- Anmelden oder Registrieren um Kommentare zu schreiben
Du könntest ein Feld "Profil
am 05.03.2011 - 15:54 Uhr
Du könntest ein Feld "Profil öffentlich oder privat" einfügen, z. B. als Radiobuttons. Dann könntest du in einer Template-Datei für das Profil prüfen, wie das Feld gefüllt wurde und entsprechend den Content ausgeben.
lso wenn das Profil
am 05.03.2011 - 17:32 Uhr
lso wenn das Profil standardmäßig auf privat steht kannst du ich glaube mit friends oder buddy den usern die rechte geben, wer sein profil sehen darf
ja, aber das ist doch so bei
am 05.03.2011 - 18:50 Uhr
ja, aber das ist doch so bei profil privacy.... da kann man doch auch einen haken setzen und ein feld freigeben...
du meinst aber glaube ich was anderes...du meinst eine hinterlegung in der template datei und dann damit verbunden, die prüfung ob das profil angezeigt werden darf oder nicht. ok, das geht bestimmt... aber man muss wissen wie. ich bin nicht wirklich fit im coden, deshalb werde ich vermutlich hier nicht weiterkommen, es sei denn du hast eine anleitung dafür irgendwo im netz gefunden...
trotzdem danke
@ caw friends oder buddy?
am 05.03.2011 - 18:55 Uhr
@ caw
friends oder buddy? sind das module? ich benutze user relationships.... habe gerade mal nach diesen namen gesucht und bei drupal.org nichts gefunden, kannst du mir einen link geben?
http://drupal.org/project/fri
am 05.03.2011 - 19:05 Uhr
http://drupal.org/project/friendlist
Buddylist und Buddylist2 gibt's nur für Drupal 5.
ok, dann geht es ja nicht,
am 05.03.2011 - 19:15 Uhr
ok, dann geht es ja nicht, denn ich nutze drupal 6.
kann man denn da mit user relationships auch was machen? wenn ich jemanden doch mit einer "beziehung" markiert habe, dann könnte man doch etwas mit "wenn dann" machen...zumindest in der theorie
gibt es da einen trick oder ein modul für drupal zu? oder geht das wirklich nur, wenn man coden kann??
danke
mit relationship geh das
am 05.03.2011 - 20:15 Uhr
mit relationship geh das glaube ich, daß man die rechte am profil vergeben kann.
und friendlist gibts auch für drupal 6!!!
beide haben nodeaccess integriert. wenn du die profile mit contentpofile machst, hast du alles was du brauchst
@beaschmitz Ich muss das
am 06.03.2011 - 00:17 Uhr
@beaschmitz
Ich muss das selbe in Kürze auch machen. Wie Du, nutze ich User Relationship, in der API gibt es sicherlich eine entsprechende Funktion um abzufragen ob der User "Freund" ist oder nicht. Ich erstelle dazu, wie Exterior vorgeschlagen hat, im Content Profile eine Checkbox ... falls die aktiviert ist, wird das User-Objekt abgefragt und dann geschaut ob die UID in der Freundesliste ist oder nicht. Ich nutzte für meine Profile 8 - 10 Views-Blöcke also regel ich das einfach über die Block-Sichtbarkeitseinstellungen und dort kommt die If-Anweisung rein. Wenn der User kein Freund ist, wird ihm ein spezieller Block angezeigt der ein Standardbild oder eine Miniversion des Profilbildes enthält + Hinweis, dass das Profil nur für Freunde sichtbar ist und eventuell "Jetzt eine Freundschaftanfrage schicken".
Wie bei Facebook halt ... und meiner Meinung nach ist die ganze Geschichte nicht schwer und recht simple, das sind sicher nicht mehr als 20 Zeilen Code (mal gucken). Wenn ich das bei mir umgesetzt habe, kann ich Dir gerne Bescheid geben.
Gruß Matthias
hi matthias, danke für deine
am 06.03.2011 - 00:46 Uhr
hi matthias,
danke für deine antwort. erstmalig fühle ich mich einwenig verstanden... nur bin ich nicht so der crack und habe irgendwie die struktur noch nicht durchschaut... wie sage ich drupal zum beispiel, dass es 7-8 views anzeigt oder nur anzeigt, wenn etwas aktiviert ist. ich habe es jedoch schon geschafft einen freunde view in das profil von jedem user einzubauen... wie kann ich aber einem view sagen, dass er nur erscheint, wenn die checkbox markiert ist? und wie kann ich einem profil sagen, dass nur die views angezeigt werden sollen? ok, du siehst, ich bin nicht so der crack und habe eben die struktur noch nicht ganz durchschaut.
genau, so will ichs (und wahrscheinlich viele andere auch) haben, wie bei fazzebuch :)
ich würde mich sehr freuen, wenn du dich meldest, wenn du es umgesetzt hast!!! und vor allem: dann eben wie?!
danke
Hallo Bea, die Checkbox ist
am 06.03.2011 - 12:49 Uhr
Hallo Bea,
die Checkbox ist ein ganz normales CCK-Feld. Dieses wird 2 Werte haben: "Nein" und "Ja" - wenn die Checkbox aktiviert ist, und der Wert "Ja" ist (Profile nur für Freunde sichtbar), kann man über ein if-Anweisung abfragen ob der Besucher-User mit dem Account-User eine Relationship hat oder nicht.
Wenn man z.B. Blöcke nutzt, kann man in den Blockeinstellungen unter "Sichtbarkeitseinstellungen" über PHP-Code eine Wert übergeben "True" oder "false" - bei True wird der Block angezeigt, bei False nicht.
Wenn also eine Relationship vorhanden ist, übergeben wir True und der Block ist sichtbar - wenn false dann nicht.
Falls man den Profile-Inhalt über die user-profile.tpl.php ausgibt, kommt der Code dort rein und man steuert die Sichtbarkeit der $profile-Variable.
Ich habe eben in die UR-API geschaut und mir die Funktion rausgesucht. Die Abfrage, ob der Besucher-User mit dem Account-User befreundet ist, funktioniert schon mal. Jetzt muss das "nur noch" in eine funktionierende If-Anweisung rein.
Ich mache das aber jetzt nicht fertig – draußen scheint die Sonne und ich werde heute meine erste größere Fahrradtour machen [damit ich nicht körperlich verfalle ;-) ] – vielleicht schaffe ich es heute Abend oder aber erst morgen/übermorgen. Wenn ich soweit bin, werde den Code aber auf alle Fälle hier posten damit Du das nachvollziehen und bei Dir verwenden kannst.
Schöne Grüße erstmal
Matthias
hi matthias, das wäre echt
am 06.03.2011 - 19:26 Uhr
hi matthias,
das wäre echt super... dann würde ich versuchen, ob ich dies irgendwie nachgebaut bekomme....
bin aber leider nicht so fit im coden und etwas hilflos.
muss mal versuchen, ob ich dies hier http://drupal.org/node/35728
verstehe und dann komme ich vielleicht irgendwie auch dahinter, was bzw. wie du das machst!
auf jeden fall schon mal vielen dank für deine hilfe! ich denke das diese antwort viele leute hier im drupalcenter interessiert, da ja alle ihr mini fazzbuch nachbauen wollen! leider findet man dafür zuwenig hier auf der seite
danke!
Hallo Bea, hier jetzt mal
am 20.03.2011 - 14:44 Uhr
Hallo Bea,
hier jetzt mal eine vereinfachte aber funktionierende Version. Ich wollte es eigentlich eleganter und umfangreicher machen aber momentan ist es bei mir zeitlich sehr knapp. Ich werde die umfangreichere Version aber, besonders für Block-Profile (wenn man seine Profile über Blöcke ausgibt), noch nachreichen.
Falls man sein Profile teilweise öffentlich und teilweise privat ausgeben will, empfiehlt es sich sowieso mit Blöcken zu arbeiten. Man kann im Node-Add-Form diverse CCK-Felder in Gruppen zusammenfassen und jede einzelne Gruppe wird in einem eigenen Block ausgegeben.
Falls man also im Profile (so wie bei mir) 10 Blöcke hat ala "Block:Adresse" - "Block:Hobbys" - "Block:Lieblingsmusik" usw. dann könnte man z.B. den Block:Lieblingsmusik für alle (Nichtfreunde) anzeigen lassen und den Block:Adresse und Hobbys nur für Freunde. Somit könnte man ganz geziehlt entscheiden was die Öffentlichkeit sehen darf und was nicht. Die Version für die Blöcke veröffentliche ich aber ein anderes Mal.
Die jetzige Version blendet, wenn man "befreundet" ist, das gesamte Profile ein und wenn man nicht befreundet ist, wird ein Hinweis-Block ausgegeben. Vorraussetzung ist das Modul "Content-Profile". Für das Core-Profile funktioniert das (noch) nicht - eine angepasste Version fürs Core-Profile liefere ich bei Gelegenheit nach.
Los gehst:
Folgende Module werden benötigt:
User Relationship
Content Profile
CCK
"Views Customfield" http://drupal.org/project/views_customfield
Zur Einrichtung von User Relationship sage ich nichts, sprich, ich gehe davon aus, dass Du UR aktiviert und auch eine Beziehung angelegt hast und dass Du der jeweiligen Rolle die Anfrage und Bestätigung einer Beziehung erlaubt hast. Weiterhin gehe ich davon aus, dass Dein Content-Profile-Inhaltstyp "profile" heißt (ist Standard) und dass dieser Inhaltstyp als Content-Profile aktiviert wurde.
1. Kopiere die Datei "user-profile.tpl.php" aus modules/user in Deinen Themeordner. Danach den Cache löschen!
2. Öffne den Profile-Inhaltstypen und lege unter "Felder" ein neues Text-Feld als "Single on/Off Checkbox" an. Als Name für diese Feld wähle bitte field_profile_privacy_active (bitte genau so -> wichtig!). Als Werte wählst Du Nein und darunter Ja.
3. Lege Dir einen Benutzer-View mit dem Namen No_Friend an. Erstelle davon einen Block. Als Felder nimmst Du das User-Benutzerbild (als kleine Imagecache-Version) - den User-Namen, ein Global-Textfeld mit dem Text "Dieses Profile ist nur für Freunde sichtbar" und ein View-Customfiled (PHP). In das View-Customfiled übernimmst Du folgenden Code.
<?php
global $user;
if (arg(0) == 'user' && $user->uid != arg(1)) {
$account = user_load(arg(1));
$actions = _user_relationships_ui_actions_between($user, $account);
if (count($actions)) {
print theme('item_list', $actions);
}
}
?>
Dieser Code erzeugt, wenn Nicht-Freunde das Profile aufrufen, einen "Become a friend Link" sodass sie eine Freundschaftsanfrage verschicken können.
Als Argument im View wählst Du User: Uid -> Provide default argument -> User ID from URL
4. Öffne die user-profile.tpl.php und ersetze print $user_profile; mit folgendem Code.
<?php
global $user;
if (arg(0) == 'user' && is_numeric(arg(1))) {
$account = user_load(arg(1));
if (isset($account->uid)) {
$node = content_profile_load('profile', $account->uid);
$user_is_friend = user_relationships_load(array('between' => array($user->uid, $account->uid), 'approved' => TRUE)) ? 1 : 0;
if (arg(0) == 'user' && $user->uid == arg(1)) {
print $user_profile;
}
elseif ($node->field_profile_privacy_active[0][value] == 'Nein') {
print $user_profile;
}
elseif ($node->field_profile_privacy_active[0][value] == 'Ja' && $user_is_friend == 0) {
print views_embed_view('No_Friend', 'block_1');
}
elseif ($node->field_profile_privacy_active[0][value] == 'Ja' && $user_is_friend == 1) {
print $user_profile;
}
}}
?>
Das wars auch schon. Dir - als Profile-Inhaber wird Dein eigenes immer Profile angezeigt - wenn Du in Deinem Content-Profil die Checkbox aktiviert hast, wird Dein Profile nur noch Usern angezeigt die mit Dir befreundet sind - andere User bekommen den Hinweisblockzu sehen.
Hinweis: Wenn Ihr schon ein existierendes Content-Profile habt, muss das Profile, nach dem Hinzufügen des Feldes field_profile_privacy_active, einmal neu gespeichert werden damit der Nein/Ja-Wert gesetzt wird.
Screenshots:

Textfeld als Single On/Off-Checkbox
Werte für das Textfeld

View-Einstellungen

Ganz einfaches Profile für alle anderen User sichtbar (Checkbox nicht aktiviert)

Wenn die Checkbox aktiviert ist, wird das Profile für Nichtfreunde ausgeblendet und dafür der Hinweis-View-Block mit dem "Become a Freind Link" eingeblendet

Schöne Grüße erstmal
Matthias
GIGANTISCH !!!!!!!!!!!!
am 14.03.2011 - 17:22 Uhr
Hey Matthias!!! Das ist Welt!
Ich habe noch nie eine so gute Anleitung im Netz gefunden!!! Bisher hat sich hier auch niemand in der Drupal Community bereit erklärt mal so ausführlich darüber zu informieren!
Schade, dass ich es erst heute gesehen habe, da ich auch immer nur am Wochenende zum Basteln komme :)
Ich freue mich schon total darauf, es auszuprobieren!
10000000000000000000000 Dankeschön!!!
Ich melde mich dann nochmal nach dem Wochenende! Dir eine super Woche!!!!
THANXXXX!!!!!
Soweit ich das weiß, geht das
am 14.03.2011 - 19:25 Uhr
Soweit ich das weiß, geht das auch alle mit contentprofile und friends
ja, dann sag doch mal wie?
am 15.03.2011 - 20:32 Uhr
ja, dann sag doch mal wie? beiträge in diesem forum, wenn jemand eine frage stellt sind ja immer nur sinnvoll, wenn sie ein antwort beinhalten...und nicht eine weitere frage darstellen...
Hallo Matthias
am 20.03.2011 - 01:36 Uhr
ich bin jetzt Deine Anleitung mal so durchgegangen...
es klappt eigentlich schon, jedoch nicht so gut.
1. von den zulässigen werten erscheint immer nur JA (das nein erscheint gar nicht)
2. ein NICHTFREUND liest folgendes auf dem profil:
PHP-Code:
Parse error: syntax error, unexpected $end in (...)/sites/all/modules/views_customfield/includes/views_customfield_handler_field_phpcode.inc(118) : eval()'d code on line 10
3. ich hatte gerade vorher das modul onepage profile eingesetzt um die profilseite etwas zu optimieren...nun habe ich
wieder ein neues fenster bzw. reiter = profil kann ich dies wieder optimieren? ok, dies ist ein anderes problem
vielleicht ist es auch schon zu spät... :)
hast du eine idee?
danke.... und auch vorab für die blockvariante!!!
Hallo Bea, 1. Dass als
am 20.03.2011 - 10:48 Uhr
Hallo Bea,
1. Dass als zulässiger Wert nur "Ja" angezeigt wird, ist so gewollt. Falls der User zwischen Ja und Nein auswählen soll ("Nein" ist im Moment wenn das Kästchen nicht aktiviert wurde) dann musst Du anstatt "Single on/off Checkbox" -> "Checkboxes/Radio Buttons" wählen. (Bitte erstmal grundsätzlich mit CCK-Textfeldern beschäftigen.)
2. unexpected $end ..... eval()'d code on line 10. Zähle doch bitte einmal die Zeilen des Codes für das Customfield durch. Gibt es dort einen Zeile 10? Nein - also verwendest Du entweder noch anderen/weiteren Code für dieses Feld oder Du hast das PHP-End-Tag vergessen oder aber nach dem PHP-End-Tag befinden sich noch leere Zeilen denn der Code besteht nur aus 8 bzw. 9 Zeilen. Da der Fehler in Zeile 10 auftritt, musst Du nachsehen was dort steht oder mal versuchen die leeren zeilen/Leerzeichen komplett zu löschen.
3. Zum "Onpage-Profile" kann ich nichts sagen da ich dieses Modul noch nicht verwendet habe.
.... wieder ein neues fenster bzw. reiter = profil kann ich dies wieder optimieren?
K.A. was Du damit meinst.
Gruß Matthias
Hallo Matthias
am 20.03.2011 - 14:39 Uhr
Vielen Dank für Deine schnelle Antwort.
Zu
1. OK, das mache ich bzw. jetzt habe ich es verstanden: Die Frage lautet -> möchten Sie Ihr Profil nur für Freund sichtbar
machen -> Haken dran = ja. Und wenn man eine andere Optik haben will nutzt man einfach eine andere CCK Textfield
variante.
2. ich bin nochmals in die Ansicht gegangen: Feld Customfield: PHP-Code
Dort kann ich in das Feld "wert" den Code reinkopieren... wenn ich dies tue, kommt aber immer automatisch ein
Zeilenumbruch in dieser Zeile hier: $actions = _user_relationships_ui_actions_between ..... Oder anders: es passt
nicht in eine Zeile... kommt der Fehler eventuell daher? Ich habe einfach Deinen Code kopiert und eingefügt, kann mich
also nicht vertippt haben?! jetzt habe ich den Fehler "eval()'d code on line 9" in Line 9....
3. OK, anderes Problem...lass ich erst mal weg :)
Was mache ich bloß mit dem Code falsch? Ich schliße den Code doch mit einem ?>
Hmm?
Danke und Gruß
Bea
UPS - Du musst noch 2
am 20.03.2011 - 14:45 Uhr
UPS - Du musst noch 2 schließende Klammern setzen (das habe ich oben tatsächlich vergessen)
Also - vor dem schließenden PHP-End-Tag setze noch
} }
Ich aktuallisiere den Code oben gleich noch (is jetzt geändert).
Nun müsste es funktionieren.
Yes!
am 20.03.2011 - 18:52 Uhr
Danke Matthias,


jetzt hat es geklappt...bin leider noch php dumm...habe mir aber ein Buch gekauft und möchte mich gerne mit der Sprache vertraut machen.
Es klappt alles wunderbar!! Ich danke Dir!!!!!
Jetzt habe ich nur noch ein Problem...dieses mit dem zusätzlichen Reiter...aber ich bin jetzt drauf gekommen, wieso...ich nutze Advanced Profile, da kann man felder bauen und sie unter "Benutzereinstellungen" auch direkt konfigurieren, ohne sie bzw. den Inhaltstypen "profile" noch extra als CONTENT PROFILE zu markieren...
Das macht man dann hier:
Und dann kommt eben dieser "Salat" dabei raus...sieht nicht so schick aus...
Meinst Du ich könnte auch den Haken bei CONTENT PROFILE (beim Inhaltstypen "profile") wieder herausnehmen und eben ein entsprechendes CHECK FELD über den Advancd PROFILE Modus unter Benutzerverwaltung erstellen?
Könnte das dann genauso funktionieren?
Danke!!
Hallo Bea, ich habe mit
am 20.03.2011 - 19:09 Uhr
Hallo Bea,
ich habe mit "Advanced Profile" noch nicht gearbeitet. Falls es damit aber möglich ist eine Checkbox im Profil einzubinden, kann man das natürlich auch so machen. Es spielt eigentlich keine Rolle wo die Checkbox zu finden ist.
Du musst dann halt schauen wie Du auf diese Checkbox zugreifen kannst damit Du abfragen kannst ob Ja/Nein gewählt wurde. Der Code (von oben) muss dann dementsprechend angepasst werden.
Wie man das genau macht, kann ich aber leider nicht sagen, da ich mich, wie gesagt, nicht mit "Advanced Profile" auskenne.
Gruß Matthias
Hallo Matthias, ok, ich werde
am 21.03.2011 - 19:43 Uhr
Hallo Matthias,
ok, ich werde dies ausprobieren und hier posten... Soll ich die Frage schon auf "gelöst" stellen oder warte ich noch bis Du die Block Variante eingetragen hast?
Danke und Gruß!
Blockvariante kommt nicht mehr
am 23.04.2011 - 11:02 Uhr
Ich stelle es auf gelöst, da die Blockvariante nicht mehr geliefert wird.
Trotzdem DANKE!
Dieses Konzepz mit Profile2
am 26.10.2011 - 18:09 Uhr
Tach zusammen!
hat jemand eine Ahnung, ob das beschriebene Konzept auch mit für Drupal7 notwendige Profile2 möglich ist?
Vielen Dank im Voraus!