Titel einer View verändern
Eingetragen von binki@drupal.org (42)
am 10.11.2009 - 22:51 Uhr in
am 10.11.2009 - 22:51 Uhr in
Hallo zusammen,
wie kann ich den Titel einer View, vom type page ohne die verwendung von Argumenten verändern?
Was ich erreichen möchte ist, die View soll als Titel ein Feld aus dem User Profile anzeigen.
Beispiel: Der User hat in seinem Profile in einem Feld einen "Nickname" hinterlegt. Später möchte ich alle Artikel
dieses Users anzeigen(View via UID als Argument,type page). Als Titel soll aber der "Nickname" angezeigt werden.
Tricky aber doch sicher nicht unmöglich?
Ich komm da nicht weiter, vielleicht hat jemand von euch eine Idee.
Grüße,
Ralph
- Anmelden oder Registrieren um Kommentare zu schreiben
preprocess
am 11.11.2009 - 08:38 Uhr
Hallo.
Das müsste sich eigentlich relativ einfach über eine preprocess-Funktion in Deiner template.php lösen lassen.
<?php
funtcion THEMENAME_preprocess_views_view__VIEWNAME__DISPLAYNAME(&$vars) {
// Annahme: zweites Argument ist die uid ("/artikel/1").
if (is_numeric(arg(1)) {
$user = new stdClass;
$user->uid = arg(1);
profile_load_profile($user);
// drupal_set_message('<pre>' . var_export($user, 1) . '</pre>');
if (isset($user->nickname)) {
$vars['title'] = $user->nickname;
}
}
}
?>
hth,
Stefan
--
sei nett zu Deinem Themer
Funktioniert leider nicht -> WSOD
am 11.11.2009 - 22:52 Uhr
Ich habe die Funktion angepasst und in die template.php reingeschmissen.
Und dann ging nichts mehr. Ich werde weiter testen.
Ich hatte noch eine Idee, über Standardargumente sollte es doch auch gehen.
Wenn das Argument fehlt, wird es via PHP generiert. Hat das schon jemand versucht ?
Für weitere Tips wäre ich dankbar.
Grüße,
Ralph
wsod
am 12.11.2009 - 07:53 Uhr
Ich habe die Funktion angepasst und in die template.php reingeschmissen.
Und dann ging nichts mehr. ... WSOD
Das wäre für mich ein Grund, mal im error-log von PHP nach sicherlich dort gelisteten Fehlermeldungen zu schauen.
Hast Du die Funktion 1:1 übernommen oder die in Grossbuchstaben geschriebenen Begriffe durch die entsprechenden Namen Deines Themes, Views bzw. Displays ersetzt?
Stefan
--
sei nett zu Deinem Themer
Ich habe die Funktion
am 12.11.2009 - 11:09 Uhr
Ich habe die Funktion angepasst.
THEMENAME_preprocess_views_view__VIEWNAME__DISPLAYNAME
THEMENAME = names des verwendeten themes (i.e. Garland,etc.)
VIEWNAME = name der View (i.e. alle_artikel_user_xy)
DISPLAYNAME = welches display soll angesprochen werden (i.e. page_1)
<?php
function garland_preprocess_views_view__alle_artikel_user_xy__page_1(&$vars) {
drupal_set_message('<pre>Ich funktioniere wie ich soll....'</pre>');
}
?>
Ich habe den Code auch mal verkürzt, siehe oben.
Nach meinem Verständniss sollte beim Aufruf der View, die Message angezeigt werden.
Ist aber leider nicht so.
Nicht wirklich hilfreich was im errorlog steht....
PHP Parse error: syntax error, unexpected '/' in /data/web/domain.de/htdoc/sites/all/themes/THEMENAME/template.php on line 175
Ich teste weiter....
Grüße,
Ralph
php
am 12.11.2009 - 11:21 Uhr
drupal_set_message('Ich funktioniere wie ich soll....'');
Das kann so auch nicht funktionieren.
<?php drupal_set_message('<pre>Ich funktioniere wie ich soll....</pre>'); ?>
Stefan
--
sei nett zu Deinem Themer
Ich bin grundsätzlich immer
am 12.11.2009 - 12:51 Uhr
Ich bin grundsätzlich immer nett zu meinem Themer.....
aber woran liegt es nun, was ist falsch ???? Ich verstehe.. (Set a message which reflects the status of the performed operation.)
Dann wird es nicht funktionieren.....
Kurzer Hinweis ? Zuviele Bäume im Wald!
Der einfachste Weg zu sehen ob sie Funktion auch ausgeführt wird sollte doch das sein:
<?php
function garland_preprocess_views_view__alle_artikel_user_xy__page_1(&$vars) {
$vars['title'] = 'test';
}
?>
Ergebniss, der Titel ändert sich nicht.
Grüße,
Ralph
Template?
am 12.11.2009 - 13:02 Uhr
Hast Du für dieses Display auch ein Template? Also views-view--alle-artikel-user-xy--page-1.tpl.php?
Und vielleicht solltest Du auch mal den theme-Cache leeren.
Stefan
--
sei nett zu Deinem Themer
views-view--alle-artikel-user
am 12.11.2009 - 14:50 Uhr
views-view--alle-artikel-user-xy--page-1.tpl.php
liegt in
sites/all/modules/views/theme
<?php
function garland_preprocess_views_view__alle_artikel_user_xy__page_1(&$vars) {
$vars['title'] = 'test';
}
?>
habe ich die die template.php eingefügt.
Cache gelehrt
Nixx passiert....leider
Ralph
Müsste das Template nicht
am 12.11.2009 - 15:24 Uhr
Müsste das Template nicht in deinem Theme-Ordner liegen?
Guter Hinweis! Hat aber
am 12.11.2009 - 21:27 Uhr
Guter Hinweis!
Hat aber leider nichts geändert.
Ich hab das views-view--....tpl.php template in das Themeverzeichnis gelegt, wie gesagt - nixx.
Grüße,
Ralph
Hast du den Cache
am 13.11.2009 - 08:28 Uhr
Hast du den Cache geleert?
---
Viele Grüße,
Kars-T
Spät aber doch! Ich habe
am 16.11.2009 - 23:19 Uhr
Spät aber doch! Ich habe einen Weg gefunden...
Dieser Post http://www.appnovation.com/over-riding-views-2-queries-drupal hat mir dabei geholfen.
Alles nochmal haarklein zum mitschreiben. Selbst damit hab ich es nicht zum laufen gebracht.
Ein Kommentar zu dem o.g. Post hat die Lösung gebracht.
Im View Template (via drupal_set_title), und alles ist wie es sein soll.
Nicht so elegant, aber läuft. Ich werde es aber weiter versuchen über preprocess zu erledigen.
Vorschläge immer willkommen.
Ahh zum Cache, den(die) habe ich bis zum erbrechen geleert.
Grüße,
Ralph