Headerbild - Block mit Referenz auf Feld von Node

am 20.10.2011 - 16:33 Uhr in
Hallo Forum,
das ist mein erster Eintrag hier.
Also zu meiner Problematik bzw. Lösungssuche:
Folgendenes soll erreicht werden:
Auf jeder "ContentPage" (spezifischer Inhaltstyp) soll ein Grafischer Header in Form von einem Bild eingesetzt werden. Dieses Bild erscheint bei jeder Page im Head der Seite... ergo nicht innerhalb des "Nodes" sondern ausserhalb. Wenn innerhalb des ContentTypes kein Bild definiert wurde, soll ein "Default one" verwendet werden.
soweit so gut... Man kennt das oft ... Pages mit eigenem Header
Mein Ansatz:
- Ich erstelle einen Contenttypen "Seite mit Header".
- Diesem gebe ich ein Feld "HeaderBild" vom Typ Bild
- Ich erstelle einen Block mit Custom php code, welcher den aktuellen Node abfragt und ob das Feld "HeaderBild" gefüllt ist
- und gebe das Bild aus
Ist das so machbar oder würdet Ihr es anders machen?
Gibt es vielleicht ein Modul welchen hier ansetzt?
Und am wichtigsten wie refrenziere ich aus einem Block heraus auf den aktuellen Node und seinen FieldContent... ?
Bin wirklich superdankbar für jede Hilfe... bin erst seit kurzem bei Drupal... vorher Redaxo und eigenes Framework
Vielen Dank Jungs!
- Anmelden oder Registrieren um Kommentare zu schreiben
hi mogiolive der weg mit dem
am 20.10.2011 - 19:55 Uhr
hi mogiolive
der weg mit dem 'extra' bild in dem node ist schon mit der einfachste.
Dieses Bild erscheint bei jeder Page im Head der Seite... ergo nicht innerhalb des "Nodes" sondern ausserhalb.
das ist nicht (ganz) richtig. du kannst das zb so machen das du einen header hast der
zb nur auf der startseite angezeigt wird.
ansonsten, wenn eben ein node angezeigt wird, wird das noder header bild eben oben angezeigt.
ich hoffe das war einigermassen verständlich :)
besten gruss
stef
Danke Stef
am 25.10.2011 - 10:14 Uhr
Hab mir mein eigenes Modul jetzt geschrieben, welches innerhalb eines Blocks das bild anzeigt... im bezug auf den contenttype... und auf dessen Image Field:
function header_bild_block_view($delta = '') {
switch($delta){
case 'header_bild':
$block['subject'] = t(' ');
if(user_access('access content')){
//Retrieve and process data here
$allowed_node_typs = array('einfache_seite_mit_header');
//checks if arg 0 == node
if (arg(0) == 'node' && is_numeric(arg(1))) {
$nid = arg(1);
$node = node_load($nid);
$type = $node->type;
$path_this_module = "/" . drupal_get_path('module', 'header_bild') . "/";
//checks if node_type is page_with_header
if(in_array($type, $allowed_node_typs)){
//$block['content'] = '<div style="background:url()"></div>';
//$block['content'] = print_r($node);
$items = field_get_items('node', $node, 'field_header_img');
$img_url = $items[0]['uri'];
$img_url = str_replace("public://", "/", $img_url);
$img_url = '/' . variable_get('file_public_path', conf_path()) . '/files' . $img_url;
$block['content'] = '<div class="imgfile" style="background-image:url('.$img_url.')"></div>';
}else{
//echo default image
}
}
}
}
return $block;
}
Das war eigentlich genau das was ich wollte... egal ;) trotzdem danke für dein Post
Gruss
Moritz
geht auch mit Views.
am 04.11.2011 - 14:10 Uhr
ich habe mir mit Views mehrere Blöcke mit verschiedenen Bildern angelegt. Diese Blöcke habe ich allesamt im Header abgelegt.
Dann habe ich mir mit CCK ein Feld erzeugt. Darin habe ich als Auswahl eine Reihe von Blocknamen hinterlegt.
Ich wähle also bei der Erstellung eines Artikels, Seite, Bildes dann aus welchen Block mit welchem Bild ich haben möchte.
Wenn nun der Artikel aufgerufen wird, dann wird dieses Feld abgefragt. Der entsprechende Block mit dem entsprechenden Bild im Header wird dann angezeigt und alle anderen bleiben ausgeblendet.
Der Vorteil ist, dass Du nicht nur von den einzelnen Inhaltstypen abhängig bist sondern sogar für jede einzelne Node ein Bild definieren kannst.
Wenn Du das nicht willst, dann fragst Du in Views halt einfach den Nodetyp ab und nutzt diesen für die Sichtbarkeit des Blocks.
Das Ergebniss kannst Du Dir dann unter http://www.steffen-klausing.de/content5/dp2/ anschauen. Je nachdem welchen Beitrag Du auswählst wird dann das entsprechende Headerbild angezeigt.
übrigens das header image
am 07.11.2011 - 11:36 Uhr
übrigens das header image modul ist auch ne nette möglichkeit
wobei ich das beim nächsten projekt falls mehrere bilder benutzt werden wohl auch anders lösen werde, aber mal schaun
wollte den link hier nur der vollständigkeit halber ergänzen ;)
lg