Beeinflussen wie Image Attach Bilder in Nodes einbaut
am 25.06.2008 - 21:27 Uhr in
Hallo,
ich benutze das Image Attach Modul um Bilder in Nodes einzufügen. Meine Frage dazu wäre nun, wie ich beeinflussen kann, wie das geschieht. In der Standardeinstellung fügt das Modul um das Bild immer noch einen Link und einen div-Container ein. Das passiert wenn das Node als Teaser angezeigt wird und wenn man es alleine betrachtet. Ich möchte das allerdings nicht, das Bild soll einfach nur als img-Element und nicht als Link und mit div-Container eingebunden werden. Ich habe schon überall gesucht, aber ich finde einfach nicht heraus, was ich machen bzw. welche Funktion ich überschreiben muss.
Ich hoffe auf Eure Hilfe
Viele Grüße Sciuorus
- Anmelden oder Registrieren um Kommentare zu schreiben

Das Modul bietet dafür die
am 26.06.2008 - 15:18 Uhr
Das Modul bietet dafür die Theme-Funktion @theme_img_assist_inline@, die kannst Du per template.php überscheiben.
--
bv - drupalcenter.de
Mit Image Attach
am 26.06.2008 - 20:33 Uhr
Wenn möglich würde ich gerne das Image Attach Modul verwenden. Ist das auch damit möglich, oder kann man nur Image Assist richtig themen?
Sorry, mein Fehler.
am 26.06.2008 - 20:47 Uhr
Sorry, mein Fehler. Funktioniert auch ähnlich mit Image Attach. Die beiden Funktionen sehen so aus:
<?php
/**
* Theme the teaser.
*
* Override this in template.php to include a case statement if you want different node types to appear differently.
* If you have additional image sizes you defined in image.module, you can use them by theming this function as well.
*/
function theme_image_attach_teaser($node) {
$img_size = variable_get('image_attach_size_teaser_'. $node->type, 'thumbnail');
if ($img_size != IMAGE_ATTACH_HIDDEN) {
drupal_add_css(drupal_get_path('module', 'image_attach') .'/image_attach.css');
$image = node_load($node->iid);
$info = image_get_info(file_create_path($image->images[$img_size]));
$output = '<div style="width: '. $info['width'] .'px" class="image-attach-teaser">';
$output .= l(image_display($image, $img_size), "node/$node->nid", array(), NULL, NULL, FALSE, TRUE);
$output .= '</div>'."\n";
return $output;
}
}
/**
* Theme the body
*/
function theme_image_attach_body($node) {
$img_size = variable_get('image_attach_size_body_'. $node->type, 'thumbnail');
if ($img_size != IMAGE_ATTACH_HIDDEN) {
drupal_add_css(drupal_get_path('module', 'image_attach') .'/image_attach.css');
$image = node_load($node->iid);
$info = image_get_info(file_create_path($image->images[$img_size]));
$output = '<div style="width: '. $info['width'] .'px" class="image-attach-body">';
$output .= l(image_display($image, $img_size), "node/$node->iid", array(), NULL, NULL, FALSE, TRUE);
$output .= '</div>'."\n";
return $output;
}
}
?>
--
bv - drupalcenter.de
Danke
am 26.06.2008 - 20:49 Uhr
Danke, ich werde das jetzt gleich mal ausprobieren...
Klappt nicht
am 26.06.2008 - 21:31 Uhr
Irgendwie krieg ich das immer noch nicht auf die Reihe. Ich hab jetzt die Funktion in meine template.php eingebunden und statt
theme_image_attach_...den Funktionsnamenphptemplate_image_attach_...eingefügt. Aber egal was ich am Code der Funktion ändere, es hat keinerlei Auswirkungen. Muss ich etwas besonderes beachten, wenn ich Funktionen von nicht mit Drupal mitgelieferten Modulen überschreiben will oder habe ich etwas falsch gemacht?Mein Fehler
am 26.06.2008 - 21:42 Uhr
OK, scheint am nicht geleerten Cache gelegen zu haben...
Ergänzung
am 26.06.2008 - 23:17 Uhr
Falls jemand nochmal das gleiche Problem hat: Um die Links wegzubekommen muss man neben den beiden oben genannten Funktionen zusätzlich noch die Funktion
theme_image_displayüberschreiben. Damit hab ich alles hingekriegt. Danke nochmal an bv!