Custom Pager anpassen
am 01.05.2013 - 20:23 Uhr in
Hallo,
ich habe im Netz etwas gefunden, das mir erlaubt, anstatt eines üblichen prev/next pagers, die vorherigen und nächsten Beiträge anhand von Thumbnails anzuzeigen. Funktioniert auch soweit, leider funktioniert es nur, wenn ich die Bilder per Thumbnail ausgeben lasse. Eigentlich kein Problem, aber ein .png Bild z.B. bei einer Größe von 400 x 250 ist genauso groß, wie das von Drupal erstellte Thumbnail von 181x101 (ca. 20kb). Das ist mir etwas zu groß, daher würde ich die Bilder gerne direkt in der Größe hochladen und einfach nicht einblenden, nur eben für den Pager nutzen. Leider finde ich nicht heraus, was ich tun muss, damit er den richtigen Pfad zur Original-Datei findet. Momentan sieht der Code so aus und funktioniert, aber nur wenn ich die Thumbnail Bilder nutze.
template.php
function prevnext_nav($nid) {
$result = db_query("SELECT i.image_size, f.filepath FROM {image} i INNER JOIN {files} f ON i.fid = f.fid WHERE i.nid = %d", $nid);
$images = array();
while ($file = db_fetch_object($result)) {
$images[$file->image_size] = file_create_path($file->filepath);
}
return '<img src="/'. $images['thumbnail'].'">';
}
custom-pager.tpl.php
<ul class="custom-pager custom-pager-<?php print $position; ?>">
<div id="icon-pager">
<li class="previous">
<?php
print '<div class="prev-icon" >'. l(prevnext_nav($nav_array['prev']), 'node/'. $nav_array['prev'], $options = array('html' => TRUE)) .'</div>';
print $previous; ?>
</li>
<li class="key"><?php print $key; ?></li>
<li class="next"><?php
print '<div class="next-icon" >'. l(prevnext_nav($nav_array['next']), 'node/'. $nav_array['next'], $options = array('html' => TRUE)) .'</div>';
print $next; ?></li>
</ul>
</div>
Wäre wirklich dankbar, wenn mir jemand sagen kann, wie ich ihn die Original Bilder ausgeben lassen kann.
Grüße
Andreas
- Anmelden oder Registrieren um Kommentare zu schreiben
Du muss den Teil <?phpreturn
am 03.05.2013 - 09:19 Uhr
Du muss den Teil
<?php
return '<img src="/'. $images['thumbnail'].'">';
?>
entsprechend ersetzen und dort einmal einen Debug-Output ausgeben damit Du weisst was alles an Daten geliefert wird. Des Weiteren könntest Du das Bild über Imagecache anpassen/verkleinern lassen, dann hätten die Bilder auch immer die gleiche Größe.
sense-design | online solutions | Do not hack core!
Drupalcenter Verhaltensregeln | Threads bitte auf [gelöst] stellen.
Danke für deine Antwort, ich
am 03.05.2013 - 10:45 Uhr
Danke für deine Antwort, ich habe mir das Devel Module geladen, aber leider weiss ich nicht, wie ich den Path des 'original' Bilds bekomme. Sobald ich ich 'thumbnail' ändere, erscheinen keine Bilder mehr. Das Image in der jeweiligen Node wird aber geladen, wie in meinem Snippet, das heißt ich muss irgendwie an den Path kommen, aber mit dem Debug-Output sehe ich auch nicht, wie ich die url definieren kann.
0.18
1
image_load
SELECT i.image_size, f.filepath FROM image i INNER JOIN files f ON i.fid = f.fid WHERE i.nid = 13
So holt er sich das Bild der eigentlichen Node.
Kannst du mir vielleicht sagen, was ich ersetzen muss, um ihn dann dir originalen Bilder ausgeben zu lassen? Imagecache setze ich extra nicht ein, da er die Bilder beim anpassen auch wieder vergrößert.
Mit folgendem Code bekommst
am 03.05.2013 - 10:54 Uhr
Mit folgendem Code bekommst Du den gesamten Output:
<?php
dpm($images);
?>
Mit dem Imagecache Modul kannst Du dann das Bild entsprechend verkleinern lassen (Preset musst Du dann anlegen)
<?php
return theme('imagecache', 'PRESETNAME', $images['ARRAYKEY']);
?>
PRESETNAME und ARRAYKEY musst Du entsprechend ersetzen
Die Weiteren Parameter von theme_imagecache findest Du hier:
http://drupalcontrib.org/api/drupal/contributions!imagecache!imagecache.module/function/theme_imagecache/6
sense-design | online solutions | Do not hack core!
Drupalcenter Verhaltensregeln | Threads bitte auf [gelöst] stellen.
Ich danke dir vielmals.
am 03.05.2013 - 13:29 Uhr
Ich danke dir vielmals.