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

Block Anzeige mit PHP definieren: Nur auf Userprofil und bei Beziehung aus User relationships in Kombination mit Profilschutz

Eingetragen von beaschmitz (469)
am 07.09.2011 - 19:47 Uhr in
  • Views
  • Drupal 6.x

Hallo,
ich habe einen Block der soll nur auf bestimmten Seiten angezeigt werden. Dies habe ich hinbekommen... Nun wird es etwas komplizierter:
Der Block enthält vom User hochgeladen Bilder und wird nur auf der entsprechenden Profilseite angezeigt.
Jetzt kommts: ich habe die Profilseite mit der Möglichkeit versehen, von öffentlich auf privat einzustellen. Dann können nur Freunde (mit User relationships realisiert) die Profilseite aufrufen. Naürlich wird dann (obwohl der User vielleicht auf "privat" gestellt hat) leider immer noch der Block angezeigt.
Die Blöcke werden doch immer nur angezeigt, wenn PHP true zurück gibt... mit den Userseiten bekomme ich es hin, aber nun muss noch die Abfrage mit "Freund ja" oder "Freund nein" rein... Dieser Code hier klappt leider nicht:

<?php
if (arg(0) == 'user' && is_numeric(arg(1))) {
  return
TRUE;
}
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)) {
return
TRUE;
}
elseif (
$account->profile_profilschutz == 'Nein') {
return
TRUE;
}
elseif (
$account->profile_profilschutz == 'Ja'  && $user_is_friend == 0) {
return
FALSE;
}
elseif (
$account->profile_profilschutz == 'Ja'  && $user_is_friend == 1) {
return
TRUE;
}
return
FALSE;

?>

Hat jemand einen Tipp, warum nicht?!
DANKE

‹ [gelöst] Nodes filtern nach Datumsfeld Node kann nicht gespeichert werden, wenn CCK Filefield oder Imagefield verwendet wird! ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Taxonomy Access?

Eingetragen von Frank Ralf (2135)
am 08.09.2011 - 08:49 Uhr

Ich bin mir nicht sicher, ob es mit deinem selbstgestrickten PHP nicht langsam zu kompliziert wird. Hast du schon mal geguckt, ob du das nicht einfacher mit einem der Module für taxonomiebasierte Zugriffskontrolle hinbekommst?

http://drupalmodules.com/m?title=access&c=Taxonomy

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hmm, da sieht so aus, als ob

Eingetragen von beaschmitz (469)
am 08.09.2011 - 09:43 Uhr

Hmm,
da sieht so aus, als ob man damit den Zugriff auf Nodes steuert. Dann eben über Taxanomy.
Ich möchte ja aber eigentlich nur den Block entsprechend ein- bzw ausblenden, wenn bestimmte Zustände vorliegen.
1) soll also nur im Userprofil angezigt werden
2) eben nur wenn das Profil auf öffentlich steht
Dieser Code hier (leicht abgeändert) erzeugt also den Profilschutz:

<?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 Profil wird dann entweder angeziegt oder es wird, wenn kein "Freund" und Profilschutz an, einfach ein Block aufgerufen (der "No friend" block)... Das ist es schon.
Und nun soll der Block mit den Bildern (welcher eben neben dem Userprofil aufgreufen wird) auch nur erscheinen, wenn gewünscht. Wie realisiere ich dies mit Rückgabe TRUE ?
Bin jetzt wirklich kein PHP Experte und experiemntiere hier lange rum, bis es auf der Reihe habe...vielleicht könnte mir jemand sagen, was ich falsch mache?
DANKE

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hat jemand eine Idee?

Eingetragen von beaschmitz (469)
am 08.09.2011 - 17:21 Uhr

Hat jemand eine Idee?

  • Anmelden oder Registrieren um Kommentare zu schreiben

kanst du das in den views

Eingetragen von caw (2762)
am 08.09.2011 - 18:40 Uhr

kanst du das in den views nicht mit relationship einstellen??
dann kannst du doch einfach einen block mit view erstellen

  • Anmelden oder Registrieren um Kommentare zu schreiben

Freunde-Module im Vergleich

Eingetragen von Frank Ralf (2135)
am 08.09.2011 - 19:40 Uhr

Vielleicht doch noch mal gucken, ob nicht jemand das Rad schon erfunden hat ;-)

http://www.mediacurrent.com/blog/comparison-friend-modules-drupal-6

http://drupalmodules.com/module/profile-privacy
http://drupalmodules.com/module/privacy-per-user
http://drupalmodules.com/module/flag-friend
http://drupalmodules.com/module/user-relationships

(Dort lohnt auch immer ein Blick auf die "Related Modules".)

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Frank, hallo caw,danke

Eingetragen von beaschmitz (469)
am 08.09.2011 - 20:04 Uhr

Hallo Frank, hallo caw,
danke für die Tipps... die Idee mit dem View ist eigentlich gut, aber leider kann man hier bei FILTER nur Relationship JA oder NEIN bzw. OFFEN oder ANGENOMMEN auswählen. Dies geht aber dann ja so bei mir nicht... Wenn jemand sein Profil auf öffentlich hat, dann soll ja auch der NICHT-FREUND den Block sehen dürfen.

Ich möchte nochmals den Sachverhalt mit Bildern darstellen, vielleicht wird dann klarer was ich machen möchte.
Ich habe das Profil ganz normal mit den Profile Felder zusammengesetzt. Dann wird es über die user-profile.tpl.php aufgerufen. Dieses Profil hat nun ein Profile-Feld welches einfach mit JA oder NEIN 2 Werte wiedergibt. Es ist also das Feld
$account->profile_profilschutz

Der User kann nun wählen, ob Profilschutz, ja oder nein...entsprechend wird dann eben das Profil "geprinted" oder nicht...wenn nicht, wird einfach ein "No friend" Block aufgerufen mit dem Hinweis, das dieses Profil geschützt ist und man eine Freundschaftsanfrage stellen kann, um es aufrufen zu können (FAZZEBOOK lässt grüßen)

Neben diesem Profil gibt es dann eben Blöcke (links) die User generierten Content dieser Person zeigen. Jetzt kann ich ja unter dem Block einstellen, wann er aufgerufen werden soll bzw. darf.... da muss ich doch dann auch die If Bedingungen für den Profilschutz irgendwie mit TRUE oder FALSE eingebaut bekommen?!!

Bitte, helft mir den Horizont zu erweiteren und für viele andere Drupalianer auch! Falls Lonit diesen Beitrag liest...please! Du kannst helfen! Für dich wäre es nur eine Minute. DANKE!


AnhangGröße
Profil.png 95.41 KB
Block.png 45.83 KB
  • Anmelden oder Registrieren um Kommentare zu schreiben

Hmm, ich versuche und

Eingetragen von beaschmitz (469)
am 08.09.2011 - 23:20 Uhr

Hmm, ich versuche und versuche und es will nicht gelingen:
folgender Ansatz: Der Block soll nur angezeigt werden, wenn folgende Bedingungen vorliegen:
1) es sich um eine user/* Seite handelt UND es sich um den Profilbesitzer handelt
2) es sich um eine user/* Seite handelt UND das Profilfeld "profil_schutz" auf NEIN steht
3) es sich um eine user/* Seite handelt UND das Profilfeld "profil_schutz" auf JA steht UND FREUNDSCHAFT auch auf JA steht

folgender Code klappt noch nicht:

<?php
if (arg(0) == 'user' && is_numeric(arg(1))) && (arg(0) == 'user' && $user->uid == arg(1)) {
  return
TRUE;
}

elseif (
arg(0) == 'user' && is_numeric(arg(1))) && ($account->profile_profilschutz == 'Nein') {
return
TRUE;
}
elseif (
arg(0) == 'user' && is_numeric(arg(1))) && ($account->profile_profilschutz == 'Ja'  && $user_is_friend == 1) {
return
TRUE;
}
return
FALSE;

?>

hmmm..

  • Anmelden oder Registrieren um Kommentare zu schreiben

Titel präzisieren

Eingetragen von Frank Ralf (2135)
am 09.09.2011 - 08:13 Uhr

Versuch mal den Titel vom OP präziser zu formulieren, dann lockst du vielleicht noch mehr Leute hierher ;-)

  • Anmelden oder Registrieren um Kommentare zu schreiben

wenn du mit userrealtionship

Eingetragen von caw (2762)
am 09.09.2011 - 08:23 Uhr

wenn du mit userrealtionship arbeitest wirds doch nur den freunden angezeigt

  • Anmelden oder Registrieren um Kommentare zu schreiben

nein, das ist ja so nicht

Eingetragen von beaschmitz (469)
am 09.09.2011 - 10:01 Uhr

nein, das ist ja so nicht korrekt. es soll ja 3 varianten geben:

1) es sich um eine user/* Seite handelt UND es sich um den Profilbesitzer handelt (losgelöst von userrelationships)?
2) es sich um eine user/* Seite handelt UND das Profilfeld "profil_schutz" auf NEIN steht (dann können es ja alle sehen, auch die ohne Beziehung aus userrelationships)
3) es sich um eine user/* Seite handelt UND das Profilfeld "profil_schutz" auf JA steht UND FREUNDSCHAFT auch auf JA steht

es handelt sich also immer um 2 Bedingungen gleichzeitig! ich habe es mit folgendem Code versucht, vermute aber da fehlt noch etwas... ich bin nicht so fit in PHP, deshalb hoffe ich auf einen konkreten tipp. muss ich vorher vielleicht erst noch im Code irgendwie darstellen, das es user realtionships gibt, damit drupal dies korrekt liest???

<?php
if (arg(0) == 'user' && is_numeric(arg(1))) && (arg(0) == 'user' && $user->uid == arg(1)) {
  return
TRUE;
}

elseif (
arg(0) == 'user' && is_numeric(arg(1))) && ($account->profile_profilschutz == 'Nein') {
return
TRUE;
}
elseif (
arg(0) == 'user' && is_numeric(arg(1))) && ($account->profile_profilschutz == 'Ja'  && $user_is_friend == 1) {
return
TRUE;
}
return
FALSE;

?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi Anton, Du bist doch fit in

Eingetragen von beaschmitz (469)
am 09.09.2011 - 14:55 Uhr

Hi Anton, Du bist doch fit in PHP...hast Du nicht eine Idee?
DANKE

  • Anmelden oder Registrieren um Kommentare zu schreiben

Facebook-Clone mit Drupal?

Eingetragen von Frank Ralf (2135)
am 09.09.2011 - 15:06 Uhr

http://www.google.com/search?q=drupal+facebook+clone&hl=de

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi Frank, danke für den Link.

Eingetragen von beaschmitz (469)
am 09.09.2011 - 17:59 Uhr

Hi Frank,
danke für den Link. Interessante Module. Die werde ich mir in Ruhe mal anschauen...
Aber in diesem meinem Falle möchte ich ja eigentlich nur mit einem kleinen PHP Code die Ansicht von einem Block steuern. Das ist alles...es ist ja alles fertig und funktioniert!
Leider hat sich bis jetzt noch niemand von den PHP Experten gemeldet. Keine Ahnung warum.
Ich werde mich nun weiter mit dem Thema beschäftigen... Mir ist leider nicht bekannt, ob man auch komplexere PHP Schnipsel in die Blockansichssteuerung eingeben kann, oder ob man dort nur 1-2 Werte mit einer PHP TRUE Abfrage eingeben kann... ich muss weiter stöbern.
Meine Idee mit der doppelten Bedingung müsste aber eingentlich ok sein...
grübel, grübel....

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo, kann es sein, dass ich

Eingetragen von beaschmitz (469)
am 10.09.2011 - 08:03 Uhr

Hallo,
kann es sein, dass ich den Wert bzw. die Werte erst laden muss? Bin jetzt nicht so der PHP Experte und stelle hier sicherlich ganz dumme Fragen...aber nunja, so ist es nun einmal.
Dieser Beitrag hat mich darauf gebracht: http://www.drupalcenter.de/node/34131
Kann es sein, dass ich eben nun die Profilvariable genauso wie diese bei laden diesen Node-Typs erst laden muss?

}
else if (arg(0) == 'node' && is_numeric(arg(1))) {
  $nd = node_load(arg(1));
  // Ist der Typ des geladenen Beitrags in der Liste enthalten?
  return in_array($nd->type, array('anleitung'));
}
return FALSE;
?>

Wenn ja, wie ist der Befehl dafür?
DANKE

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • Rolle erstellen nicht zu finden
  • Medien und andere Daten mit Feeds von Drupal 7 auf Drupal 10 migrieren
  • 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
Weiter

Neue Kommentare

  • Rollen
    vor 15 Stunden 59 Minuten
  • Inzwischen sind wir bei
    vor 1 Woche 4 Tagen
  • Migrieren von D7 auf D8/ D10/ D11
    vor 1 Woche 5 Tagen
  • melde mich mal wieder, da ich
    vor 9 Wochen 2 Tagen
  • Hey danke
    vor 9 Wochen 2 Tagen
  • Update: jetzt gibt's ein
    vor 9 Wochen 3 Tagen
  • Hallo, im Prinzip habe ich
    vor 10 Wochen 1 Tag
  • Da scheint die Terminologie
    vor 10 Wochen 1 Tag
  • Kannst doch auch alles direkt
    vor 10 Wochen 5 Tagen
  • In der entsprechenden View
    vor 10 Wochen 5 Tagen

Statistik

Beiträge im Forum: 250237
Registrierte User: 20464

Neue User:

  • ocvk2810
  • marouane.blel
  • capilclinic

» 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 30 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