[gelöst] Bildgrößen-Ausnahme für einzelnen Node
Eingetragen von drcho (72)
am 09.08.2011 - 14:23 Uhr in
am 09.08.2011 - 14:23 Uhr in
habe folgendes Problem und suche bereits seit einer Stunde nach einer Lösung:
Ich habe ein Feld "Bild" für einfache Seiten eingefügt. Dieses Bild wird standardmäßig auf die Bildgröße "medium" skaliert. Nur auf einer einzigen Seite soll das Bild auf "large" skaliert werden.
Einen neuen Content Type einzusetzen halte ich für übertrieben, und daher wollte ich das Problem über theme_field__field_image() lösen, doch hier habe ich keinen Zugriff auf die nid des Nodes, so dass ich keine If-Abfrage setzen kann.
Hat jemand andere Ideen oder Lösungswege hierzu? Über Tipps freue ich mich sehr.
Viele Grüße, Michael
- Anmelden oder Registrieren um Kommentare zu schreiben
Vielleicht kann man da im
am 09.08.2011 - 14:26 Uhr
Vielleicht kann man da im node-Template die Bildgröße überschreiben.
klappt leider nicht, das hat
am 09.08.2011 - 14:42 Uhr
klappt leider nicht, das hat keine Wirkung. Ich hatte es auch schon über theme_preprocess_node() versucht:
<?php
function mytheme_preprocess_node(&$variables)
{
$variables['elements']['field_image'][0]['#image_style'] = "large";
...
?>
So scheint das nicht zu klappen. Warum weiß ich auch nicht, vielleicht etwas mit Caching. Ich vermute, die Einstellung wird bereits vorher festgelegt, und in der node.tpl.php oder theme_preprocess_node() erhält man nur noch Zugang zu den Infos, wobei eine Änderung leider nichts bewirkt.
Eigentlich geht es darum,
am 10.08.2011 - 11:50 Uhr
Eigentlich geht es darum, dass ich von eine Field-Funktion wie theme_field() Zugriff auf den Node erhalte, was doch eigentlich nicht so schwer sein sollte. Oder eben von einer Node-Funktion wie template_preprocess_node() Zugriff auf den image_style des Fields...
Wirklich nicht einfach, sich in diesem Drupal-Code-Urwald zurecht zu finden :-)
Hier die Lösung:Ich habe ein
am 11.08.2011 - 15:32 Uhr
Hier die Lösung:
Einfach ein neues Modul erstellen mit folgendem Code:
<?php
function mymodule_node_view($node) {
if ($node->nid == $my_nid) {
global $language;
$node->content['field_image'] = array(
'#markup' => theme('image_style', array('style_name' => 'large', 'path' => $node->field_image[$language->language][0]['uri'], 'alt' => 'alt text'))
);
}
}
?>
MfG, Michael