Views Problem im Profil!!!
am 23.12.2007 - 13:48 Uhr in
Hallo zusammen,
ich habe mir mit einer "user_profile.tpl" ein Profil erstellt das funktioniert soweit auch. Habe in dem Profil einen Link zu einem View eingebaut "Bilder", dieser zeigt die jeweiligen Bilder der Person auf dessen Seite man ist. Jetzt möchte ich gerne das mir auch meine Bilder angezeigt werden wenn ich auf meinem Profil bin.
bisheriger Filter: "Buddylist: Author Is A Buddy Of Current User" ist gleich mit aktuellem Benutzer -> funktioniert soweit
jetzt würde ich gerne den Filter "Node Autor ist der aktuelle Benutzer" hinzufügen um obiges Problem zu lösen...
da es sich um einen Filter handelt möchte ich wissen ob es eine Art "oder-Verknüpfung" oder eine andere Lösungsmöglichkeit gibt...
hatte schon an Argumente gedacht, doch da habe ich nicht die Möglichkeite "Buddylist: Author Is A Buddy Of Current User" auszuwählen
Hoffe das ich mein Problem soweit verständlich erklärt habe! Wäre mir wirklich super wichtig wenn ich dieses Problem lösen könnte!! Würde mich über Tipps sehr freuen.
Gruß, der Jenzen!!
- Anmelden oder Registrieren um Kommentare zu schreiben
"Argument Handling
am 23.12.2007 - 14:51 Uhr
"Argument Handling code"
könnte das vielleicht ein Weg sein? Ich weiß jedoch so garnicht wie ich das realisieren kann!!
Schade
am 25.12.2007 - 12:50 Uhr
das niemand eine Idee hat. Bin was php angeht so garnicht fit und habe auch keinen wirklichen Ansatz wie ich vorgehen könnte. Weiß nur das es irgendwie blöd ist wenn man auf seinem eigenen Profil ist und dann bei dem Link Bilder nichts zusehen bekommt obwohl man welche hochgeladen hat.
Für Tipps wäre ich wirklich sehr dankbar, ist einer meiner letzten "Main-Bugs" die ich beseitigen will.
Gruß, der Jenzen!!
Genauere Beschreibung des Problems
am 25.12.2007 - 16:38 Uhr
Also verstehe ich dich richtig: Auf deiner Profilseite hast du Links zu all deinen "Buddies", und bei Klick bekommst du deren Bilder angezeigt.
Deine Bilder hingegen möchtest du direkt auf deiner Profilseite angezeigt bekommen, also ohne Link, auf den du klicken musst?
Also da kannst du doch einen weiteren View erstellen, und den dann als Block anzeigen lassen. Kann ja unabhängig von den Buddies sein. Und ja, ein Argument ist der richtige Weg. Halt irgendwie mit "$uid" und "show all pictures for user mit dieser $uid". Abhängig vom gerade eingeloggten User ist diese Variable auf jeden Fall vorhanden und daher benutzbar.
Leider ist das mit dem Übergeben von Argumenten nicht so ganz einfach, bin da letztes Mal gescheitert. Wie du es also konkret umsetzt - da gibt es hier bestimmt Cleverere...
Hast du denn schon hier gelesen: http://drupal.org/node/54432 und hier http://drupal.org/node/59157
Drupal - the Linux of the Web
Danke für deine Info, werde
am 25.12.2007 - 20:30 Uhr
Danke für deine Info, werde mir das Nachher mal ansehen!
So ganz richtig habe ich meine Situation wohl noch nicht geschildert....
Auf jeder Profilseite ist der Link "Bilder" sobald sich Personen auf meiner Profilseite befinden die auch in meiner Buddyliste sind können sie sich meine Bilder ansehen. Was ich möchte ist das ich auf dem selben Link auch meine eigenen Bilder sehen kann...
Einen zweiten Link möchte ich vermeiden denn dann hätte ich alle Links auf der Profilseite doppelt, deshalb will ich diese Variante vermeiden.
Werde mal einwenig rumprobieren... aber falls noch jemand einen Tipp hat würde ich mich sehr freuen.
Gruß, der Jenzen!!
:-(
am 28.12.2007 - 11:26 Uhr
habe einwenig mit dem View rumprobiert, doch irgendwie bekomme ich es nicht auf die Reihe. Hat vielleicht noch jemand einen Tipp?
$view->filter = array (
array (
'tablename' => 'buddylist_users',
'field' => 'currentuid',
'operator' => '=',
'options' => '',
'value' => '***CURRENT_USER***',
),
...
$view->filter = array (
array (
'tablename' => 'node',
'field' => 'currentuid',
'operator' => '=',
'options' => '',
'value' => '***CURRENT_USER***',
),
...
Soweit ich das richtig sehe sind das diese beiden Filter im View, gibt es hier nicht eine Möglichkeit sie mit einer if... Funktion zu verknüpfen und den view dann nach den Änderungen zu importieren?
Würde mich freuen!
Gruß, der Jenzen!!
Sehr verwirrend, aber ich
am 28.12.2007 - 13:57 Uhr
Sehr verwirrend, aber ich versuchs mal zuverstehen! Ein Benutzer kann eine Gallerie erstellen! Jetzt möchtest du das nur "freunde" diese Bilder (+Ersteller der Gallerie), also kein Gast und kein Benutzer der nicht in der Freundesliste ist! Richtig?
------------------------------------------
http://kochazubi.net
Gelöste Forenbeiträge mit [gelöst] im Titel ergänzen
Das Verhältnis anderen zu helfen muss höher sein, als von anderen Hilfe zu erfragen/erwarten.
Wie wird der view
am 28.12.2007 - 14:38 Uhr
Hi Jenzen,
wie wird den dein view in der tpl aufgerufen? Möchtest du alle Bilder deiner Buddies sehen, oder möchtes du alle "Bilder" die du im system hast sehen (Gallery per user).
Dirk
...
am 28.12.2007 - 17:11 Uhr
echt, so verwirrend?
Ok, ich versuche es nochmal! User können ihre Bilder hochladen, andere User können diese Bilder jedoch nur sehen wenn sie in der Buddylist des Users stehen der die Bilder hochgeladen hat. Diese "Funktion" ist ein View den man beim Besuch des Profils aufrufen kann. Quasi ein Link in der user_profile.tpl, das funktioniert soweit auch! Wenn ich jedoch auf meinem eigenen Profil bin kann ich mir die Bilder nicht ansehen, da ich ja im Filter angegeben habe das sich die Bilder nur meine "Freunde" ansehen können.
Um dieses Problem zu umgehen habe ich im Menü einen weiteren View verlinkt in dem ich sage das die Bilder derjenige sehen darf der sie eingestellt hat, das funktioniert soweit auch. Mein Ziel ist es diese Beiden Bedingungen/Filter zu verbinden, das ich quasi über den Link im Profil auch meine Bilder sehen kann wenn ich auf meiner Profilseite bin. (der eine Code ist aus dem View für die "Bilder meiner Freunde" und der andere Code ist aus dem View für "meine Bilder", diese muss ich irgendwie verbinden. Einfach gesagt: wenn der User nicht in der Buddyliste steht soll überprüft werden ob er vielleicht der User ist der die Bilder hochgeladen hat und sie dann doch anzeigen)
Hoffe das ich beide Fragen so beantworten konnte.
Gruß, Jenzen!
Bilder?
am 28.12.2007 - 18:10 Uhr
Hi Jenzen,
schon ein wenig klarer. Aber eine Frage habe ich noch: Mit Bildern meinst du user_pictures, oder images?
Also für beides gilt aber das lässt sich nicht in einem View vereinen. Der erste View hat als Argument "Bilder meiner Freunde" der zweite View "Meine Bilder". Du kannst jetzt natürlich in deiner user_tpl ein über ein (if) sagen wenn die arg(1) = user->uid ist dann zeige mir nur den View "Meine Bilder" (else) zeige mir den view "Bilder Meiner Freunde" bzw. den link.
Daher habe ich nach deinem Code gefragt. Nur dann kann man beurteilen, ob und wie das zu lösen ist.
Dirk
Images!
am 28.12.2007 - 18:36 Uhr
Hallo Dirk,
es handelt sich um images!
Stimmt, daran habe ich noch garnicht gedacht.... das man quasi sagt: du bist der "Inhaber" des Profils dann zeige mir den Link, du bist "nur" ein "Freund" von mir dann zeige mir den Link. Das wäre perfekt!! :-)
Mit folgendem Code greife ich auf den View zu:
<?php
//Bilder vom entsprechendem User
if ($user->uid !=$account->uid) {
print "<a href=\"?q=bildermeinerfreunde/".$user->uid."\">Bilder </a>";
}
?>
Es wäre super wenn du mir da sagen könntest wie ich das machen muss! Denn dann könnte ich auch einen Link wie "User eine Nachricht schreiben" rausnehmen wenn es das eigene Profil ist. :-) Das wäre ich top.
Danke für deine Hilfe!
Gruß, der Jenzen!!
Versuch mal den Code
am 28.12.2007 - 18:38 Uhr
Hi Jenzen,
hier kommt ein code snippet, das alle Bilder ('images') eines in seiner user_profile.tpl anzeigt.
<?php
// Display N most recent thumbnails of images submitted by the user
// Each thumbnail is linked back to it's image node
// Can optional limit the photos shown by specififying one or taxonomy term id's
// The number of thumbnail images to show
$nlimit = 3;
$taxo_id = array();
// Add one line for each taxonomy term id you want to limit the thumbnails to
// As an example, the following two lines would select images associated with taxonomy terms 36 OR 37
// $taxo_id[] = 36;
// $taxo_id[] = 37;
// Note, if not taxonomy term ids are specified, the selection is from all the user submitted images
$userid=$user->uid;
if ( count($taxo_id) > 0 ) {
// Limit images based on taxonomy term id's
$taxo_str = implode(',', $taxo_id);
$sql = "SELECT n.created, n.title, n.nid, n.changed FROM node n INNER JOIN term_node ON n.nid = term_node.nid AND term_node.tid IN ($taxo_str) WHERE n.type = 'image' AND n.uid = $userid AND n.status = 1 ORDER BY n.changed DESC";
}
else {
$sql = "SELECT n.created, n.title, n.nid, n.changed FROM node n WHERE n.type = 'image' AND n.uid = $userid AND n.status = 1 ORDER BY n.changed DESC";
}
$result = db_query_range($sql, 0, $nlimit);
$output = '';
while ( $info = db_fetch_object($result) ) {
$node = node_load(array('nid' => $info->nid));
$img_tag = image_display($node, 'thumbnail');
$link = 'node/' . $node->nid;
$output .= l($img_tag, $link, array(), NULL, NULL, FALSE, TRUE);
}
print $output;
?>
wenn du jetzt noch eine custom pager für den images node machst, der der als array(node->uid) hat hast du gleich eine Galerie per user.
Dirk
...
am 28.12.2007 - 18:39 Uhr
Die Unterscheidung ob es "mein" Profil ist oder das Profil eines anderen reicht natürlich aus... denn der Filter ermöglicht es keinem anderen User die Bilder anzusehen.
Gruß!
Du hast doch schon deinen code!!
am 28.12.2007 - 19:06 Uhr
Hi Jenzen,
<?php
//zu meinen Bildern: da die user->uid gleich der account->uid ist sieht das nur der user des Accounts
if ($user->uid == $account->uid) {
print l('Meine Bilder', 'meinebilder/'.arg(1));
}
?>
<?php
//Bilder der Freunde: da die user->uid ungleich der account->uid ist wird dieser Link angezeigt
if ($user->uid !=$account->uid) {
print "<a href=\"?q=bildermeinerfreunde/".$user->uid."\">Bilder </a>"; //mit print l(...) wie oben geht das besser!!
}
?>
Versuch das mal Jenzen. Ist zwar quick and dirty aber...
Dirk
Danke!
am 29.12.2007 - 00:40 Uhr
Hi Dirk,
ich weiß das ich den Code habe...
Dein oberer Code wird leider garnicht angezeigt und der untere wird immer angezeigt :-( quasi so wie es jetzt bei mir der Fall ist.
<?php
//Bilder der Freunde: da die user->uid ungleich der account->uid ist wird dieser Link angezeigt
if ($user->uid != $account->uid) {
print l('Bilder', 'bildermeinerfreunde/'.arg(1));
}
?>
muss es nicht so irgendwie möglich sein den einen Link anzuzeigen wenn ich auf meinem Profil bin und den anderen Link anzuzeigen wenn ich auf einem fremden Profil bin?! :
<?php
if ($user->uid == $account->uid)
{ print "<a href=\"?q=bildermeinerfreunde/".$user->uid."\">Bilder </a>"; }
else
{ print "<a href=\"?q=meinebilder/".$user->uid."\">Bilder </a>"; }
?>
Irgendwie bekomme ich es nicht auf die Reihe :-( bei dem "else" Befehl gibt er mir immer den zweiten Teil aus, egal ob ich auf meinem oder auf einem anderen Profil bin. Ändere ich das "=" in ein "!" dann gibt er mir immer den ersten Teil aus. Normalerweise sollte er doch überprüfen ob die if-Anweisung wahr oder falsch ist und bei "wahr" den ersten ausgeben und bei "unwahr" die zweite Anweisung ausführen?!
Vielleicht fällt dir noch etwas ein.
Gruß, der Jenzen!
Mal was anderes
am 29.12.2007 - 10:07 Uhr
Hi Jenzen,
ich habe gerade keine installation laufen mit ner user_profile.tpl.php, daher alles blindflug.
versuchen wir es ma so:
<?php
if ((user_access('administer users') || $GLOBALS['user']->uid == $user->uid)) :
?>
<?php
print l('Bilder' .'meinebilder/'.arg(1));
?>
<?php
endif;
?>
Das sollte den Link jetzt nur anzeigen, wenn der user auf seinem eigenem Profile ist.
Dirk
Blindflug!
am 29.12.2007 - 11:13 Uhr
Danke dir für deine Blindflug-Hilfe, bei deinem Code gibt er mir folgenden Fehler aus:
warning: Missing argument 2 for l() in /home/www/includes/common.inc on line 1269.
und der Link sieht wie folgt aus: Bildermeinebilder/3 ; wenn ich dann zum nächsten User gehe wird aus der "3" eine "4"; der Link für auch nicht zu Bildermeinerfreunde sondern verlinkt zur Startseite (node).
Habe einwenig getestet, doch irgendwie komme ich noch nicht weiter...
<?php
if ((user_access('administer users') || $GLOBALS['user']->uid == $user->uid)) :
{print l('Bilder' .'meinebilder/'.arg(1));}
{print l('Bilder' .'bildermeinerfreunde/'.arg(1));}
endif;
?>
Ausgabe: Bildermeinebilder/3Bilderbildermeinerfreunde/3
Wenn ich aus dem ":" ein ";" mache zeigt er nichts mehr an und gibt im Browserfenster folgenden Fehler:
Parse error: syntax error, unexpected T_ENDIF in /home/www/themes/zen/user_profile.tpl.php on line 218
Sorry, würde es gerne selbst hinbekommen doch irgendwie fehlt mir das Wissen in diesem Bereich! :-(
Gruß, der Jenzen!!
Mal Schritt für Schritt
am 29.12.2007 - 11:29 Uhr
Hi Jenzen,
versuch doch erstmal den code den ich poste einfach per copy und paste rein zuschieben in deine TPL. Wenn du die url verändern willst mußt du in der Zeile "print l(," nach dem Punkt die Werte verändern. Ich weiss natürlich nicht wie die url deines views heißt und wie die argumente im view aufgerufen werden. Über $user->uid wird nach der URL des views jetzt die uid des user gesetzt.
<?php
if ((user_access('administer users') || $GLOBALS['user']->uid == $user->uid)) :
?>
<?php
print l("Bilder" .'urldesviews/'.$user->uid);
?>
<?php
endif;
?>
Wenn wir erstmal den link für den user auf seinem profil hinbekommen machen wir in einem zweiten Schritt den link für alle anderen user dazu OK.
Dirk
OK!
am 29.12.2007 - 11:32 Uhr
Habe den Code eins zu eins übertragen:
oben steht folgender Fehler: warning: Missing argument 2 for l() in /home/www/includes/common.inc on line 1269.
der Link heißt: Bilderurldesviews/3
und verlinkt wieder auf die Startseite.
Jens
...
am 29.12.2007 - 11:41 Uhr
also die URLs heißen: bildermeinerfreunde und meinebilder...
Ja wohl ein Sytax fehler
am 29.12.2007 - 12:01 Uhr
Hi Jenzen,
<?php
if ((user_access('administer users') || $GLOBALS['user']->uid == $user->uid)) :
?>
<?php
print l("Bilder", .'meinebilder/'.$user->uid);
?>
<?php
endif;
?>
versuch das mal
Parse error: syntax error,
am 29.12.2007 - 12:06 Uhr
Parse error: syntax error, unexpected '.' in /home/www/themes/zen/user_profile.tpl.php on line 214
Nichts mehr zu sehen!
nochmal
am 29.12.2007 - 12:26 Uhr
Hi Jenzen,
ich habe irgendwie fingerkrebs vertippe mich andauernd....
<?php
if ((user_access('administer users') || $GLOBALS['user']->uid == $user->uid)) :
?>
<?php
print l("Bilder", 'meinebilder/'.$user->uid);
?>
<?php
endif;
?>
Nicht schlimm :-)
am 29.12.2007 - 12:29 Uhr
Jetzt zeigt er mir den Link "Bilder" an und dieser ist auch auf meine Bilder verlinkt, wenn ich jedoch auf ein anderes Profil gehe ist dieser Link ebenso zu sehen.
Gruß, Jenzen!
Hi Dirk, würde jetzt super
am 29.12.2007 - 12:37 Uhr
Hi Dirk,
würde jetzt super gerne an dem Thema weiter arbeiten weil mir das sehr wichtig ist diese Unterscheidung im Profil hinzubekommen. Leider habe ich jetzt jedoch einen Termin... Falls dir noch etwas einfällt wäre ich dir sehr dankbar, ich probiere das Nachher sofort aus und werde dann berichten!
Danke dir aufjedenfall schonmal für deine Mühe!!
Gruß, der Jenzen!!
So geht´s
am 29.12.2007 - 14:41 Uhr
Hi Jenzen,
so jetzt habe ich es aber. Das geht so:
<?php
if ($GLOBALS['user']->uid == $user->uid) :
?>
<?php
print l("Bilder", 'meinebilder/'. $user->uid);
?>
<?php
endif;
?>
<?php
if ($GLOBALS['user']->uid != $user->uid) :
?>
<?php
print l("Bilder meiner Freunde", 'Freundemeinebilder/'. $user->uid);
?>
<?php
endif;
?>
Dirk
Thanks!
am 29.12.2007 - 18:22 Uhr
Yes Dirk, das war genau das was ich gesucht habe!! Danke dir für deine Hilfe!!
Es funktioniert...
Ich traue mich garnicht zu fragen :-) ... In der user_profile.tpl habe ich z.B. auch Punkte wie "Telefonnummer" etc. wie folgt eingefügt und ausgelesen:
"
<?php
if($user->profile_telefon) {
?>
<?php
print check_plain($user->profile_telefon);
?>
<?php
}
?>
Da ich bisher keine Möglichkeit habe zu beschränken wer was sehen darf dachte ich mir das ich diese Punkte auch mit der user_profile_tpl steuern kann. Gibt es eine Möglichkeit diese quasi nur anzuzeigen wenn es der eigene Account ist, quasi wie mit den Bildern, oder Leuten zu zeigen die in meiner Buddylist stehen :-)
Hättest du eine Idee oder wird diese "ID" nicht irgendwie ausgegeben? Wäre toll wenn das möglich wäre.
Gruß, der Jenzen!
Das geht wie oben...
am 29.12.2007 - 21:01 Uhr
Hi Jenzen natürlich, du kannst zb. das per rolle, nutzerrechte oder ähnliches regeln.
Beschreibe mal was du genau willst: wer darf was sehen!!
Dirk
user_profile.tpl
am 30.12.2007 - 00:41 Uhr
Ich habe mein Profil ganz normal mit dem Standard-Modul "Profile" erstellt, diese Felder rufe ich in der user_profile.tpl wie folgt ab:
<?php if($user->profile_strassehnr) { ?>
<tr><td class="kontaktfields">Strasse Hausnummer:</td> <td></div> <?php print check_plain($user->profile_strassehnr); ?></td></tr>
<?php }?>
Soweit ich das mitbekommen habe ist es einfacher ein Profil mit node-profile oder ähnlichen Modulen zu erstellen, da ich jedoch bisher super zufrieden bin möchte ich ungern meinen bisherigen Aufbau des Profils umschmeißen. Es muss auch garnicht möglich sein das jeder User entscheiden kann wer was sehen darf, es reicht mir völlig aus wenn ich bestimmte php-Befehle so definiere das sie nur "Freunde" (Leute aus der Buddylist) oder man selbst sehen kann.
Bei dem bisherigen Punkt "Bilder" habe ich dies ja quasi über den Filter im View gesteuert und nur bestimmt wer welchen Link sieht. Die Frage ist ob es möglich ist das man den Punkt "Telefon" per if/else wie folgt begrenzt:
- ich bin auf meinem Profil = mir wird der Punkt "Telefon" angezeigt
- ich bin auf einem Profil eines Users der auch in meiner Buddylist auftaucht = mir wird der Punkt "Telefon" angezeigt
- ich bin auf einem fremden Profil = mir wird der Punkt "Telefon" nicht angezeigt
Wäre perfekt wenn das auf diesem Weg möglich ist!! Der Abgleich ob es mein Profil ist oder nicht müsste ja problemlos funktionieren, die Frage ist kann man herausfinden und abgleichen ob der aktuell angemeldete User in der Buddyliste ist auf dessen Profil er sich gerade befindet?!
Hoffe ich habe die Situation einigermaßen verständlich beschrieben!
Gruß, der Jenzen!
Schau mal den Link
am 30.12.2007 - 01:05 Uhr
Hi Jenzen,
schau dir mal den link an: http://drupal.org/node/165114
Da wird doch viel erklärt.
Dirk
Thanks!
am 30.12.2007 - 13:00 Uhr
Hey Dirk,
ich danke dir für den Link....
Habe die Felder jetzt so definiert wie die Option "zur Buddylist hinzufügen"; es funktioniert!
Juhu! Danke dir für deine Unterstützung!
Gruß, der Jenzen!!
Thanks!
am 30.12.2007 - 13:01 Uhr
Hey Dirk,
ich danke dir für den Link....
Habe die Felder jetzt so definiert wie die Option "zur Buddylist hinzufügen"; es funktioniert!
Juhu! Danke dir für deine Unterstützung!
Gruß, der Jenzen!!