Link mit Argument einfügen
Eingetragen von Junker (95)
am 15.08.2008 - 16:37 Uhr in
am 15.08.2008 - 16:37 Uhr in
Meine Seite:
Jeder User kann (über Inhaltstyp) Bilder einer Bildergalerie hinzufügen.
Habe einen View (mit Argument USERNAME) erstellt, welcher nur die Bilder des jeweiligen User anzeigt.
Quasi die Bildergalerie des Users
http://www.blablablabla.de/galerie/%
% = Username
Nun möchte ich im Profil jedes Users einen Link zu dessen Galerie haben.
Quasi so:
UserDDD's Galerie http://www.blablablabla.de/galerie/UserDDD
Dürfte nicht schwer sein... PHP is nur nicht so mein...
Wie müßte der Code aussehen, den ich in die Profile-template-datei einfügen müßte.
Danke
- Anmelden oder Registrieren um Kommentare zu schreiben
Hab mal auf "drupal.org"
am 15.08.2008 - 17:30 Uhr
Hab mal auf "drupal.org" gesucht. Das IMAGE Modul macht es so:
<?php
/**
* Implementation of hook_user.
*
* Adds a link to the user's recent image gallery to the user profile page
* similarly to blog and audio modules
*/
function image_user($type, &$edit, &$user) {
if ($type == 'view' && user_access('create images', $user)) {
$items['image'] = array('title' => t('Images'),
'value' => l(t('View @username\'s gallery', array('@username' => $user->name)), "image/recent/$user->uid", array('title' => t("View @username's latest images.", array('@username' => $user->name)))),
'class' => 'image',
);
return array(t('History') => $items);
}
}
?>
Allerdings ist für den hook_user ein Modul notwendig. Das geht nicht in template.php
Viele Grüße
Edmund
------
Drupal Migrationen, Modul- und Themeentwicklung, Drupal Hosting - http://www.katp.de
Drupal Migrationen, Modul- und Themeentwicklung - http://www.klapper.de
Kann damit recht wenig
am 15.08.2008 - 22:14 Uhr
Kann damit recht wenig anfangen :(
Kann doch nicht so schwer sein, wenn das Blog-Modul bereits etwas ähnliches im Profil verwendet.
"Zeige aktuelle Blogeinträge "
http://www.balfasdasdasd.de/blogs/UserDDDD
genau so halt...
Genau
am 16.08.2008 - 06:13 Uhr
Das Blog Modul macht es auch so:
<?php
/**
* Implementation of hook_user().
*/
function blog_user($type, &$edit, &$user) {
if ($type == 'view' && user_access('create blog entries', $user)) {
$user->content['summary']['blog'] = array(
'#type' => 'user_profile_item',
'#title' => t('Blog'),
'#value' => l(t('View recent blog entries'), "blog/$user->uid", array('attributes' => array('title' => t("Read @username's latest blog entries.", array('@username' => $user->name))))),
'#attributes' => array('class' => 'blog'),
);
}
}
?>
Es ist nicht schwer. Du musst halt nur ein Modul schreiben, dass es so macht.
(Oder ein Galerie Modul finden, dass es genau so macht, wie Du es brauchst. Es gibt ja einige ...)
Viele Grüße
Edmund
------
Drupal Migrationen, Modul- und Themeentwicklung, Drupal Hosting - http://www.katp.de
Drupal Migrationen, Modul- und Themeentwicklung - http://www.klapper.de
Denke, dass ich das so nicht
am 16.08.2008 - 09:38 Uhr
Denke, dass ich das so nicht hinbekommen werde. Will auch kein Galerie-Modul verwenden - habe ja schon einen View erstellt.
Hätte mir das so gedacht:
In die Profitemplate-Datei irgendwo folgenden PHP-Code dazwischenschrieben.
Wenn Profilinhaber bereits einen Inhaltstypen X(Galerie) erstellt hat,
dann PRINT "UserDDDD's Galerie:" + Link "http://www.blablablablabla.de/galerie/"+"[username]"
andernfalls PRINT "User DDD's hat noch keine Galerie-Bilder erstellt."
Diese Lösung klingt einfach - doch ich kann wie bereits gesagt kein PHP :(
Ich alter PHP-Noob habe mir
am 16.08.2008 - 12:52 Uhr
Ich alter PHP-Noob habe mir jetzt eine Lösung gebaut - bin auch sehr stolz auf mich :)
Habe folgenden Code in die user-profile.tpl.php eingebaut:
<div>
<?php print '<h4><a href="http://www.blabalblablabla.de/galerie/' . ($user->name) . '">' . ($user->name) . "'s " . 'Galerie</a></h4>'; ?>
</div>
Es erscheint dann folgender Linktext im Profil: z.B. "Junker's Galerie"
und verweist auf http://www.blalablablabla/galerie/Junker
Da das ein View mit Argument=User ist, kann ich in Views auch ohne PHP-Kenntnisse einstellen was angezeigt werden soll, wenn der User noch keine Galerie hat.
Einfache Lösung denke ich.
Vielleicht könnte man den Code noch in eine If-Schleife umschreiben, so dass der Link nur angezeigt wird, wenn der Profiluser bereits Beiträge eines Inhaltytypen X erstellt hat. Andernfall soll erscheinen: Der User hat noch keine Bilder"
Das ist zu schwer für mich.
Danke
__________________
Verdammt... stelle gerade fest, dass $user->name der eingeloggte User ist und nicht der Profiluser...
Welche Variable muss ich dort einfügen?
Also noch mal
am 16.08.2008 - 14:19 Uhr
Also noch mal korrigieren.
So muss der Code richtig aussehen, damit er auf den ProfilUsername zugreift.
<?php
$myuser=user_load(arg(1));
$username=$myuser->name;
print '<h4><a href="http://www.blablabla.de/galerie/' . ($myuser->name) . '">' . ($myuser->name) . "'s " . 'Galerie</a></h4>';
?>
Jetzt fehlt nur noch die IF-Schleife für den Inhaltstypen
<?php $myuser=user_load(arg(1
am 16.08.2008 - 14:27 Uhr
<?php
$myuser
=user_load(arg(1));
$username=$myuser->name;
// typ = xyz
// lädt nen node vom type xyz, mit dem author myuser, wenns nichts gibt dann kommt der link nicht
if (node_load(array('uid' => $myuser->uid, 'type' => 'xyz'))) {
print '<h4><a href="http://www.blablabla.de/galerie/' . ($myuser->name) . '">' . ($myuser->name) . "'s " . 'Galerie</a></h4>';
}
?>
--------------
Blog www.freeblogger.org: Deutscher IRC-Channel: irc.freenode.net #drupal.de ... Jabber-me: dwehner@im.calug.deXING
danke danke danke... ihr
am 16.08.2008 - 14:51 Uhr
danke danke danke... ihr seid die geilsten :)
Einfacher geht's mit dem
am 18.08.2008 - 13:24 Uhr
Einfacher geht's mit diesem Modul: http://drupal.org/project/me
--
bv - DrupalCenter.de