(gelöst) print $user_profile; durch mein eigenes zusammengebautes Profil ersetzen
am 22.06.2011 - 21:56 Uhr in
Hallo,
ich habe freundlicherweise von Lonit einen PHP Code erhalten, der es mir erlaubt, Profile auf öffentlich oder Privat zu stellen......
D.h. Freund (User Relationships) können das Profil sehen und die anderen eben nicht! Dazu wird folgender Code in die user-profile.tpl.php Datei eingefügt:
<?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;
}
}}
?>
Diverse Views etc gebastelt und als Ganzes funktioniert es dann eben (danke nochmals an Lonit!). Wer es nochmal nachlesen will, bitte hier: http://www.drupalcenter.de/node/34030
Nun habe ich heute gelernt, wie ich das User Profil auslesen kann und es in Einzelteilen wieder zusammen bauen kann, damit es einfach kompakter erscheint.
Zum Beispiel so:
<div class="profile">
<h2> <?php print $account->name?> </h2>
<?php print theme('user_picture', $user); ?>
<strong>Graduierung</strong> <?php print $account->profile_guertelfarbe?> <br>
<strong>Trainingspartner vorhanden?</strong> <?php print $account->profile_trainingspartner?> <br>
<strong>Kyu Grad</strong> <?php print $account->profile_kyu_grad?> <br>
<strong>Postleitzahl</strong> <?php print $account->location['postal_code']?> <br>
<br>
<?php print $profile[privatemsg_send_new_message]; ?>
</div>
Wie packe ich aber nun diese Art der Zusammenstellung in die oben genannten Code? Dort wird ja einfach nur immer
print $user_profile;
gesagt...
Dies möchte ich durch meine friesierte Version ersetzen... Wie geht das?
DANKE
- Anmelden oder Registrieren um Kommentare zu schreiben
Du ersetzt z.B. print
am 22.06.2011 - 22:24 Uhr
Du ersetzt z.B. print $user_profile; mit Deinem Code + CSS.
<?php
if (arg(0) == 'user' && $user->uid == arg(1)) {
print '<div class="profile"><h2>';
print $account->name;
print '</h2>';
print theme('user_picture', $user);
usw.
}
?>
oder so
<?php
if (arg(0) == 'user' && $user->uid == arg(1)) {
print '<div class="profile"><h2>' . $account->name . '</h2>' . theme('user_picture', $user) . '<strong>Graduierung</strong>' . $account->profile_guertelfarbe . '<br>' . 'usw_usw';
usw.
}
?>
Hey Lonit! Du bist wieder da!
am 22.06.2011 - 22:36 Uhr
Hey Lonit!
Du bist wieder da! DANKE für Deine Antwort. Werde ich nachher einmal ausprobieren!
DANKE
Hallo Lonit, klappt soweit
am 23.06.2011 - 20:36 Uhr
Hallo Lonit,
klappt soweit ganz gut! Vielen Dank: ich habe es mit der zweiten Variante gemacht, da ich dort besser die Formatierungen einbinden konnte:
<?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 '<div class="profile"><h2>' . $account->name . '</h2>' . theme('user_picture', $user) .
'<strong>Graduierung </strong>' . $account->profile_guertelfarbe . '<br>' .
'<strong>Trainingspartner vorhanden? </strong>' . $account->profile_trainingspartner . '<br>';
}
elseif ($node->field_profile_privacy_active[0][value] == 'Nein') {
print '<div class="profile"><h2>' . $account->name . '</h2>' . theme('user_picture', $user) .
'<strong>Graduierung </strong>' . $account->profile_guertelfarbe . '<br>' .
'<strong>Trainingspartner vorhanden? </strong>' . $account->profile_trainingspartner . '<br>';
}
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 '<div class="profile"><h2>' . $account->name . '</h2>' . theme('user_picture', $user) .
'<strong>Graduierung </strong>' . $account->profile_guertelfarbe . '<br>' .
'<strong>Trainingspartner vorhanden? </strong>' . $account->profile_trainingspartner . '<br>';
}
}}
?>
Jedoch habe ich ein Problem: Plötzlich hängt mir Drupal die rechte Seitenleiste (nur wenn ich die Profilseite aufrufe) unter die Page??! Vermutlich muss ich in dem Code noch etwas "abschließen"?? Wer kann mir helfen?
DANKE
Du musst die CSS-Klasse
am 23.06.2011 - 21:04 Uhr
Du musst die CSS-Klasse schließen. Da fehlt ein oder mehrere Close-tags.
Edit:
Da fehlen 3 Close-Tags!
print '<div class="profile"><h2>'
ist der öffnende Tag. Dieses muss auch imemr geschlossen werden.Aach, yes, jetzt sehe ich es
am 23.06.2011 - 21:38 Uhr
Aach, yes, jetzt sehe ich es auch! Sorry, wie man merkt, bin ich total php Anfänger!
ich habe die div class geschlossen und jetzt geht es!
Aber ich hatte schon die richtige Vermutung: es fehlte etwas!
DANKE!
PS: ich habe noch ein Problem mit der Ausgabe von Checkboxes. Falls Du noch eine Idee und Lust hast?
Hi Lonit
am 13.08.2011 - 23:50 Uhr
...ich habe mich an einer erweiterten Version versucht und "hänge" hier:
http://www.drupalcenter.de/node/36881
Hast Du einen Tipp?
DANKE