Usergalerie mit ImageCache, CCK, Views + Thickbox
Voraussetzungen
Quellen ( besonderen Dank an derBen ):
http://www.drupalcenter.de/node/7332
http://drupal.org/node/35728
http://theartlab.net/
Dieses Tutorial bezieht sich GENAU auf folgende Versionen.
Wollte erst das neueste ImageCache verwenden aber das braucht ImageAPI.
Diese wiederum mehr Speicher + PHP 5.1. Thickbox war auch nach Patchversuchen damit nicht kompatibel.
Na ja... da verliess mich die Lust.
Deshalb:
- Drupal 5.7
- Core Profile Module
- CCK 5.1.7
- Imagefield 5.x-1.2-rc1
- ImageCache 5.x-1.5
- Thickbox 5.x-1.2
- Views 5.x-1.6
- Views Bonus Pack 5.x-1.2-alpha2
Die Galerie und den View zu erstellen ist recht einfach. Um das ganze aber ins Profil zu integrieren,
muss ein eigenes User-Profil-Template erstellt werden. D.h. alle Felder, die man sehen möchte (Name, Vorname,
Benutzerbild, usw.) müssen per Hand entsprechend eingetragen werden...
Hilfe findet sich hier:
http://drupal.org/node/35730
1. Erstelle eine Galerie nach dieser Anleitung
theartlab.net/drupal-school-009-maintainable-gallery
[EDIT]
ist jetzt hier:
http://blip.tv/file/256997
[/EDIT]
Nun ein paar Bilder erstellen mit verschiedenen Usern.
Beim View für die Galerie noch unter Argument Benutzer: Benutzername ist der Autor hinzufügen.
Den Standard dafür auf Alle Werte anzeigen setzen.
In meinem Beispiel heisst die View "fotos". Sie stellt eine Seite + einen Block zur Verfügung.
Testen ob es klappt: http://www.meine.domain.de/view-url/username sollte nun schonmal nur noch die Bilders von XY anzeigen.
Nun bleibt noch die Frage, wie kommen die Fotos ins Profil?
2. Anpassen der template.php
Im Ordner deines themes ( sites/all/themes/xyz ) befindet sich die Datei template.php
Dort trägst du am Ende folgenden Code ein:
!! Achtung am Ende kein schließendes ?> !!
/**
* Catch the theme_user_profile function, and redirect through the template api
*/
function phptemplate_user_profile($user, $fields = array()) {
// Pass to phptemplate, including translating the parameters to an associative array. The element names are the names that the variables
// will be assigned within your template.
/* potential need for other code to extract field info */
return _phptemplate_callback('user_profile', array('user' => $user, 'fields' => $fields));
}
3. Die Datei user_profile.tpl.php erstellen
Mit dieser Datei überschreibst du das Standard-Profil und erstellst ein eigenes
Template. Alle gewünschten Profil-Felder musst du per Hand eintragen.
Um die Fotos im Profil anzuzeigen schreibst du folgendes in die Datei:
<h2>Fotos von <?php print $user->name ?></h2>
<div class="fields">
<?php
$view_name = 'fotos';
$view_args = array($user->name);
$view = views_get_view($view_name);
print views_build_view('block', $view, $view_args, FALSE, 8);
?>
</div>
Mit der Zahl am Ende wird die Anzahl der Bilder im Block festgelegt...
4. Alternative = PHP-Block
Es ist auch möglich sich einen PHP-Block zu erstellen.
Obwohl ich nun schon öfter gelesen habe PHP in Blöcken ist nicht gut - vielleicht kann das nochmal jemand erklären.
<?php global $user ?>
<h2>Fotos von <?php print $user->name ?></h2>
<div class="fields">
<?php
$view_name = 'fotos';
$view_args = array($user->name);
$view = views_get_view($view_name);
print views_build_view('block', $view, $view_args, FALSE, 2);
?>
</div>
Dieser lässt sich dann an beliebiger Stelle einblenden.
Falls man nicht das Core-Profile benutzt, muss an dieser Stelle nicht das "normale" user-Object geladen werden sondern das aus dem Profile.
Folgendes ist ungetestet...
<?php
global $user;
// fuer nodeprofile
$profileuser = user_load(array('uid' => $node->uid));
// fuer advanced profile
$profileuser = user_load(array('uid' => $account->uid));
?>
<h2>Fotos von <?php print $profileuser->name ?></h2>
<div class="fields">
<?php
$view_name = 'fotos';
$view_args = array($profileuser->uid);
$view = views_get_view($view_name);
print views_build_view('block', $view, $view_args, FALSE, 2);
?>
</div>
- Anmelden oder Registrieren um Kommentare zu schreiben
Integration der Galerie in Advanced Profile
am 27.05.2008 - 15:02 Uhr
Habe eine Lösung gefunden, die ich auch anderen nicht vorenthalten möchte: Man erstellt eine zusätzliche Ansicht, einziger Unterschied zum Handbuch ist, dass man statt "Benutzername ist der Autor" "UID ist der Autor" als Argument angibt. Dann erstellt man unter Panels - View Panes eine neue Pane mit dieser View. Auf der Panelseite kann man dann unter dem Tab Inhalt diese bei einem der Inhaltsfelder hinzufügen (einfach auf eins der Pluszeichen klicken) und die View Pane auswählen, alles speichern und schon hat jeder User eine Galerie im Advanced Profile, den Pane kann man nach eigenem Gusto konfigurieren, ich habe dort nur 1 item erlaubt, damit nicht das ganze Profil voller Thumbnails ist. Damit das ganze eine Überschrift hat, sollte man es als Block anzeigen lassen. Mich stört nur noch, dass die Funktion für den unbedarften User nicht zu erkennen ist, da man erst auf Inhalt erstellen - Image gehen muss, damit im Profil etwas erscheint.
hat jemand eine demo online?
am 09.09.2008 - 15:14 Uhr
hat jemand eine demo online?
ach ja und der link unter erstens funktioniert nicht mehr.
1. Erstelle eine Galerie nach dieser Anleitung
http://theartlab.net/drupal-school-009-maintainable-gallery
Sync schrieb hat jemand
am 02.01.2009 - 16:00 Uhr
hat jemand eine demo online?
http://volunity.net/fotos
__
http://aureli.us