Views mit Argument / Argument in Text wieder geben: z.B. wie "BENUTZERNAMEs Blog"
am 09.07.2009 - 11:56 Uhr in
Hallo,
aus bestimmten Gründen möchte ich das Blog-Modul hierfür nicht nutzen, daher muss Views ran: Mitglieder meiner Community führen Tagebuch. Ich habe nun bereits mit Views eine Blockansicht erstellt - der Block erscheint immer, wenn ein Tagebuch-Eintrag angesehen wird und listet weitere Tagebuch-Einträge des Autors auf. Darunter erscheint ein Link "Zum Diät-Tagebuch" zu der Seitenansicht. Funktioniert alles prima, als Argument dient die User-ID des Autors.
Ich möchte nun aber, dass in dem Block und auf der Seitenansicht der jeweilige Username (resp. Autorenname) erscheint; so etwas wie "Hans' Tagebuch in unserer Community" oder im Block "Weitere Tagebuch-Einträge von Hans":
Kann mir jemand verraten, wie ich das hinbekomme? Kann ich irgendwie das Argument dazu nutzen?
Viele Grüße,
Tobias
- Anmelden oder Registrieren um Kommentare zu schreiben
Will dieses Thema noch mal
am 10.07.2009 - 07:10 Uhr
Will dieses Thema noch mal hoch-hiefen - jemand einen Vorschlag?
Titel mit Argumenten
am 10.07.2009 - 07:49 Uhr
Moin.
Wenn Du bereits die UserId als Argument verwendest, kannst Du bei den Einstellungen des Arguments auch den Titel des Views festlegen. Gib einfach in das Feld "Title" (beim Argument!) "Weitere Tagebuch-Einträge von %1" ein, und schon wird der Nutzername da in den Titel eingefügt.
Musst Du einfach mal ausprobieren.
hth,
Stefan
--
sei nett zu Deinem Themer
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Hi Stefan... das wusste ich
am 10.07.2009 - 08:04 Uhr
Hi Stefan...
das wusste ich bereits, aber wie ist das mit dem Text auf der Seite oder im Block, also etwa bei "Kopfbereich" oder "Fußzeile"? Da müsste es doch auch eine Möglichkeit geben, oder?
Vg,
Tobias
Argument im Header
am 10.07.2009 - 08:15 Uhr
<?php
// Aktuelles View-Objekt holen.
$view = views_get_current_view();
// [0] ist das erste Argument; [1] das 2.; usw.
$first_arg = $view->args[0];
print $first_arg;
?>
Das in den Header rein (und PHP als Eingabeformat) und schon kannst Du die Argumente ausgeben.
hth,
Stefan
--
sei nett zu Deinem Themer
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
stBorchert schrieb <?php//
am 10.07.2009 - 08:41 Uhr
<?php
// Aktuelles View-Objekt holen.
$view = views_get_current_view();
// [0] ist das erste Argument; [1] das 2.; usw.
$first_arg = $view->args[0];
print $first_arg;
?>
Das in den Header rein (und PHP als Eingabeformat) und schon kannst Du die Argumente ausgeben.
Finde ich auch interessant ...
Von welchem Header sprichst du hier? Kopfbereich im VIEW, in der ja auch das Argument ausgegeben werden soll, oder eine template-Datei?
Und wie wird das Argument dann aufgerufen? einfach mit "%1" im Text, oder brauchts da dann auch nen PHP Befehl?
Drupal 7 Screencasts in deutsch!
Argument im Header
am 10.07.2009 - 08:44 Uhr
Von welchem Header sprichst du hier? Kopfbereich im VIEW
Ja, genau. Da hinein soll dieses Snippet eingefügt werden.
Und wie wird das Argument dann aufgerufen? einfach mit "%1" im Text, oder brauchts da dann auch nen PHP Befehl?
Wie im Snippet. Also über
$view->args[0]
.hth,
Stefan
--
sei nett zu Deinem Themer
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Super, danke Dir!
am 10.07.2009 - 08:49 Uhr
Das hat's gebracht...
Für alle anderen, die ein ähnliches Problem haben und in einem View mit Benutzer-ID als Argument einen Usernamen ausgeben wollen: Die obige Funktion
<?php
// Aktuelles View-Objekt holen.
$view = views_get_current_view();
// [0] ist das erste Argument; [1] das 2.; usw.
$first_arg = $view->args[0];
print $first_arg;
?>
gibt die User-ID zurück. Um aus der User-ID einen Usernamen zu ermitteln, habe ich hier folgende Vorgehensweise entdeckt:
In der Template-Datei folgende Funktion definieren:
function getUserName($id) {
$sql = "SELECT name FROM {users} WHERE uid = '$id'";
$result = db_query(db_rewrite_sql($sql));
$username = db_fetch_object($result);
return $username->name;
}
und im Views dann die Funktion zusammen mit der oben von Stefan vorgegebenen Weise verbinden (z.B. im Kopfbereich, Eingabeformat auf PHP stellen!):
<?php
// Aktuelles View-Objekt holen.
$view = views_get_current_view();
// [0] ist das erste Argument; [1] das 2.; usw.
$user_name = getUserName($view->args[0]);
print 'Das Tagebuch von ' . $user_name ;
?>
Das ergibt dann als Ausgabe auf der Webseite, wo der Block oder die Seite angezeigt wird, "Das Tagebuch von BENUTZERNAME".
Viele Grüße,
Tobias
Funktioniert klasse! Das
am 10.07.2009 - 08:56 Uhr
Funktioniert klasse! Das nenne ich nen super Tip am frühen Morgen! Vielen Dank dafür!
Drupal 7 Screencasts in deutsch!
user_load
am 10.07.2009 - 08:56 Uhr
Du möchtest user_load verwenden, um an den Nutzernamen heranzukommen.
Stefan
--
sei nett zu Deinem Themer
Tipp: Beachte die Verhaltensregeln des DrupalCenter.
Hallo Stefan, kannst Du mir
am 13.07.2009 - 15:13 Uhr
Hallo Stefan,
kannst Du mir sagen, wie das mit user_load genau funktioniert? Anscheinend gibt die Funktion einen Fehler. Wenn User ein Node erstellen, kommt folgende Fehlermeldung:
user warning: Unknown column 'n.nid' in 'on clause' query: SELECT name FROM users INNER JOIN node_access na ON na.nid = n.nid WHERE (na.grant_view >= 1 AND ((na.gid = 0 AND na.realm = 'all') OR (na.gid = 34 AND na.realm = 'content_access_author') OR (na.gid = 2 AND na.realm = 'content_access_rid') OR (na.gid = 8 AND na.realm = 'content_access_rid') OR (na.gid = 12 AND na.realm = 'content_access_rid'))) AND ( uid = '34') in /srv/www/vhosts/meineseite.de/httpdocs/sites/all/themes/meintemplate/template.php on line 129.
Und in line 129 befindet sich Funktion
127 function getUserName($id) {
128 $sql = "SELECT name FROM {users} WHERE uid = '$id'";
129 $result = db_query(db_rewrite_sql($sql));
130 $username = db_fetch_object($result);
131 return $username->name;
132 }
Hast Du eine Ahnung, was mir diese Monster-Fehlermeldung sagen soll?
NOCH WAS: wenn ich diese Funktion einfach aus der Template-Datei entferne, werden die Nodes gar nicht mehr dargestellt... was bitte habe ich mir denn da eingefangen???
Noch etwas
am 13.07.2009 - 14:51 Uhr
Das spannende ist, dass diese Fehlermeldung anscheinend nur bei einem Inhaltstypen kommt... und ich absolut nicht raffe, wieso :-(