Autoren-Bild in Node Title einfügen
Eingetragen von mimhakkuh (8)
am 28.09.2007 - 14:03 Uhr in
am 28.09.2007 - 14:03 Uhr in
Hi, ich benutze Drupal5.2 & Zen Theme und versuche, ähnlich der Gestaltung im Drupalcenter die Profilbilder (Usernode+Nodeprofile-Profile!) der Nutzer links vom Titel-Link der jeweiligen Nodes (nicht im 'posted by... '-Element abzubilden. Allerdings bin ich recht ratlos, wie das funktionieren soll. Ich nehme mal an, ich muss die Dateien node.tpl.php (.Title) und style.css entsprechend verbiegen. Wie würdet Ihr das angehen? Vielen Dank für Insprirationen schonmal im voraus ;) F.
- Anmelden oder Registrieren um Kommentare zu schreiben
posted by= Eintragen
am 28.09.2007 - 14:10 Uhr
posted by= Eintragen von(Drupalcenter)
Userpic müssteste bei der themes(Zen) einstellung mal schauen nach Benutzerbilder in Beiträgen bzw Benutzerbilder in Kommentaren!
Ich hoffe ich hab da richtig verstanden!
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.
folgenden Code zum Einsatz bringen
am 28.09.2007 - 14:25 Uhr
Im Node Template selbst bzw. dem Template, was die in Frage kommenden Nodes (Inhaltstyp) ausgibt, folgenden Code zum Einsatz bringen:
<?php
$node = node_load(arg(1));
$user = user_load(array('uid' => $node->uid));
?>
arg(1) wuerde bei der URL
http://example.com/node/47
die Node ID "47" sein und arg(0) "node".Dann kann man mit dem Objekt $user auf verschieden Dinge zugreifen um sie auszugeben. Bsp.
$user->name
$user->mail
$user->picture
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
Ich glaube ...
am 28.09.2007 - 14:35 Uhr
ich muss das genauer erklären:
Meine Profiles sind per Nodeprofile/Usernode erstellte Nodes. Die Avatare entsprechende Imagefields, die per CCK eingebunden sind. diese Bilder würde ich gerne (entsprechend kleiner), links vom Node-Titel 'drucken' lassen.
super!
am 28.09.2007 - 14:41 Uhr
quiptime: danke für das beispiel, so werd ich es versuchen :D
Aha, das ist aber nun etwas
am 28.09.2007 - 14:45 Uhr
Aha, das ist aber nun etwas anderes und da hift Dir logischer Weise mei Codesnipped nicht weiter.
Du solltest fuer den CCK Inhaltstypen ein Template erstellen koennen. Die Frage ist dann, wie spricht man das Image Feld an?
Wenn Du Contemplate laufen hast lass Dir mal den Templatecode des CCK Inhaltstyps anzeigen. Eventuell bekommst Du dort einen Hinweis auf das Image Feld.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.
Ja, schon bemerkt, da war
am 28.09.2007 - 16:54 Uhr
Ja, schon bemerkt, da war ich etwas vorschnell ;)
An Contemplate hab ich auch schon gedacht, da ich das ohnehin nutze, aber meines Wissens nach kann ich damit nur den 'Body' eines Content Typen formatieren, nicht aber den Titel?!
CCK stellt für mein Test am Teaser eines Event-C.Types zwar die Variable
<?php
print $node->picture
?>
Wenn ich den Node Profile-Content Typen die entsprechende Variable entnehme und im Teaser (an beliebiger Stelle) einbaue:
<?php
print $field_profile_user_image[0]['view']
?>
... wird die Variable nicht erkannt. Offenbar funktioniert sie nur im Content Typ Node Profile?
Template node-nodetype.tpl.php
am 28.09.2007 - 17:38 Uhr
Fuer die normale "node.tpl.php" kann man ein Template fuer einzelne Inhaltstypen erstellen.
Der Code der normalen "node.tpl.php":
<?php phptemplate_comment_wrapper(NULL, $node->type); ?>
<div id="node-<?php print $node->nid; ?>" class="node<?php if ($sticky) { print ' sticky'; } ?><?php if (!$status) { print ' node-unpublished'; } ?>">
<?php print $picture ?>
<?php if ($page == 0): ?>
<h2><a href="<?php print $node_url ?>" title="<?php print $title ?>"><?php print $title ?></a></h2>
<?php endif; ?>
<?php if ($submitted): ?>
<span class="submitted"><?php print t('!date — !username', array('!username' => theme('username', $node), '!date' => format_date($node->created))); ?></span>
<?php endif; ?>
<div class="content">
<?php print $content ?>
</div>
<div class="clear-block clear">
<div class="meta">
<?php if ($taxonomy): ?>
<div class="terms"><?php print $terms ?></div>
<?php endif;?>
</div>
<?php if ($links): ?>
<div class="links"><?php print $links; ?></div>
<?php endif; ?>
</div>
</div>
Die "node.tpl.php" ist das generische Template mit dem das Layout aller Nodes gesteuert wird.
Natürlich müssen nicht alle Nodes das gleiche Layout haben. Ein Node-Template für einen speziellen Node-Type zu gestalten ist sehr einfach.
Man erstellt einfach ein neues Node Template mit der Bezeichnung node-nodetype.tpl.php im Themeordner. Wobei nodetype dem Inhaltstyp entspricht fuer das man das Template erstellen will.
Dieser obige Code waere die Ausgangsbasis fuer das Node Template fuer den bestimmten Inhalhaltstyp. Und da kommt man an den Titel ran.
$node->picture ist das Bild des Userprofil (wenn aktiviert).
Andere Frage ist wie Du an die entsprechenden Variablen der Felder rankommst. Da habe ich gerade auf die Schnelle keinen Hinweis. Es sollte aber moeglich sein.
Da $node den gesamten Inhalt des Node praesentiert koennte man sich mit print_r($node) dem Nodefeld mit dem Image naehern.
Eventuell geht es gleich damit:
$node->field_my_image_field
Da glaube ich node->field_my_image_field ein Array ist mach erst mal das hier:
print_r($node->field_my_image_field)
Damit koennte als Beipiel folgendes rauskommen:
Array
(
[0] => Array
(
[fid] => 6
[title] => blabla.jpg
[alt] => blabla.jpg
[nid] => 2
[filename] => blabla.jpg
[filepath] => files/blabla.jpg
[filemime] => image/jpeg
[filesize] => 31179
)
)
Mit $node->field_my_image_field[0][filepath] haette man Zugriff auf das Bild:
<?php
print '<img src="' . {$node->field_image[0]['filepath']} . '">' . "\n";
?>
Das ist aber nur die simpelste Form um das Bild auszugeben. Drupal hat da auch eine Funktion. Mit der kann man easy das Bild ausgeben und die weiteren Parameter wie alt und CSS Klasse gleich mit uebergeben.
Das wuerde so aussehen:
<?php
theme_image($node->field_image[0]['filepath'], $alt = '', $title = '', $attributes = NULL, $getsize = TRUE);
?>
Hier noch die Funktion die dahintersteckt:
<?php
function theme_image($path, $alt = '', $title = '', $attributes = NULL, $getsize = TRUE) {
if (!$getsize || (is_file($path) && (list($width, $height, $type, $image_attributes) = @getimagesize($path)))) {
$attributes = drupal_attributes($attributes);
$url = (url($path) == $path) ? $path : (base_path() . $path);
return '<img src="'. check_url($url) .'" alt="'. check_plain($alt) .'" title="'. check_plain($title) .'" '. $image_attributes . $attributes .' />';
}
}
?>
Das kann man auch auf http://api.drupal.org/api/function/theme_image/5 nachlesen.
-------------
quiptime
Nur tote Fische schwimmen mit dem Strom.
Da geht noch was.